Función address
Como se comentó al hacer la especificación, la función address tiene plantillas que deben notificar un error si son invocadas.
address⟦expression⟧ | address⟦arithmetic → left:expression operator:string right:expression⟧ = address⟦variable → name:string⟧ = address⟦intLiteral → intValue:int⟧ = address⟦floatLiteral → floatValue:float⟧ = |
En la implementación que se va a mostrar no aparecen dichas plantillas, ya que el código generado por VGen se encarga de notificar un error si se invoca a un visit
que no ha sido implementado.
Por tanto, la implementación de la función address quedaría de la siguiente forma:
java
public class Address extends AbstractCodeFunction {
public Object visit(Variable variable, Object param) {
out("pusha " + variable.getVarDefinition().getAddress());
return null;
}
}