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

Estados Léxicos

Cada regla léxica, está precedida por una lista de estados léxicos, de la siguiente forma:

<state[0][, state[1], state[2], ...]>

Los símbolos "<" y ">" delimitan la lista, precediendo la expresión regular. La lista de estados especifica bajo qué estados iniciales puede aplicarse la regla. Si no se especifica ningún estado, la regla puede utilizarse en todos los estados.

Transición de Estados

Si los estados léxicos son declarados en la sección de directivas JLex, las transiciones de esos estados pueden declararse en las acciones de la expresión regular. Las transiciones de estados se realizan por la siguiente invocación de la función yybegin(state).

La función void yybegin() tiene como parámetro el estado de nombre state y efectúa una transición a dicho estado léxico. El estado state debe declararse en la sección de directivas JLex, porque de lo contrario, se generará un error de compilación en el archivo fuente generado. El único estado que puede exceptuarse del requerimiento de la declaración es el estado YYINITIAL, ya que está implícitamente declarado por JLex. El lexer generado comienza el análisis léxico en estado YYINITIAL y permanece en dicho estado hasta que se produce una transición.