public class Equation { private boolean debug; private String nextToken; private TokenIter itTokens; Tree exprTree; public Equation(TokenIter iter, boolean debug){ itTokens = iter; this.debug = debug; // put the first token from iter in nextToken // initial indent "" nextTok(""); } private void error(String errMess) throws ParseException{ throw new ParseException(errMess); } // line parses a line: lhs "=" expr // lhs is an identifier // and stores an IdVal (lhs, value) in the symbol table public Symbol line(BST symbolTable) throws BSTException, ParseException{ TreeNode root; exprTree = null; if(nextToken==null) return null; else { if(debug) System.out.println("line"); // scan left hand side String lhs // if it is not an identifier // call error("Identifier expected"); // if no next token // call error("unexpected end of line"); // scan "=" // if not "=" call error("= expected"); // parse expression and create expression tree // evaluate Expression tree // create Symbol lhsVal (lhs, value) // insert lhsVal in symbolTable // if(debug) // System.out.println("retrieving " + lhs + ": " + symbolTable.retrieveItem(lhs)); // if(nextToken!=null){ // error("end of line expected"); // return null; //} else return lhsVal; } } }