//generated parser dependent on lrsm.java metaparser.java, absparser.java import java.util.*; public class calc2parser extends absparser { public calc2parser(ArrayList S) { setup("calc2",S);} public void settable() { for(int i=0;i<17;i++) FSM.add(new Hashtable()); FSM.get(0).put("(",new shift(5)); FSM.get(0).put("-",new shift(6)); FSM.get(0).put("num",new shift(4)); FSM.get(0).put("E",new gotonext(1)); FSM.get(0).put("T",new gotonext(2)); FSM.get(0).put("F",new gotonext(3)); FSM.get(1).put("-",new shift(7)); FSM.get(1).put("+",new shift(8)); FSM.get(1).put("EOF",new accept()); FSM.get(2).put(")",new reduce(2)); FSM.get(2).put("*",new shift(10)); FSM.get(2).put("-",new reduce(2)); FSM.get(2).put("+",new reduce(2)); FSM.get(2).put("EOF",new reduce(2)); FSM.get(3).put(")",new reduce(4)); FSM.get(3).put("*",new reduce(4)); FSM.get(3).put("-",new reduce(4)); FSM.get(3).put("+",new reduce(4)); FSM.get(3).put("EOF",new reduce(4)); FSM.get(4).put(")",new reduce(5)); FSM.get(4).put("*",new reduce(5)); FSM.get(4).put("-",new reduce(5)); FSM.get(4).put("+",new reduce(5)); FSM.get(4).put("EOF",new reduce(5)); FSM.get(5).put("(",new shift(5)); FSM.get(5).put("-",new shift(6)); FSM.get(5).put("num",new shift(4)); FSM.get(5).put("E",new gotonext(11)); FSM.get(5).put("T",new gotonext(2)); FSM.get(5).put("F",new gotonext(3)); FSM.get(6).put("(",new shift(5)); FSM.get(6).put("-",new shift(6)); FSM.get(6).put("num",new shift(4)); FSM.get(6).put("F",new gotonext(12)); FSM.get(7).put("(",new shift(5)); FSM.get(7).put("-",new shift(6)); FSM.get(7).put("num",new shift(4)); FSM.get(7).put("T",new gotonext(13)); FSM.get(7).put("F",new gotonext(3)); FSM.get(8).put("(",new shift(5)); FSM.get(8).put("-",new shift(6)); FSM.get(8).put("num",new shift(4)); FSM.get(8).put("T",new gotonext(14)); FSM.get(8).put("F",new gotonext(3)); FSM.get(10).put("(",new shift(5)); FSM.get(10).put("-",new shift(6)); FSM.get(10).put("num",new shift(4)); FSM.get(10).put("F",new gotonext(15)); FSM.get(11).put(")",new shift(16)); FSM.get(11).put("-",new shift(7)); FSM.get(11).put("+",new shift(8)); FSM.get(12).put(")",new reduce(7)); FSM.get(12).put("*",new reduce(7)); FSM.get(12).put("-",new reduce(7)); FSM.get(12).put("+",new reduce(7)); FSM.get(12).put("EOF",new reduce(7)); FSM.get(13).put(")",new reduce(0)); FSM.get(13).put("*",new shift(10)); FSM.get(13).put("-",new reduce(0)); FSM.get(13).put("+",new reduce(0)); FSM.get(13).put("EOF",new reduce(0)); FSM.get(14).put(")",new reduce(1)); FSM.get(14).put("*",new shift(10)); FSM.get(14).put("-",new reduce(1)); FSM.get(14).put("+",new reduce(1)); FSM.get(14).put("EOF",new reduce(1)); FSM.get(15).put(")",new reduce(3)); FSM.get(15).put("*",new reduce(3)); FSM.get(15).put("-",new reduce(3)); FSM.get(15).put("+",new reduce(3)); FSM.get(15).put("EOF",new reduce(3)); FSM.get(16).put(")",new reduce(6)); FSM.get(16).put("*",new reduce(6)); FSM.get(16).put("-",new reduce(6)); FSM.get(16).put("+",new reduce(6)); FSM.get(16).put("EOF",new reduce(6)); } // settable public void setactions() { int ri = 0; Grule candidate = null; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); Expr t = (Expr) stackele.value; stackele = Stack.remove(si--); stackele = Stack.remove(si--); Expr e = (Expr) stackele.value; return new subexp(e,t); } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); Expr t = (Expr) stackele.value; stackele = Stack.remove(si--); stackele = Stack.remove(si--); Expr e = (Expr) stackele.value; return new sumexp(e,t); } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); Expr t = (Expr) stackele.value; return t; } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); Expr f = (Expr) stackele.value; stackele = Stack.remove(si--); stackele = Stack.remove(si--); Expr t = (Expr) stackele.value; return new multexp(t,f); } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); Expr f = (Expr) stackele.value; return f; } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); Integer x = (Integer) stackele.value; return new intexp(x); } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); stackele = Stack.remove(si--); Expr e = (Expr) stackele.value; stackele = Stack.remove(si--); return e; } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); Expr e = (Expr) stackele.value; stackele = Stack.remove(si--); return new negexp(e); } }; candidate = Rules.get(ri++); candidate.act = new Ruleaction() { public Object compval() { int si = Stack.size()-1; Sitem stackele=null; stackele = Stack.remove(si--); stackele = Stack.remove(si--); return Stack.get(Stack.size()-1).value; } }; } // setactions } // parser class