Pregunta

Estoy trabajando en un proyecto de diseño de compilador en Java. El análisis léxico se realiza (usando jflex) y me pregunto qué herramienta similar a yacc sería la mejor (la más eficiente, la más fácil de usar, etc.) para hacer un análisis sintáctico y por qué.

¿Fue útil?

Solución

Si desea específicamente un comportamiento similar a YACC (controlado por tablas), el único que conozco es TAZA .

En el mundo Java, parece que más personas se inclinan hacia analizadores de descenso recursivo como ANTLR o JavaCC .

Y la eficiencia rara vez es una razón para elegir un generador de analizador.

Otros consejos

En el pasado, he usado ANLTR tanto para lexer como para parser, y la página de inicio de JFlex dice que puede interactuar con ANTLR. No diría que la documentación en línea de ANTLR es tan genial. Terminé invirtiendo en 'La referencia ANTLR definitiva' , que ayudó considerablemente.

GNU Bison tiene una interfaz Java,

http://www.gnu.org /software/bison/manual/html_node/Java-Bison-Interface.html

Puedes usarlo para generar código Java.

También hay jacc.

Jacc está lo más cerca posible de yacc, pero se implementa en Java puro y genera un analizador Java.

Se interconecta bien con jFlex

http://web.cecs.pdx.edu/~mpj/jacc/

Otra opción sería GOLD Parser .

A diferencia de muchas de las alternativas, el analizador GOLD genera las tablas de análisis a partir de la gramática y las coloca en un archivo binario no ejecutable. Cada idioma admitido tiene un motor que lee las tablas binarias y analiza su archivo fuente.

No he usado específicamente la implementación de Java, pero he usado el motor Delphi con resultados bastante buenos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top