Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl-atm:laboratoare:laborator5.1 [2013/11/15 12:58]
laura.vasilescu
cpl-atm:laboratoare:laborator5.1 [2013/11/15 13:58] (current)
laura.vasilescu
Line 10: Line 10:
  
 Spre exemplu, pentru expresia ''​1+3'',​ AST-ul arată astfel: Spre exemplu, pentru expresia ''​1+3'',​ AST-ul arată astfel:
 +<​code>​
 +{"​r":"​expresie","​l":​[{"​r":"​numar","​l":​["​1"​]},​{"​r":"​termen","​l":​["​+",​{"​r":"​numar","​l":​["​3"​]},​null]}]}
 +</​code>​
 +
 +Pentru expresia ''​1+3+4'',​ arată așa:
 +<​code>​
 +{"​r":"​expresie","​l":​[{"​r":"​numar","​l":​["​1"​]},​{"​r":"​termen","​l":​["​+",​{"​r":"​numar","​l":​["​3"​]},​{"​r":"​termen","​l":​["​+",​{"​r":"​numar","​l":​["​4"​]},​null]}]}]}
 +</​code>​
 +
 +Practic, în funcție de tipul fiecărui nod, vom returna în parserul din ''​jison''​ ceva de genul:
 +<​code>​
 +{r:'​expresie',​ l:​[$numar,​$termen]}
 +{r:'​termen',​ l:​['​+',​$numar,​$termen]}
 +{r:'​termen',​ l:​['​-',​$numar,​$termen]}
 +{r:'​numar',​ l:[$numar]}
 +</​code>​
 +
 +Prelucrați arborele AST și realizați adnotări de calcule intermediare pentru a evalua expresia.
 +
 +<​note>​
 +<​code>​
 +var file=require('​./​jison.js'​).parser;​
 +var tree=file.parse("​1+3+4"​);​
 +console.log(JSON.stringify(tree,​null,​ 4));
 +</​code>​
 +</​note>​
 +
 +Pentru expresia ''​1+3''​ ar trebui să arate de forma:
 +<​code>​
 +{
 +    "​r":​ "​expresie",​
 +    "​l":​ [
 +        {
 +            "​r":​ "​numar",​
 +            "​l":​ [
 +                "​1"​
 +            ],
 +            "​valoare":​ 1
 +        },
 +        {
 +            "​r":​ "​termen",​
 +            "​l":​ [
 +                "​+",​
 +                {
 +                    "​r":​ "​numar",​
 +                    "​l":​ [
 +                        "​3"​
 +                    ],
 +                    "​valoare":​ 3
 +                },
 +                null
 +            ],
 +            "​valoare":​ 3
 +        }
 +    ],
 +    "​valoare":​ 4
 +}
 +</​code>​
 +
 +Pentru expresia ''​1+3+4'':​
 +<​code>​
 +{
 +    "​r":​ "​expresie",​
 +    "​l":​ [
 +        {
 +            "​r":​ "​numar",​
 +            "​l":​ [
 +                "​1"​
 +            ],
 +            "​valoare":​ 1
 +        },
 +        {
 +            "​r":​ "​termen",​
 +            "​l":​ [
 +                "​+",​
 +                {
 +                    "​r":​ "​numar",​
 +                    "​l":​ [
 +                        "​3"​
 +                    ],
 +                    "​valoare":​ 3
 +                },
 +                {
 +                    "​r":​ "​termen",​
 +                    "​l":​ [
 +                        "​+",​
 +                        {
 +                            "​r":​ "​numar",​
 +                            "​l":​ [
 +                                "​4"​
 +                            ],
 +                            "​valoare":​ 4
 +                        },
 +                        null
 +                    ],
 +                    "​valoare":​ 4
 +                }
 +            ],
 +            "​valoare":​ 7
 +        }
 +    ],
 +    "​valoare":​ 8
 +}
 +
 +</​code>​
cpl-atm/laboratoare/laborator5.1.1384513135.txt.gz · Last modified: 2013/11/15 12:58 by laura.vasilescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0