Skip to content

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

SymbolAtribute NameJava TypeSyn/InhDescription
variablevarDefinitionVarDefinitionSynthetizedEnlace a la definición de esta variable

Auxiliary Elements

NameJava TypeDescription
variablesMap<String, VarDefinition>Registro de las definiciones de variables que se han ido encontrando en el árbol

Rules

NodePredicatesFunctions
program → varDefinition* statement*
varDefinition → type name:stringvariables[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:stringvariables[name] ≠ ∅variable.varDefinition = variables[name]
intLiteral:expression → intValue:int
floatLiteral:expression → floatValue:float