System.Linq.Dynamic.Parser.ParseStatement C# (CSharp) Méthode

ParseStatement() private méthode

private ParseStatement ( ParseNode parent ) : void
parent ParseNode
Résultat void
		private void ParseStatement(ParseNode parent) // NonTerminalSymbol: Statement
		{
			Token tok;
			ParseNode n;
			ParseNode node = parent.CreateNode(_scanner.GetToken(TokenType.Statement), "Statement");
			parent.Nodes.Add(node);


			// Concat Rule
			tok = _scanner.Scan(TokenType.IDENTIFIER); // Terminal Rule: IDENTIFIER
			n = node.CreateNode(tok, tok.ToString());
			node.Token.UpdateRange(tok);
			node.Nodes.Add(n);
			if (tok.Type != TokenType.IDENTIFIER)
			{
				tree.Errors.Add(
					new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.IDENTIFIER.ToString(), 0x1001, tok));
				return;
			}

			// Concat Rule
			tok = _scanner.LookAhead(TokenType.OPENPAREN, TokenType.OPENSQUARE); // Option Rule
			if (tok.Type == TokenType.OPENPAREN
				|| tok.Type == TokenType.OPENSQUARE)
			{
				ParseCall(node); // NonTerminal Rule: Call
			}

			// Concat Rule
			tok = _scanner.LookAhead(TokenType.DOT); // Option Rule
			if (tok.Type == TokenType.DOT)
			{

				// Concat Rule
				tok = _scanner.Scan(TokenType.DOT); // Terminal Rule: DOT
				n = node.CreateNode(tok, tok.ToString());
				node.Token.UpdateRange(tok);
				node.Nodes.Add(n);
				if (tok.Type != TokenType.DOT)
				{
					tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.DOT.ToString(),
						0x1001, tok));
					return;
				}

				// Concat Rule
				ParseStatement(node); // NonTerminal Rule: Statement
			}

			parent.Token.UpdateRange(node.Token);
		} // NonTerminalSymbol: Statement