Identificación
Especificación de la etapa de identificación (perteneciente a la fase de análisis semántico) utilizando como metalenguaje una gramática atribuida:
Attributes
Symbol | Atribute Name | Java Type | Syn/Inh | Description |
variable | varDefinition | VarDefinition | Synthetized | Enlace a la definición de esta variable |
Auxiliary Elements
Name | Java Type | Description |
variables | Map<String, VarDefinition> | Registro de las definiciones de variables que se han ido encontrando en el árbol |
Rules
Node | Predicates | Functions |
program → varDefinition* statement* | ||
varDefinition → type name:string | variables[name] == ∅ | variables[name] = varDefinition |
intType:type → ε | ||
floatType:type → ε | ||
print:statement → expression | ||
assignment:statement → left:expression right:expression | ||
arithmetic:expression → left:expression operator:string right:expression | ||
variable:expression → name:string | variables[name] ≠ ∅ | variable.varDefinition = variables[name] |
intLiteral:expression → intValue:int | ||
floatLiteral:expression → floatValue:float |