Folositi jison pentru a realiza un calculator.
Gramatica trebuie să fie următoarea:
exp -> exp operator exp | numar
Modificați astfel încât să generați ca output un arbore.
Pentru a stabili ordinea priorităților ('a' înainte de 'b') puteți să folosiți ceva similar:
%left 'a' %left 'b'
Astfel, pentru un input de genul: “c b c a d b d”, arborele generat ar fi ”(a (b c c) (b d d)”
$$
reprezintă ce întoarce o regulă de parser. $i
reprezintă al i-lea token din regulă pe care se face match (indexare de la 1).
Un arbore se creează în felul următor:
Arbore = {root: 'radacina', l: 'st', r: 'dr'}
, unde root
, l
, r
reprezintă etichetele nodurilor, iar ce este după :
reprezintă valoarea acestora.