tutorial español java antlr

java - español - antlr tutorial



¿Cómo especificar un paquete objetivo para ANTLR? (2)

Si llamo:

java org.antlr.Tool -o outdir sources/com/example/Java5.g

... con antlr-3.1.3, el código analizador y el código lexer se generarán en el directorio outdir/sources/com/example . Pero las clases generadas no tienen ninguna declaración de package . Los necesito para la vida en el paquete com.example .

¿Hay alguna manera de especificar el paquete objetivo?


ANTLR proporciona una herramienta de encabezado que le permite incluir paquetes e importaciones. Usted incluye esto en su archivo de gramática * .g:

@header { package org.xmlcml.cml.converters.antlr; import java.util.HashMap; }

Y también puede necesitarlo en el Lexer:

@lexer::header {package org.xmlcml.cml.converters.antlr;}

y en caso de que necesite agregar algunos miembros y código:

@members { HashMap<String, Object> objectMap = new HashMap<String, Object>(); //... private void addArrayValue(String content) { //... code required by snippets in the grammar } }


Una vieja pregunta con una respuesta perfectamente buena, pero dado que el comentario sobre la pregunta requería una opción de línea de comando (y eso era lo que realmente estaba buscando cuando llegué aquí), pensé en responder y decir lo siguiente ...

Puede especificar el paquete en la línea de comando si está utilizando ANTLR 4. Lo checked y parece que no está allí en la versión 3, por lo que la other respuesta es el camino a seguir para ANTLR 3.

Aquí hay un ejemplo:

java -cp antlr-4.4-complete.jar org.antlr.v4.Tool -package my.package MyGram.g4

Consulte la opción de -package en Opciones de línea de comando de herramienta ANTLR para obtener más información.