Skip to content

Gestión de Memoria

Especificación de la etapa de gestión de memoria (perteneciente a la fase de generación de código) utilizando como metalenguaje una gramática atribuida:

Attributes

SymbolAtribute NameJava TypeSyn/InhDescription
varDefinitionaddressintInheritedVariable address

Auxiliary Functions

NameDescription
size(type)Type size in bytes

Rules

NodePredicatesFunctions
program → varDefinition* statement*varDefinitioni.address = ∑size(varDefinitionj.type)
| 0 ≤ j < i
varDefinition → type name:string
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
intLiteral:expression → intValue:int
floatLiteral:expression → floatValue:float