Ho iniziato a studiare ANTLR e ad avere sia il libro del 2007 "The Definitive ANTLR Reference" che ANTLRWorks (uno strumento interattivo per la creazione di grammatiche). E, essendo quel tipo di persona, ho iniziato al capitolo 3. ("Un giro veloce per gli impazienti").Iniziare con ANTLR ed evitare errori comuni
È un processo abbastanza doloroso, soprattutto perché alcuni errori sono piuttosto impenetrabili (ad esempio, ANTLR: "missing attribute access on rule scope" problem che significa solo per me "hai qualcosa di sbagliato"). Inoltre ho alcune grammatiche molto semplici (solo 3-4 produzioni) e semplici input (2 righe) che quando vengono eseguite danno l'errore "OutOfMemory".
Il sito ANTLR è utile ma in qualche modo frammentato e alcuni utenti SO hanno commentato (https://stackoverflow.com/questions/278480/good-tutorial-for-antlr) che il libro e le esercitazioni prevedono un livello di ingresso elevato. Sono stato riluttante ad approcciare l'elenco di discussione ANTLR per questo motivo.
LATER Stiamo iniziando a fare i conti con esso. Sarebbe utile avere esempi semplici e affidabili che potrebbero essere gentilmente espansi. Vale certamente la pena imparare come abbiamo rimodellato un bel po 'del nostro pensiero basato su ANTLR.
Un problema è che ANTLR V3 presenta modifiche significative rispetto a V2. Una risposta su SO (e sulle pagine ANTLR) faceva riferimento a una sintassi V2 che non è più disponibile.
Alcune delle domande ANTLR su SO mi hanno aiutato molto, ma trovarle è un po 'ad hoc. Quindi mi piacerebbe sapere come gli utenti SO possono aiutare a rendere meno doloroso il processo di apprendimento. (Se si fa riferimento al libro di riferimento, sarebbe utile indicare pagine particolari).
MODIFICA. @duffymo e @JamesAnderson hanno confermato che ANTLR è un lavoro duro, soprattutto perché i parser sono difficili. (FWIW ho passato a LEX/YACC, ecc. E non c'è dubbio che ANTLR sia più potente e più facile da usare.) Penso che sarebbe comunque utile avere aree in cui è possibile evitare di fare il fouling:
- assicurare la corretta capitalizzazione dei nomi delle variabili
- nome del pacchetto aggiuntivo per lexer e parser
- prendersi cura su ordine delle regole, poiché colpisce la precedenza
e più di questo genere sarebbe utile.
Per quanto non espressamente su ANTLR, Ter ha scritto un libro in seguito chiamato linguaggio modelli di attuazione. È un * eccellente * lavoro con rilevanza sia per i principianti che per i veterinari. I | MVHO è un must assoluto per chiunque lavori sul parsing. –