private ASTNode _Term() { //Parse the first factor var tmpNode = _Factor(); //Parse following factors (optional) while (_CurrentToken.Type == TokenType.MUL || _CurrentToken.Type == TokenType.DIV) { var opToken = _CurrentToken; _Eat(_CurrentToken.Type); tmpNode = new ASTBinopNode(tmpNode, opToken, _Factor()); } return(tmpNode); }
private ASTNode _Expression() { //Parse the first term (Required) var tmpNode = _Term(); //Parse any additional following Terms (Optional) while (_CurrentToken.Type == TokenType.ADD || _CurrentToken.Type == TokenType.SUB) { var opToken = _CurrentToken; _Eat(_CurrentToken.Type); tmpNode = new ASTBinopNode(tmpNode, opToken, _Term()); } return(tmpNode); }