Traductor e intérprete del lenguaje CL 1.23
|
Árboles específicos para representar tipos de CL. More...
Public Member Functions | |
TypeTree | getChild (int i) |
Sobreescribe el método que obtiene el i-éesimo hijo del nodo actual del TypeTree. | |
Package Functions | |
TypeTree () | |
Constructor por defecto, sin parámetros, de un nodo. | |
TypeTree (int type) | |
Constructor utilizado para crear un tipo básico (INT o BOOL ) | |
TypeTree (int type, String text) | |
Constructor donde se suministran el tipo y el texto de un token para formar un tipo. | |
TypeTree (CL_AST t) | |
Constructor de un nodo donde el tipo y el texto del token se extraen de un nodo del AST. | |
TypeTree (TypeTree t) | |
Constructor de un nodo donde el tipo y el texto del token se extraen de un nodo del TypeTree. | |
boolean | isTypeInt () |
Es un tipo entero (INT )? | |
boolean | isTypeBool () |
Es un tipo booleano (BOOL )? | |
boolean | isTypeNumeric () |
Es un tipo numérico (entero)? | |
boolean | isTypeBasic () |
Es un tipo básico (entero o booleano)? | |
boolean | isTypeStruct () |
Es un tipo struct (STRUCT )? | |
boolean | isTypeArray () |
Es un tipo array (ARRAY )? | |
boolean | isTypeProcedure () |
Es un bloque tipo procedimiento? | |
boolean | isTypeFunction () |
Es un bloque tipo función? | |
boolean | isTypeUndefined () |
Es de tipo indefinido (TypeUndefined )? | |
boolean | isTypeError () |
Es de tipo error (TypeError )? | |
void | setTypeError () |
Establece el tipo a tipo error. | |
TypeTree | getFieldNumber (int i) |
Dado un tipo struct, obtiene su i-ésimo campo. | |
String | getFieldNameStruct () |
Dado un TypeTree que representa un campo de un struct, obtiene el nombre del campo. | |
TypeTree | getFieldTypeStruct () |
Dado un TypeTree que representa un campo de un struct, obtiene el tipo del campo. | |
TypeTree | searchFieldStruct (String s) |
Dado un struct (parámetro implícito) y el nombre de un campo, obtiene el tipo del campo. | |
int | getNumElemsArray () |
Dado un tipo array, obtiene su tamaño (número de elementos). | |
TypeTree | getElemTypeArray () |
Dado un tipo array, obtiene el tipo de los elementos del array. | |
TypeTree | getProcLFormalPars () |
Obtiene la lista de parámetros formales de un procedimiento (bloque PROCEDURE ). | |
TypeTree | getFuncLFormalPars () |
Obtiene la lista de parámetros formales de una función (bloque FUNCTION ). | |
TypeTree | getFuncTypeResult () |
Obtiene el tipo que devuelve una función. | |
TypeTree | getFormalParamNumber (int i) |
Dada la lista de parámetros formales de un procedimiento o función, obtiene el i-ésimo parámetro formal. | |
boolean | isValFormalParam () |
Dado un TypeTree correspondiente a un parámetro formal, está pasado por valor?. | |
boolean | isRefFormalParam () |
Dado un TypeTree correspondiente a un parámetro formal, está pasado por referencia?. | |
TypeTree | getFormalParamType () |
Dado un TypeTree correspondiente a un parámetro formal, devuelve el tipo del parámetro. | |
Static Package Functions | |
static boolean | equalFormalParamPassing (TypeTree t1, TypeTree t2) |
Dados dos TypeTree 's correspondientes a dos parámetros formales, determina si tienen el mismo mecanismo de paso. | |
static boolean | equalTypes (TypeTree t1, TypeTree t2) |
Determina si dos tipos (dos TypeTree 's) son estructuralmente iguales. | |
static TypeTree | duplicateType (TypeTree t1) |
Dado un tipo (un TypeTree), construye y devuelve otro tipo identico (estructuralmente igual). |
Árboles específicos para representar tipos de CL.
Se admiten los tipos básicos entero y booleano, los tipos estructurados struct(...) y array(...), y se pueden declarar además procedimientos y funciones.
Los TypeTree's se usan para representar los tipos de los objetos de un programa CL, por ejemplo, usamos un TypeTree para decorar los nodos del AST que son subexpresiones, especificando cuál es su tipo.
Al igual que la clase CL_AST, la clase TypeTree extiende la clase CommonTree
, pero sin añadir nueva información en los nodos (nuevos atributos). En cambio sí se definen métodos específicos para trabajar con la estructura e información de los tipos de CL.
Definition at line 59 of file TypeTree.java.
TypeTree.TypeTree | ( | ) | [package] |
Constructor por defecto, sin parámetros, de un nodo.
En el nodo creado el atributo token se inicializa para representar un tipo indefinido (TypeUndefined
, definido en TypeCheck.g
)
Definition at line 66 of file TypeTree.java.
TypeTree.TypeTree | ( | int | type | ) | [package] |
Constructor utilizado para crear un tipo básico (INT
o BOOL
)
[in] | type | código (type ) del token INT o BOOL |
Definition at line 75 of file TypeTree.java.
TypeTree.TypeTree | ( | int | type, |
String | text | ||
) | [package] |
Constructor donde se suministran el tipo y el texto de un token para formar un tipo.
No es necesario utilizarlo.
[in] | type | código (type ) del token que se incorpora al nodo |
[in] | text | texto (text ) del token que se incorpora al nodo |
Definition at line 87 of file TypeTree.java.
TypeTree.TypeTree | ( | CL_AST | t | ) | [package] |
Constructor de un nodo donde el tipo y el texto del token se extraen de un nodo del AST.
[in] | t | nodo del CL_AST de donde se toma la información para el nodo creado |
Definition at line 96 of file TypeTree.java.
TypeTree.TypeTree | ( | TypeTree | t | ) | [package] |
Constructor de un nodo donde el tipo y el texto del token se extraen de un nodo del TypeTree.
[in] | t | nodo del TypeTree de donde se toma la información para el nodo creado |
Definition at line 105 of file TypeTree.java.
Dado un tipo (un TypeTree), construye y devuelve otro tipo identico (estructuralmente igual).
[in] | t1 | el primer tipo |
t1
Definition at line 399 of file TypeTree.java.
Dados dos TypeTree 's correspondientes a dos parámetros formales, determina si tienen el mismo mecanismo de paso.
Ambos deben ser por valor (VAL
) o por referencia (REF
).
Definition at line 337 of file TypeTree.java.
Determina si dos tipos (dos TypeTree 's) son estructuralmente iguales.
Utiliza el concepto de equivalencia estructural de tipos.
[in] | t1 | el primer tipo |
[in] | t2 | el segundo tipo |
t1
y t2
son estructuralmente iguales Definition at line 348 of file TypeTree.java.
TypeTree TypeTree.getChild | ( | int | i | ) |
Sobreescribe el método que obtiene el i-éesimo hijo del nodo actual del TypeTree.
Para evitar tener que hacer castings de la forma: (TypeTree)
getChild(i)
[in] | i | número de hijo a obtener, comenzando desde 0 |
Definition at line 200 of file TypeTree.java.
TypeTree TypeTree.getElemTypeArray | ( | ) | [package] |
Dado un tipo array, obtiene el tipo de los elementos del array.
ARRAY
. Definition at line 264 of file TypeTree.java.
String TypeTree.getFieldNameStruct | ( | ) | [package] |
Dado un TypeTree que representa un campo de un struct, obtiene el nombre del campo.
IDENT
. Definition at line 220 of file TypeTree.java.
TypeTree TypeTree.getFieldNumber | ( | int | i | ) | [package] |
Dado un tipo struct, obtiene su i-ésimo campo.
[in] | i | el número de campo, comenzando desde 0 |
Definition at line 211 of file TypeTree.java.
TypeTree TypeTree.getFieldTypeStruct | ( | ) | [package] |
Dado un TypeTree que representa un campo de un struct, obtiene el tipo del campo.
Definition at line 229 of file TypeTree.java.
TypeTree TypeTree.getFormalParamNumber | ( | int | i | ) | [package] |
Dada la lista de parámetros formales de un procedimiento o función, obtiene el i-ésimo parámetro formal.
[in] | i | el número de parámetro, comenzando desde 0 |
ListOfFormalParams
). Definition at line 304 of file TypeTree.java.
TypeTree TypeTree.getFormalParamType | ( | ) | [package] |
Dado un TypeTree correspondiente a un parámetro formal, devuelve el tipo del parámetro.
Definition at line 328 of file TypeTree.java.
TypeTree TypeTree.getFuncLFormalPars | ( | ) | [package] |
Obtiene la lista de parámetros formales de una función (bloque FUNCTION
).
ListOfFormalParams
). Definition at line 283 of file TypeTree.java.
TypeTree TypeTree.getFuncTypeResult | ( | ) | [package] |
Obtiene el tipo que devuelve una función.
Definition at line 292 of file TypeTree.java.
int TypeTree.getNumElemsArray | ( | ) | [package] |
Dado un tipo array, obtiene su tamaño (número de elementos).
int
, no como string
, y que encuentra en el primer hijo del nodo ARRAY
Definition at line 255 of file TypeTree.java.
TypeTree TypeTree.getProcLFormalPars | ( | ) | [package] |
Obtiene la lista de parámetros formales de un procedimiento (bloque PROCEDURE
).
ListOfFormalParams
). Definition at line 274 of file TypeTree.java.
boolean TypeTree.isRefFormalParam | ( | ) | [package] |
Dado un TypeTree correspondiente a un parámetro formal, está pasado por referencia?.
Definition at line 320 of file TypeTree.java.
boolean TypeTree.isTypeArray | ( | ) | [package] |
Es un tipo array (ARRAY
)?
Definition at line 147 of file TypeTree.java.
boolean TypeTree.isTypeBasic | ( | ) | [package] |
Es un tipo básico (entero o booleano)?
Definition at line 134 of file TypeTree.java.
boolean TypeTree.isTypeBool | ( | ) | [package] |
Es un tipo booleano (BOOL
)?
Definition at line 120 of file TypeTree.java.
boolean TypeTree.isTypeError | ( | ) | [package] |
Es de tipo error (TypeError
)?
Definition at line 177 of file TypeTree.java.
boolean TypeTree.isTypeFunction | ( | ) | [package] |
Es un bloque tipo función?
FUNCTION
Definition at line 162 of file TypeTree.java.
boolean TypeTree.isTypeInt | ( | ) | [package] |
Es un tipo entero (INT
)?
Definition at line 113 of file TypeTree.java.
boolean TypeTree.isTypeNumeric | ( | ) | [package] |
Es un tipo numérico (entero)?
Definition at line 127 of file TypeTree.java.
boolean TypeTree.isTypeProcedure | ( | ) | [package] |
Es un bloque tipo procedimiento?
PROCEDURE
Definition at line 155 of file TypeTree.java.
boolean TypeTree.isTypeStruct | ( | ) | [package] |
Es un tipo struct (STRUCT
)?
Definition at line 141 of file TypeTree.java.
boolean TypeTree.isTypeUndefined | ( | ) | [package] |
Es de tipo indefinido (TypeUndefined
)?
Definition at line 170 of file TypeTree.java.
boolean TypeTree.isValFormalParam | ( | ) | [package] |
Dado un TypeTree correspondiente a un parámetro formal, está pasado por valor?.
Definition at line 312 of file TypeTree.java.
TypeTree TypeTree.searchFieldStruct | ( | String | s | ) | [package] |
Dado un struct (parámetro implícito) y el nombre de un campo, obtiene el tipo del campo.
[in] | s | el nombre del campo a buscar |
s
. Si no lo encuentra devuelve null
Definition at line 239 of file TypeTree.java.
void TypeTree.setTypeError | ( | ) | [package] |
Establece el tipo a tipo error.
El tipo error se representa mediante un árbol de un sólo nodo. El tipo del token en el nodo (su type
) es modificado a TypeError
, token definido en TypeCheck.g
, y el texto del token pasa a ser "error"
Definition at line 187 of file TypeTree.java.