mark vararg expressions

This commit is contained in:
James Roseborough
2010-06-25 15:18:33 +00:00
parent bce5c5a5b7
commit 9fc310dc16
2 changed files with 19 additions and 5 deletions

View File

@@ -89,6 +89,10 @@ public class Exp {
return false;
}
public boolean isvarargexp() {
return false;
}
abstract public static class PrimaryExp extends Exp {
public boolean isvarexp() {
return false;
@@ -168,6 +172,10 @@ public class Exp {
public void accept(Visitor visitor) {
visitor.visit(this);
}
public boolean isvarargexp() {
return true;
}
}
public static class MethodCall extends FuncCall {
@@ -202,7 +210,11 @@ public class Exp {
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
public boolean isvarargexp() {
return true;
}
}
public static class UnopExp extends Exp {
@@ -233,13 +245,14 @@ public class Exp {
}
public static class AnonFuncDef extends Exp {
public final FuncBody funcbody;
public final FuncBody body;
public AnonFuncDef(FuncBody funcbody) {
this.funcbody = funcbody;
this.body = funcbody;
}
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
}

View File

@@ -48,8 +48,9 @@ abstract public class Visitor {
public void visit(Stat.NumericFor stat) {
visit(stat.name);
stat.initial.accept(this);
stat.step.accept(this);
stat.limit.accept(this);
if ( stat.step != null )
stat.step.accept(this);
stat.block.accept(this);
}
public void visit(Stat.RepeatUntil stat) {
@@ -78,7 +79,7 @@ abstract public class Visitor {
field.rhs.accept(this);
}
public void visit(Exp.AnonFuncDef exp) {
exp.funcbody.accept(this);
exp.body.accept(this);
}
public void visit(Exp.BinopExp exp) {
exp.lhs.accept(this);