Traductor e intérprete del lenguaje CL 1.23
CL_AST_Adaptor Class Reference

Clase adaptadora a medida para crear árboles CL_AST. More...

List of all members.

Public Member Functions

Object create (Token payload)
 Crea un nodo del árbol AST a partir del Token payload.
Object errorNode (TokenStream input, Token start, Token stop, RecognitionException e)
 Crea un nodo de error para el árbol AST cuando ocurre un error sintáctico.

Detailed Description

Clase adaptadora a medida para crear árboles CL_AST.

Si no se implementa, se crearán árboles de sintaxis abstracta (AST's) con nodos de tipo CommonTree.

The Definitive ANTLR Reference [pag. 157]:
If you'd like to use your own tree node type because you want to add some fields to each node, define your node as a subclass of CommonTree. Then, subclass CommonTreeAdaptor, and override create() so that it builds your special nodes. Finally, you must inform ANTLR that it should use your custom adaptor
ANTLR API Documentation [CommonTreeAdaptor Class]:
http://www.antlr.org/api/Java/classorg_1_1antlr_1_1runtime_1_1tree_1_1_common_tree_adaptor.html#_details
To get your parser to build nodes of a different type, override create(Token), errorNode(), and to be safe, YourTreeClass.dupNode(). dupNode is called to duplicate nodes during rewrite operations.
ANTLR Wiki [Tree Construction. Heterogeneous tree nodes]:
http://www.antlr.org/wiki/display/ANTLR3/Tree+construction#Treeconstruction-Heterogeneoustreenodes
By default, with output=AST, ANTLR creates trees of type CommonTree. To create different nodes... you can override create(Token) and YourTreeClass.dupNode(Object) and errorNode() in a subclass of CommonTreeAdaptor.
ANTLR Wiki [Tree Construction. Error Node Insertion Upon Syntax Error]:
http://www.antlr.org/wiki/display/ANTLR3/Tree+construction#Treeconstruction-errornodes
ANTLR adds an error node as created by TreeAdaptor.errorNode(...) to represent the missing nodes or confusing input sequences
ANTLR Wiki [Tree Construction. Turning off error node construction]:
http://www.antlr.org/wiki/display/ANTLR3/Tree+construction#Treeconstruction-Turningofferrornodeconstruction
See also:
CL_AST, CommonTreeAdaptor
Author:
José Miguel Rivero Almeida

Definition at line 66 of file CL_AST_Adaptor.java.


Member Function Documentation

Object CL_AST_Adaptor.create ( Token  payload)

Crea un nodo del árbol AST a partir del Token payload.

Para árboles de tipo CommonTree, el token se convierte en el contenido del nodo. Este método es llamado internamente por el parser cuando se activa la construcción del AST (output=AST). Es el método de creación de nodos más utlizado.

Sobreescribe CommonTreeAdaptor.create() de forma que se construyen los nodos especiales a medida CL_AST.

Parameters:
[in]payloadtoken que se incorpora al nodo del árbol CL_AST
Returns:
el nodo creado
See also:
CL_AST, CommonTreeAdaptor.create(Token)

Definition at line 85 of file CL_AST_Adaptor.java.

Object CL_AST_Adaptor.errorNode ( TokenStream  input,
Token  start,
Token  stop,
RecognitionException  e 
)

Crea un nodo de error para el árbol AST cuando ocurre un error sintáctico.

Sobreescribe el método errorNode que devuelve un nodo que representa un error. Este nodo guarda los tokens consumidos durante la recuperación del error. El token start indica el símbolo de entrada en el que el error se detectó. El token stop indica el último símbolo consumido durante la recuperación.

Se debe especificar el input stream para que el texto incorrecto pueda ser enpaquetado en el nodo error. La excepción podría ser útil en algunas aplicaciones; la implementación por defecto almacena un puntero a ella en el CommonErrorNode.

Esto sólo tiene sentido durante el parsing de secuencias de tokens, no durante el tree-parsing. El tree-parsing, para el análisis semántico y la generación de código, se produce sólo cuando el parsing y la construcción del árbol han tenido éxito. Pero en el traductor de CL el AST nunca será procesado cuando aparecen errores sintácticos, así que en este caso no hace falta crear ningún nodo de error.

Parameters:
inputel token stream para que el texto incorrecto pueda ser enpaquetado en el nodo de error
startel símbolo de entrada en el que el error fue detectado
stopel último símbolo consumido durante la recuperación
ela excepción generada
Returns:
no se crea nodo alguno; siempre se devuelve null
See also:
CommonErrorNode

Definition at line 126 of file CL_AST_Adaptor.java.


The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Enumerations