AssignStmt.java 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. //AssignStmt:top//
  2. //AssignStmt:import//
  3. import java.util.*;
  4. // <stmt>AssignStmt ::= <VAR> <ASSIGN> <exp> <SEMI>
  5. public class AssignStmt extends Stmt /*AssignStmt:class*/ {
  6. public static final String $className = "AssignStmt";
  7. public static final String $ruleString =
  8. "<stmt>AssignStmt ::= <VAR> <ASSIGN> <exp> <SEMI>";
  9. public Token var;
  10. public Token assign;
  11. public Exp exp;
  12. public Token semi;
  13. public AssignStmt(Token var, Token assign, Exp exp, Token semi) {
  14. //AssignStmt:init//
  15. this.var = var;
  16. this.assign = assign;
  17. this.exp = exp;
  18. this.semi = semi;
  19. }
  20. public static AssignStmt parse(Scan scn$, Trace trace$) {
  21. if (trace$ != null)
  22. trace$ = trace$.nonterm("<stmt>AssignStmt", scn$.lno);
  23. Token var = scn$.match(Token.Match.VAR, trace$);
  24. Token assign = scn$.match(Token.Match.ASSIGN, trace$);
  25. Exp exp = Exp.parse(scn$, trace$);
  26. Token semi = scn$.match(Token.Match.SEMI, trace$);
  27. return new AssignStmt(var, assign, exp, semi);
  28. }
  29. public void execute() { Program.hshmap.put(var.toString(), exp.eval()); }
  30. //AssignStmt//
  31. }