This is an old revision of the document!


Laborator 5

Scrieți în jison o gramatică (lexer + parser) care generează un arbore AST pentru o expresie matematică cu + și -:

expresie: numar termen;
termen: '+' numar termen | '-' numar termen |;
numar: [0-9]+;

Spre exemplu, pentru expresia 1+3, AST-ul arată astfel:

{"r":"expresie","l":[{"r":"numar","l":["1"]},{"r":"termen","l":["+",{"r":"numar","l":["3"]},null]}]}

Pentru expresia 1+3+4, arată așa:

{"r":"expresie","l":[{"r":"numar","l":["1"]},{"r":"termen","l":["+",{"r":"numar","l":["3"]},{"r":"termen","l":["+",{"r":"numar","l":["4"]},null]}]}]}

Practic, în funcție de tipul fiecărui nod, vom returna în parserul din jison ceva de genul:

{r:'expresie', l:[$numar,$termen]}
{r:'termen', l:['+',$numar,$termen]}
{r:'termen', l:['-',$numar,$termen]}
{r:'numar', l:[$numar]}
cpl-atm/laboratoare/laborator5.1.1384516197.txt.gz · Last modified: 2013/11/15 13:49 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