JavaCC - Análisis Léxico: Estados léxicos

Estados Léxicos

Las especificaciones léxicas de JavaCC están organizadas en un conjunto de estados léxicos, cada uno de los cuales posee un identificador. En un instante determinado, el token manager, se halla en un único estado léxico.

Por defecto, existe un estado léxico standard denominado "DEFAULT", en el cual se inicializa el token manager por defecto; el estado léxico inicial puede cambiarse, pasándolo como parámetro al momento de crear el token manager.

En otras palabras, cada producción compuesta por expresiones regulares comienza con una especificación del estado léxico para el que se aplica (o una lista de estados léxicos, en el caso en que sean varios). Si la lista de estados léxicos se omite, la producción lo aplica al estado DEFAULT.

lexical_state_list ::= "<" "*" ">"
| "<" java_identifier ( "," java_identifier )* ">"


La lista de estados léxicos describe el conjunto de estados léxicos para los cuales puede aplicarse la producción. Si la lista es de la forma "<*>", la producción puede aplicarse a todos los estados léxicos. En otro caso, se aplica únicamente a todos los estados que figuran en la lista de identificadores.

Cada estado léxico contiene una lista ordenada de expresiones regulares; el orden, se deriva del orden de ocurrencia en el archivo de entrada.