Domanda

Voglio scrivere un parser-generatore per scopi educativi, e chiedevo se ci sono alcune belle risorse online o tutorial che spiegano come scrivere uno. Qualcosa sulla falsariga di "Costruiamo un compilatore" di Jack Crenshaw.

Voglio scrivere il generatore di parser per LR (1) la grammatica.

Ho una conoscenza discreta della teoria che sta dietro la generazione dei tavoli di azione e Goto, ma voglio un po 'di risorse che mi aiuterà con la sua attuazione.

lingue preferite sono C / C ++, Java sebbene anche altre lingue sono OK.

Grazie.

È stato utile?

Soluzione

Sono d'accordo con gli altri, il libro Dragon è buona base per l'analisi LR.

Se siete interessati a parser discesa ricorsiva, un'esperienza di apprendimento enormemente divertente è questo sito, che ti guida attraverso la costruzione di un sistema di compilatore completamente autonomo che può compilare se stesso e altre lingue:

MetaII Compiler tutorial

Questo è tutto basato su un po 'sorprendente di 10 pagine documento tecnico da Val Schorre: META II: una sintassi orientata compilatore Scrittura Lingua da onesto-a-dio 1964. Ho imparato come costruire compilatori di questa nel 1970. C'è un momento strabiliante quando finalmente Grok come il compilatore può rigenerarsi ....

So che il sito web dell'autore dai tempi del college, ma non hanno nulla a che fare con il sito web.

Altri suggerimenti

Se si voleva andare via pitone mi sento di raccomandare il seguente.

ho trovato entrambe queste ad essere estremamente utile e Paul McGuire autore di pyparsing è super a voi dare una mano quando si esegue in problemi. Il Text Processing libro in Python è solo un riferimento utile per avere a portata di mano e ti aiuta a entrare nel giusto stato d'animo quando si tenta di costruire un parser.

Vorrei anche sottolineare che un linguaggio OO è più adatto come un motore di parsing lingua perché è estensibile e il polimorfismo è il modo giusto per farlo (IMHO). Guardando il problema in termini di una macchina a stati, piuttosto che "Cercare un punto e virgola alla fine di xyz" dimostrerà che il parser diventa molto più robusto alla fine.

Speranza che aiuta!

Non proprio in linea, ma il Drago libro ha abbastanza elaborato discussioni di LR parsing.

ho trovato più facile per imparare a scrivere parser ricorsivo-discesa prima di imparare a scrivere parser LR. Beh ad essere onesti, dopo molti anni di scrittura parser, non ho mai ritenuto necessario scrivere un parser LR.

Recentemente ho scritto un tutorial a CodeProject chiamato Implementare strumenti di programmazione di lingua in C # 4.0 che descrive le tecniche di discesa di analisi ricorsiva.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top