Mult.java 1.0 KB

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