Utilizzo di Parboiled per generare un AST (Java)


Ho creato un PEG utilizzando la libreria Parboiled per Java.
L'ho basato su questo esempio.

Funziona bene, ma ora ho bisogno di creare effettivamente l'AST.

La mia domanda è come faccio a farlo usando la libreria?

Dopo aver guardato in giro su Google per un po ' e guardando gli esempi su Github, vedo che hai intenzione di usare push, pop, swap, ecc. per creare l'AST ma ho difficoltà a capire come farlo con il mio parser. Mio parser è abbastanza simile a quello Java che se puoi aiutarmi a capire come funzionerebbe per quello Java, potrei adattarlo al mio.

Author: Tanmay Patil, 2014-05-04

1 answers

Fondamentalmente il parser PEG mantiene uno stack con valori, puoi spingere e pop valori mentre stai corrispondendo all'input. Spingerai i valori (nodi AST) nello stack e al termine dell'analisi otterrai il nodo radice del tuo AST dal parser.

Verifica https://github.com/sirthias/parboiled/blob/master/examples-java/src/main/java/org/parboiled/examples/calculators/CalculatorParser4.java ad esempio come usare push e pop .

Controlla anche (abbastanza bello!) documentazione di Progetto Parboiled. Ecco una parte specifica per la creazione di AST https://github.com/sirthias/parboiled/wiki/Working-with-the-Value-Stack

 1
Author: Tibor Blenessy, 2014-09-09 15:36:08