Exp.java 997 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //Exp:top//
  2. //Exp:import//
  3. import java.util.*;
  4. // <exp> ::= <mult> <exprest>
  5. public class Exp /*Exp:class*/ {
  6. public static final String $className = "Exp";
  7. public static final String $ruleString =
  8. "<exp> ::= <mult> <exprest>";
  9. public Mult mult;
  10. public Exprest exprest;
  11. public Exp(Mult mult, Exprest exprest) {
  12. //Exp:init//
  13. this.mult = mult;
  14. this.exprest = exprest;
  15. }
  16. public static Exp parse(Scan scn$, Trace trace$) {
  17. if (trace$ != null)
  18. trace$ = trace$.nonterm("<exp>", scn$.lno);
  19. Mult mult = Mult.parse(scn$, trace$);
  20. Exprest exprest = Exprest.parse(scn$, trace$);
  21. return new Exp(mult, exprest);
  22. }
  23. public int eval() {
  24. int v = mult.eval();
  25. for (int i = 0; i < exprest.opList.size(); i++)
  26. v += exprest.opList.get(i).toString().equals("+")
  27. ? exprest.multList.get(i).eval()
  28. : -exprest.multList.get(i).eval();
  29. return v;
  30. }
  31. //Exp//
  32. }