JavaCC - Opciones de personalización
Opciones de Personalización
A continuación, se describe brevemente el efecto de cada una de las opciones
de binding:
Opción | Efecto |
LOOKAHEAD | Indica la cantidad de tokens que son tenidos en cuenta por el parser antes
de tomar una decisión de parsing. El valor por defecto es 1, con lo cual
se trabaja con parser LL(1), aunque el número puede variar para alguna/s
producción/es en particular. Cuanto más pequeño sea el número de tokens
del lookahead, más veloz será el parser. Valor por defecto: 1 |
CHOICE_AMBIGUITY_CHECK | Es el número de tokens que se consideran en las elecciones de chequeo por
ambigüedad, de la forma "A | B | ...". Por ejemplo, si existen
dos tokens prefijos comunes para A y B, pero no tres, entonces por medio
de esta opción, JavaCC permite usar un lookahead de 3 con propósitos de
desambigüación. La utilización de esta opción provee mayor información
y flexibilidad ante las ambigüedades, pero a costo de un mayor tiempo de
procesamiento. Valor por defecto: 2 |
OTHER_AMBIGUITY_CHECK | Número de tokens considerados en el chequeo de todas las otras clases de
opciones sintácticas por ambigüedad (es decir, de las formas "(A)*",
"(A)+", y "(A)?"). Esta opción tiene como consecuencia
que el parser demore más tiempo que la anterior. Valor por defecto: 1 |
STATIC | Si el valor es true, todos los métodos y clases variables se especifican como estáticas en el parser generado y en el token manager. Esto permite la presencia de un único objeto parser, pero mejora la performance del procedimiento de parsing. Para ejecutar múltiples parsers durante la ejecución de un programa Java, debe invocarse el método ReInit() para reinicializar el parser, si es que había sido definido como estático. Si el parser no es estático, puede utilizarse el operador "new" para construir los parsers que sean necesarios; los mismos, podrían
ser usados simultáneamente en threads diferentes. Valor por defecto: true |
DEBUG_PARSER: | Esta opción se utliza para obtener información de debugging desde el parser
generado. Si el valor de la opción es true, el parser genera un trace de
sus acciones. Dichos traces pueden deshabilitarse por medio de la invocación
del método disable_tracing() en la clase del parser generado, y, recíprocamente,
pueden habilitarse con el método enable_tracing(). Valor por defecto: false |
DEBUG_LOOKAHEAD | Si el valor de la opción es true, el parser genera todos los traces de
información, siempre que la opción DEBUG_PARSER sea true, situación en
la cual, también se generan los traces de las acciones ejecutadas durante
la operación de lookahead. Valor por defecto: false |
DEBUG_TOKEN_MANAGER | Esta opción se usa para obtener información de debugging del token manger
generado. Si la opción tiene valor true, el token manager genera un trace
de sus acciones. Dicho trace, tiene un tamaño considerablemente grande,
por lo que sólo debería usarse ante la presencia de errores léxicos que
hayan sido reportados y resulte difícil entender por qué. Normalmente,
en esta situación puede determinarse el problema teniendo en cuenta las
últimas líneas del trace. Valor por defecto: false. |
OPTIMIZE_TOKEN_MANAGER | Permite que el token manajer ejecute optimizaciones. Valor por defecto: false. |
ERROR_REPORTING | Si su valor es false, causa mayor cantidad de errores debido a que los
errores de parser son reportados en menor detalle. La única razón por la
que esta opción debería setearse a false, es para lograr una mejor performance.
Valor por defecto: true. |
JAVA_UNICODE_ESCAPE | Si el valor es true, el parser generado usa un objeto stream de entrada
que procesa los escapes Java Unicode (\u...) antes de enviar los caracteres
al token manager, si las opciones USER_TOKEN_MANAGER o USER_CHAR_STREAM
tienen valor false. Valor por defecto: false. |
UNICODE_INPUT | Si su valor es true, el parser generado usa un objeto stream de entrada
que lee archivos Unicode. Por defecto, los archivos se asumen como código
ASCII. Si las opciones USER_TOKEN_MANAGER o USER_CHAR_STREAM tienen valor
true, esta opción es ignorada. Valor por defecto: false. |
IGNORE_CASE | Si su valor es true, el token manager generado no efectúa diferencia entre
letras mayúsculas y minúsculas en las especificaciones de tokens y los
archivos de entrada. Es muy usado para escribir gramáticas para lenguajes
como HTML. Valor por defecto: false. |
USER_TOKEN_MANAGER: | La acción por defecto es generar un token manager que trabaje con los tokens
especificados. Si su valor es true, el parser se genera para aceptar tokens
provenientes de cualquier token manager de tipo "TokenManager".
Valor por defecto: false. |
USER_CHAR_STREAM | La acción por defecto es generar un lector de streams de caracteres (character
stream reader) tal como se especifica en las opciones JAVA_UNICODE_ESCAPE
y UNICODE_INPUT. El token manager generado, recibe caracteres del stream
reader. Si esta opción tiene valor true, el token manager se genera para
leer caracteres de cualquier stream reader de tipo "CharStream.java".
Esta opción se ignora si USER_TOKEN_MANAGER tiene valor true. Valor por defecto: false. |
BUILD_PARSER | La acción por defecto es generar el archivo del parser, (<nombre_archivo>.java).
Si su valor es false, el archivo del parser no se genera. Normalmente esta
opción toma valor falso cuando se desea generar solamente el token manager
para usarlo sin asociarlo al parser. Valor por defecto: true. |
BUILD_TOKEN_MANAGER | La acción por defecto es generar el archivo del token manager (<nombre_archivo>TokenManager.java).
Si su valor es false, el token manager no se genera. La única razón para
que esta opción tome valor false, es ahorrar algo de tiempo durante la
generación del parser cuando se conoce la existencia de problemas en la
parte del archivo de la gramática que corresponde al parser y las especificaciones
léxicas se dejan intactas. Valor por defecto: true. |
SANITY_CHECK | JavaCC ejecuta numerosos chequeos sintácticos y semánticos en el archivo
de la gramática durante la generación del parser. Algunos chequeos, tales
como detección de recursión a izquierda, detección de ambigüedad, y mal
uso de expansiones vacías pueden ser suprimidas para que el parser se genere
de manera más veloz, seteando esta opción como false. Sin embargo, debe
utilizarse con precaución, dado que la supresión de los chequeos antes
mencionados, pueden causar la presencia de errores que a su vez pueden
acarrear algún comportamiento inesperado por parte del parser generado. Valor por defecto: true. |
FORCE_LA_CHECK | Esta opción setea los controles de chequeo de ambigüedad de lookahead ejecutados
por JavaCC. Cuando el valor es false, el chequeo de ambigüedad del lookahead
se ejecuta para todos los puntos de elección donde se usa el lookahead
de 1 por defecto. El chequeo de ambigüedad de lookahead no se ejecuta en
los puntos donde existe una especificación explícita de lookahead, o si
la opción LOOKAHEAD tiene un valor distinto de 1. Valor por defecto: false. |
COMMON_TOKEN_ACTION: | Si el valor de esta opción es true, todas las invocaciones del método "getNextToken()" del token manager, causan una llamada al método definido "CommonTokenAction()" después de que el token ha sido escaneado por el token manager.
El usuario debe definir este método en la sección TOKEN_MGR_DECLS. La
signatura de este método es:
void CommonTokenAction(Token t)Valor por defecto: false. |
CACHE_TOKENS | Si su valor es true, el parser generado chequea tokens extra antes de tiempo. Esto facilita algunas mejoras de performance. Sin embargo, en este caso (cuando la opción es true) no pueden trabajar aplicaciones interactivas ya que el parser necesita trabajar sincrónicamente con la disponibilidad de los tokens desde el stream de entrada. En dichos casos, lo mejor e dejar esta opción con su valor por defecto, el cual es false. Valor por defecto: false. |
OUTPUT_DIRECTORY | Es una opción cuyo valor por defecto es el directorio actual. Controla
dónde son generados los archivos de salida. Valor por defecto: directorio actual.. |