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

ParseNewJson() private méthode

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

			tok = _scanner.LookAhead(TokenType.OPENCURLY, TokenType.NEW); // Choice Rule
			switch (tok.Type)
			{
				// Choice Rule
				case TokenType.OPENCURLY:

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

					// Concat Rule
					ParseField(node); // NonTerminal Rule: Field

					// Concat Rule
					tok = _scanner.LookAhead(TokenType.COMMA); // ZeroOrMore Rule
					while (tok.Type == TokenType.COMMA)
					{

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

						// Concat Rule
						ParseField(node); // NonTerminal Rule: Field
						tok = _scanner.LookAhead(TokenType.COMMA); // ZeroOrMore Rule
					}

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

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

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

					// Concat Rule
					ParseField(node); // NonTerminal Rule: Field

					// Concat Rule
					tok = _scanner.LookAhead(TokenType.COMMA); // ZeroOrMore Rule
					while (tok.Type == TokenType.COMMA)
					{

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

						// Concat Rule
						ParseField(node); // NonTerminal Rule: Field
						tok = _scanner.LookAhead(TokenType.COMMA); // ZeroOrMore Rule
					}

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

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