JavaCC - Análisis Léxico: Clases de expresiones regulares
Tipos de Expresiones Regulares que definen los tokens
Existen cuatro tipos de producciones compuestas por expresiones regulares:
regexpr_kind ::= "TOKEN" | "SPECIAL_TOKEN" | "SKIP" | "MORE"
Tipo de expresión | Entidades que describe |
TOKEN | Las expresiones regulares de este tipo describen los tokens de la gramática. El token manager crea un objeto Token por cada match de tal expresión regular y lo retorna al parser. |
SPECIAL_TOKEN | Las expresiones regulares de este tipo describen los tokens especiales,
los cuales son como los tokens, salvo que no tienen significancia durante
el parsing, es decir que las producciones BNF los ignoran. Sin embargo,
los tokens especiales son pasados al parser para que las acciones del parser
puedan accederlos. Para pasarlos, se los asocia al próximo token usando
el campo "specialToken" de la clase Token. Los tokens especiales son muy utilizados en el procesamiento de entidades léxicas tales como los comentarios, que si bien no tienen significancia para el parsing, son una parte importante del archivo de entrada. |
SKIP | Las expresiones regulares de este tipo indican qué expresiones deben ser ignoradas por el token manager. Por ejemplo, los fines de línea (\n), las tabulaciones (\t), etc. |
MORE | A veces es utilizada para construir gradualmente un token. Los matches
que se van obteniendo se almacenan en un buffer hasta que se encuentra
el siguiente TOKEN o SPECIAL_TOKEN. Luego, todos los matches almacenados
en el buffer y el TOKEN/SPECIAL_TOKEN hallado son concatenados juntos para
formar un TOKEN/SPECIAL_TOKEN que es pasado al parser. Si siguiera una
expresión regular SKIP, el contenido del buffer sería descartado |