public TreeNode BuildParseTree() { TreeNode parseTree = new TreeNode(); foreach (IToken token in InAList) { switch (token.Type) { case TokenType.keyword: if (!parseTree.AppendKeyword(token.TokenString)) { return(null); } break; case TokenType.number: parseTree.AppendNumber((NumberToken)token); break; case TokenType.infixOperator: parseTree.AppendFunction(token); break; case TokenType.suffixOperator: parseTree.AppendFunction(token); break; case TokenType.variable: if (!parseTree.AppendVariable(token.TokenString.ToUpper())) { return(null); } break; case TokenType.function: parseTree.AppendFunction((FunctionToken)token); break; default: ErrorLog.Add(new ErrorMessage("Fatal parsing error: this token type is unknown cannot be appended to the parse tree")); return(null); } } if (parseTree.children.Count() > 0) { //The root node is always redundant by construction return(parseTree.children.First()); } else { return(null); } }
public TreeNode BuildParseTree() { TreeNode parseTree = new TreeNode(); foreach (IToken token in InAList) { switch (token.Type) { case TokenType.keyword: if (!parseTree.AppendKeyword(token.TokenString)) return null; break; case TokenType.number: parseTree.AppendNumber((NumberToken)token); break; case TokenType.infixOperator: parseTree.AppendFunction(token); break; case TokenType.suffixOperator: parseTree.AppendFunction(token); break; case TokenType.variable: if (!parseTree.AppendVariable(token.TokenString.ToUpper())) { return null; } break; case TokenType.function: parseTree.AppendFunction((FunctionToken)token); break; default: ErrorLog.Add(new ErrorMessage("Fatal parsing error: this token type is unknown cannot be appended to the parse tree")); return null; } } if (parseTree.children.Count() > 0) //The root node is always redundant by construction return parseTree.children.First(); else return null; }