implement variable assignment

This commit is contained in:
2019-11-18 18:54:24 +01:00
parent b38369b7a5
commit 2af9f369cf
6 changed files with 53 additions and 3 deletions

View File

@@ -85,6 +85,13 @@ public class EvalVisitor implements Visitor<Value> {
return null;
}
@Override
public Value visit(VariableAssignment e) {
Value result = e.expression.welcome(this);
this.env.put(e.name, result);
return result;
}
@Override
public Value visit(Block e) {
Value result = null;

View File

@@ -125,6 +125,14 @@ public class PrettyPrintVisitor implements Visitor<Void> {
return null;
}
@Override
public Void visit(VariableAssignment e) {
ex.write(e.name + " = ");
e.expression.welcome(this);
ex.write(";");
return null;
}
@Override
public Void visit(Block e) {
ex.write("{");
@@ -171,7 +179,7 @@ public class PrettyPrintVisitor implements Visitor<Void> {
}
arg.welcome(this);
}
ex.write(");");
ex.write(")");
return null;
}

View File

@@ -15,6 +15,7 @@ public interface Visitor<R> {
R visit(ModuloExpression e);
R visit(IfStatement e);
R visit(PrintStatement e);
R visit(VariableAssignment e);
R visit(Block e);
R visit(FunctionDefinition e);
R visit(FunctionCall e);