internal static FdoExpression ParseNode(ParseTreeNode child) { if (child.Term.Name == FdoTerminalNames.Expression) { return(ParseNode(child.ChildNodes[0])); } else { switch (child.Term.Name) { case FdoTerminalNames.UnaryExpression: return(new FdoUnaryExpression(child)); case FdoTerminalNames.BinaryExpression: return(new FdoBinaryExpression(child)); case FdoTerminalNames.Function: return(new FdoFunction(child)); case FdoTerminalNames.Identifier: return(new FdoIdentifier(child)); case FdoTerminalNames.ValueExpression: return(FdoValueExpression.ParseValueNode(child)); default: throw new FdoParseException("Unknown terminal: " + child.Term.Name); } } }
private void ProcessNodeList(ParseTreeNodeList list) { foreach (ParseTreeNode child in list) { if (child.Term.Name == FdoTerminalNames.ValueExpressionCollection) { ProcessNodeList(child.ChildNodes); } else { this.ValueList.Add(FdoValueExpression.ParseValueNode(child)); } } }