This shows you the differences between two versions of the page.
cpl-atm:laboratoare:laborator5.1 [2013/11/15 13:49] laura.vasilescu |
cpl-atm:laboratoare:laborator5.1 [2013/11/15 13:58] (current) laura.vasilescu |
||
---|---|---|---|
Line 21: | Line 21: | ||
Practic, în funcție de tipul fiecărui nod, vom returna în parserul din ''jison'' ceva de genul: | Practic, în funcție de tipul fiecărui nod, vom returna în parserul din ''jison'' ceva de genul: | ||
<code> | <code> | ||
- | {r:'expresie', l:$numar,$termen]} | + | {r:'expresie', l:[$numar,$termen]} |
{r:'termen', l:['+',$numar,$termen]} | {r:'termen', l:['+',$numar,$termen]} | ||
{r:'termen', l:['-',$numar,$termen]} | {r:'termen', l:['-',$numar,$termen]} | ||
{r:'numar', l:[$numar]} | {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> | </code> |