| 123456789101112131415161718192021222324252627282930313233343536373839 |
- //Exp:top//
- //Exp:import//
- import java.util.*;
- // <exp> ::= <mult> <exprest>
- public class Exp /*Exp:class*/ {
- public static final String $className = "Exp";
- public static final String $ruleString =
- "<exp> ::= <mult> <exprest>";
- public Mult mult;
- public Exprest exprest;
- public Exp(Mult mult, Exprest exprest) {
- //Exp:init//
- this.mult = mult;
- this.exprest = exprest;
- }
- public static Exp parse(Scan scn$, Trace trace$) {
- if (trace$ != null)
- trace$ = trace$.nonterm("<exp>", scn$.lno);
- Mult mult = Mult.parse(scn$, trace$);
- Exprest exprest = Exprest.parse(scn$, trace$);
- return new Exp(mult, exprest);
- }
- public int eval() {
- int v = mult.eval();
- for (int i = 0; i < exprest.opList.size(); i++)
- v += exprest.opList.get(i).toString().equals("+")
- ? exprest.multList.get(i).eval()
- : -exprest.multList.get(i).eval();
- return v;
- }
- //Exp//
- }
|