notazione {e} nel membro destro di una produzione significa che l’espressione e
può comparire zero o più volte.
Le parentesi tonde possono essere utilizzate per raggruppare:
per esempio, (a | b) [c] `e diverso da a | (b [c]), che `e uguale a a | b [c].
3.4 Tools per lo sviluppo di interpreti e compilatori(lex,yacc,antlr)
In informatica, il parsing o analisi sintattica è il processo atto ad analizzare uno
stream continuo in input in modo da determinare la sua struttura grammaticale
grazie ad una data grammatica formale. Un parser è un programma che esegue
questo compito.
Di solito i parser non sono scritti a mano ma generati attraverso dei generatori
di parser(lex,yacc,antlr).
Tipicamente, il termine italiano viene utilizzato per riferirsi al riconoscimento di
una grammatica e alla conseguente costruzione di un albero sintattico, che
mostra le regole utilizzate durante il riconoscimento dell'input; l'albero
sintattico viene poi visitato(anche più volte) durante l'esecuzione di
un'interprete o di un compilatore. Nella maggior parte dei linguaggi, tuttavia,
l'analisi sintattica opera su una sequenza di token in cui l'analizzatore lessicale
spezzetta l'input. Pertanto, il termine inglese spesso viene usato per indicare
l'insieme della analisi lessicale e della analisi sintattica vera e propria.
Il lavoro del parser è essenzialmente quello di determinare se e come l'input può
essere derivato dal simbolo iniziale con le regole della grammatica formale.
Questo può essere fatto essenzialmente in due modi:
●
Analisi top-down: Un parser può partire con il simbolo iniziale e cercare
di trasformarlo nell'input. Intuitivamente, il parser parte dal più grande
elemento e lo divide in parti sempre più piccole. I parser LL sono
55