JavaCC - Análisis Léxico: la clase Token
La clase Token
La clase Token es el tipo de los objetos token que son creados por el token
manager luego del escaneo exitoso de la cadena de entrada durante el análisis
léxico.
Estos objetos son pasados al parser y se accede a las acciones de la gramática
JavaCC usualmente retornando el valor del token. Los métodos getToken y
getNextToken del token manager, dan acceso a los objetos de este tipo.
Como se mencionó anteriormente, existen dos clases de tokens: regulares y especiales.
- Los tokens regularesson los tokens normales que maneja el parser.
- Los tokens especiales son otros tokens muy usados que aunque no tienen relevancia sintáctica
no son descartados, tales como los comentarios.
Cada objeto de tipo token posee los siguientes campos:
- int kind
Es el índice para esta clase de tokens en el esquema de representación
interna de JavaCC. Cuando los tokens tienen etiquetas en el archivo de
entrada JavaCC, dichas etiquetas son utilizadas para generar constantes
enteras (int) que pueden usarse en las acciones. El valor 0 siempre se
usa para representar el token <EOF> predefinido. Por conveniencia,
en el archivo <nombre_archivo>Constants se genera una constante "EOF".
- int beginLine, beginColumn, endLine, endColumn;
Indican las posiciones de comienzo y final del token, tal como aparecía
en el stream de entrada.
- String image;
Representa la imagen del token como apareció en el stream de entrada.
- Token next;
Es una referencia al siguiente token regular del stream de entrada. Si
es el último token de la entrada, o si el token manager no ha leído tokens
luego de éste, el campo toma valor null.
La descripción anterior es válida sólo si el token es un token regular.
- Token specialToken;
Este campo se utiliza para acceder a los tokens especiales que ocurren
antes del token, pero después del token regular (no especial) que lo precede
inmediatamente. Si no existen tales tokens especiales, este campo toma
el valor null. Cuando hay más de un token especial, este campo se refiere
al último de dichos tokens especiales, el cual se refiere al anterior,
y así sucesivamente hasta llegar al primer token especial, cuyo campo specialToken
es null. Los siguientes campos de tokens especiales se refieren a otros
tokens especiales que lo suceden inmediatamente (sin la intervención de
un token regular). Si no existe tal token, el campo toma valor null.
- static final Token newToken(int ofKind);
{
switch (ofkind)
{
default:return new Token();
}
}
Por defecto, su comportamiento consiste en retornar un nuevo objeto Token.
Si quieren ejecutarse acciones especiales cuando se construye un token
o se crean subclases de la clase Token y se instancian, puede redefinirse
este método apropiadamente. La única restricción es que este método retorna
un nuevo objeto de tipo Token (o una subclase de Token).
- public final String toString();
{
return image;
}
Este método retorna el valor de image.