Tesi Robotica V+ Sim: Interprete Command Language e... | Page 56

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