Skip to content

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⟧ =
     PUSHA {variable.varDefinition.address}

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;
    }
}