1
// Generated by TinyPG v1.2 available at www.codeproject.com
4
using System.Collections.Generic;
6
namespace SimpleExpressionEvaluator.Parser
10
public partial class Parser
12
private Scanner scanner;
13
private ParseTree tree;
15
public Parser(Scanner scanner)
17
this.scanner = scanner;
20
public ParseTree Parse(string input)
22
tree = new ParseTree();
23
return Parse(input, tree);
26
public ParseTree Parse(string input, ParseTree tree)
32
tree.Skipped = scanner.Skipped;
37
private void ParseStart(ParseNode parent) // NonTerminalSymbol: Start
41
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Start), "Start");
42
parent.Nodes.Add(node);
46
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
49
tok = scanner.Scan(TokenType.EOF); // Terminal Rule: EOF
50
if (tok.Type != TokenType.EOF)
51
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.EOF.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
52
n = node.CreateNode(tok, tok.ToString() );
53
node.Token.UpdateRange(tok);
56
parent.Token.UpdateRange(node.Token);
57
} // NonTerminalSymbol: Start
59
private void ParseConditional(ParseNode parent) // NonTerminalSymbol: Conditional
63
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Conditional), "Conditional");
64
parent.Nodes.Add(node);
68
tok = scanner.Scan(TokenType.IF); // Terminal Rule: IF
69
if (tok.Type != TokenType.IF)
70
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.IF.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
71
n = node.CreateNode(tok, tok.ToString() );
72
node.Token.UpdateRange(tok);
76
tok = scanner.LookAhead(TokenType.BROPEN); // Option Rule
77
if (tok.Type == TokenType.BROPEN)
79
tok = scanner.Scan(TokenType.BROPEN); // Terminal Rule: BROPEN
80
if (tok.Type != TokenType.BROPEN)
81
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BROPEN.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
82
n = node.CreateNode(tok, tok.ToString() );
83
node.Token.UpdateRange(tok);
88
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
91
tok = scanner.LookAhead(TokenType.BRCLOSE); // Option Rule
92
if (tok.Type == TokenType.BRCLOSE)
94
tok = scanner.Scan(TokenType.BRCLOSE); // Terminal Rule: BRCLOSE
95
if (tok.Type != TokenType.BRCLOSE)
96
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BRCLOSE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
97
n = node.CreateNode(tok, tok.ToString() );
98
node.Token.UpdateRange(tok);
103
tok = scanner.Scan(TokenType.THEN); // Terminal Rule: THEN
104
if (tok.Type != TokenType.THEN)
105
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.THEN.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
106
n = node.CreateNode(tok, tok.ToString() );
107
node.Token.UpdateRange(tok);
111
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
114
tok = scanner.LookAhead(TokenType.ELSE); // Option Rule
115
if (tok.Type == TokenType.ELSE)
119
tok = scanner.Scan(TokenType.ELSE); // Terminal Rule: ELSE
120
if (tok.Type != TokenType.ELSE)
121
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ELSE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
122
n = node.CreateNode(tok, tok.ToString() );
123
node.Token.UpdateRange(tok);
127
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
130
parent.Token.UpdateRange(node.Token);
131
} // NonTerminalSymbol: Conditional
133
private void ParseIdentifier(ParseNode parent) // NonTerminalSymbol: Identifier
137
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Identifier), "Identifier");
138
parent.Nodes.Add(node);
140
tok = scanner.LookAhead(TokenType.IDENTIFIER, TokenType.ARRAYNAME, TokenType.METHODNAME); // Choice Rule
143
case TokenType.IDENTIFIER:
144
tok = scanner.Scan(TokenType.IDENTIFIER); // Terminal Rule: IDENTIFIER
145
if (tok.Type != TokenType.IDENTIFIER)
146
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.IDENTIFIER.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
147
n = node.CreateNode(tok, tok.ToString() );
148
node.Token.UpdateRange(tok);
151
case TokenType.ARRAYNAME:
152
ParseArray(node); // NonTerminal Rule: Array
154
case TokenType.METHODNAME:
155
ParseMethod(node); // NonTerminal Rule: Method
158
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found.", 0x0002, 0, tok.StartPos, tok.StartPos, tok.Length));
162
parent.Token.UpdateRange(node.Token);
163
} // NonTerminalSymbol: Identifier
165
private void ParseBooleanExpr(ParseNode parent) // NonTerminalSymbol: BooleanExpr
169
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.BooleanExpr), "BooleanExpr");
170
parent.Nodes.Add(node);
174
ParseCompareExpr(node); // NonTerminal Rule: CompareExpr
177
tok = scanner.LookAhead(TokenType.BOOLEAN); // ZeroOrMore Rule
178
while (tok.Type == TokenType.BOOLEAN)
182
tok = scanner.Scan(TokenType.BOOLEAN); // Terminal Rule: BOOLEAN
183
if (tok.Type != TokenType.BOOLEAN)
184
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BOOLEAN.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
185
n = node.CreateNode(tok, tok.ToString() );
186
node.Token.UpdateRange(tok);
190
ParseCompareExpr(node); // NonTerminal Rule: CompareExpr
191
tok = scanner.LookAhead(TokenType.BOOLEAN); // ZeroOrMore Rule
194
parent.Token.UpdateRange(node.Token);
195
} // NonTerminalSymbol: BooleanExpr
197
private void ParseCompareExpr(ParseNode parent) // NonTerminalSymbol: CompareExpr
201
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.CompareExpr), "CompareExpr");
202
parent.Nodes.Add(node);
206
ParseAddExpr(node); // NonTerminal Rule: AddExpr
209
tok = scanner.LookAhead(TokenType.COMPARE); // ZeroOrMore Rule
210
while (tok.Type == TokenType.COMPARE)
214
tok = scanner.Scan(TokenType.COMPARE); // Terminal Rule: COMPARE
215
if (tok.Type != TokenType.COMPARE)
216
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.COMPARE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
217
n = node.CreateNode(tok, tok.ToString() );
218
node.Token.UpdateRange(tok);
222
ParseAddExpr(node); // NonTerminal Rule: AddExpr
223
tok = scanner.LookAhead(TokenType.COMPARE); // ZeroOrMore Rule
226
parent.Token.UpdateRange(node.Token);
227
} // NonTerminalSymbol: CompareExpr
229
private void ParseAddExpr(ParseNode parent) // NonTerminalSymbol: AddExpr
233
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.AddExpr), "AddExpr");
234
parent.Nodes.Add(node);
238
ParseMultExpr(node); // NonTerminal Rule: MultExpr
241
tok = scanner.LookAhead(TokenType.PLUSMINUS); // ZeroOrMore Rule
242
while (tok.Type == TokenType.PLUSMINUS)
246
tok = scanner.Scan(TokenType.PLUSMINUS); // Terminal Rule: PLUSMINUS
247
if (tok.Type != TokenType.PLUSMINUS)
248
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.PLUSMINUS.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
249
n = node.CreateNode(tok, tok.ToString() );
250
node.Token.UpdateRange(tok);
254
ParseMultExpr(node); // NonTerminal Rule: MultExpr
255
tok = scanner.LookAhead(TokenType.PLUSMINUS); // ZeroOrMore Rule
258
parent.Token.UpdateRange(node.Token);
259
} // NonTerminalSymbol: AddExpr
261
private void ParseMultExpr(ParseNode parent) // NonTerminalSymbol: MultExpr
265
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.MultExpr), "MultExpr");
266
parent.Nodes.Add(node);
270
ParsePowerExpr(node); // NonTerminal Rule: PowerExpr
273
tok = scanner.LookAhead(TokenType.MULTDIV); // ZeroOrMore Rule
274
while (tok.Type == TokenType.MULTDIV)
278
tok = scanner.Scan(TokenType.MULTDIV); // Terminal Rule: MULTDIV
279
if (tok.Type != TokenType.MULTDIV)
280
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.MULTDIV.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
281
n = node.CreateNode(tok, tok.ToString() );
282
node.Token.UpdateRange(tok);
286
ParsePowerExpr(node); // NonTerminal Rule: PowerExpr
287
tok = scanner.LookAhead(TokenType.MULTDIV); // ZeroOrMore Rule
290
parent.Token.UpdateRange(node.Token);
291
} // NonTerminalSymbol: MultExpr
293
private void ParsePowerExpr(ParseNode parent) // NonTerminalSymbol: PowerExpr
297
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.PowerExpr), "PowerExpr");
298
parent.Nodes.Add(node);
302
ParseAtom(node); // NonTerminal Rule: Atom
305
tok = scanner.LookAhead(TokenType.POWER); // ZeroOrMore Rule
306
while (tok.Type == TokenType.POWER)
310
tok = scanner.Scan(TokenType.POWER); // Terminal Rule: POWER
311
if (tok.Type != TokenType.POWER)
312
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.POWER.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
313
n = node.CreateNode(tok, tok.ToString() );
314
node.Token.UpdateRange(tok);
318
ParseAtom(node); // NonTerminal Rule: Atom
319
tok = scanner.LookAhead(TokenType.POWER); // ZeroOrMore Rule
322
parent.Token.UpdateRange(node.Token);
323
} // NonTerminalSymbol: PowerExpr
325
private void ParseParams(ParseNode parent) // NonTerminalSymbol: Params
329
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Params), "Params");
330
parent.Nodes.Add(node);
334
tok = scanner.LookAhead(TokenType.TRUE, TokenType.FALSE, TokenType.NULL, TokenType.INTEGER, TokenType.NUMBER, TokenType.STRING, TokenType.BROPEN, TokenType.IDENTIFIER, TokenType.ARRAYNAME, TokenType.METHODNAME, TokenType.IF, TokenType.UNARY); // Option Rule
335
if (tok.Type == TokenType.TRUE
336
|| tok.Type == TokenType.FALSE
337
|| tok.Type == TokenType.NULL
338
|| tok.Type == TokenType.INTEGER
339
|| tok.Type == TokenType.NUMBER
340
|| tok.Type == TokenType.STRING
341
|| tok.Type == TokenType.BROPEN
342
|| tok.Type == TokenType.IDENTIFIER
343
|| tok.Type == TokenType.ARRAYNAME
344
|| tok.Type == TokenType.METHODNAME
345
|| tok.Type == TokenType.IF
346
|| tok.Type == TokenType.UNARY)
348
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
352
tok = scanner.LookAhead(TokenType.COMMA); // ZeroOrMore Rule
353
while (tok.Type == TokenType.COMMA)
357
tok = scanner.Scan(TokenType.COMMA); // Terminal Rule: COMMA
358
if (tok.Type != TokenType.COMMA)
359
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.COMMA.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
360
n = node.CreateNode(tok, tok.ToString() );
361
node.Token.UpdateRange(tok);
365
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
366
tok = scanner.LookAhead(TokenType.COMMA); // ZeroOrMore Rule
369
parent.Token.UpdateRange(node.Token);
370
} // NonTerminalSymbol: Params
372
private void ParseMethod(ParseNode parent) // NonTerminalSymbol: Method
376
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Method), "Method");
377
parent.Nodes.Add(node);
381
tok = scanner.Scan(TokenType.METHODNAME); // Terminal Rule: METHODNAME
382
if (tok.Type != TokenType.METHODNAME)
383
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.METHODNAME.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
384
n = node.CreateNode(tok, tok.ToString() );
385
node.Token.UpdateRange(tok);
389
tok = scanner.Scan(TokenType.BROPEN); // Terminal Rule: BROPEN
390
if (tok.Type != TokenType.BROPEN)
391
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BROPEN.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
392
n = node.CreateNode(tok, tok.ToString() );
393
node.Token.UpdateRange(tok);
397
tok = scanner.LookAhead(TokenType.TRUE, TokenType.FALSE, TokenType.NULL, TokenType.INTEGER, TokenType.NUMBER, TokenType.STRING, TokenType.BROPEN, TokenType.IDENTIFIER, TokenType.ARRAYNAME, TokenType.METHODNAME, TokenType.IF, TokenType.UNARY, TokenType.COMMA); // Option Rule
398
if (tok.Type == TokenType.TRUE
399
|| tok.Type == TokenType.FALSE
400
|| tok.Type == TokenType.NULL
401
|| tok.Type == TokenType.INTEGER
402
|| tok.Type == TokenType.NUMBER
403
|| tok.Type == TokenType.STRING
404
|| tok.Type == TokenType.BROPEN
405
|| tok.Type == TokenType.IDENTIFIER
406
|| tok.Type == TokenType.ARRAYNAME
407
|| tok.Type == TokenType.METHODNAME
408
|| tok.Type == TokenType.IF
409
|| tok.Type == TokenType.UNARY
410
|| tok.Type == TokenType.COMMA)
412
ParseParams(node); // NonTerminal Rule: Params
416
tok = scanner.Scan(TokenType.BRCLOSE); // Terminal Rule: BRCLOSE
417
if (tok.Type != TokenType.BRCLOSE)
418
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BRCLOSE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
419
n = node.CreateNode(tok, tok.ToString() );
420
node.Token.UpdateRange(tok);
423
parent.Token.UpdateRange(node.Token);
424
} // NonTerminalSymbol: Method
426
private void ParseArray(ParseNode parent) // NonTerminalSymbol: Array
430
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Array), "Array");
431
parent.Nodes.Add(node);
435
tok = scanner.Scan(TokenType.ARRAYNAME); // Terminal Rule: ARRAYNAME
436
if (tok.Type != TokenType.ARRAYNAME)
437
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.ARRAYNAME.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
438
n = node.CreateNode(tok, tok.ToString() );
439
node.Token.UpdateRange(tok);
443
tok = scanner.Scan(TokenType.SBOPEN); // Terminal Rule: SBOPEN
444
if (tok.Type != TokenType.SBOPEN)
445
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SBOPEN.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
446
n = node.CreateNode(tok, tok.ToString() );
447
node.Token.UpdateRange(tok);
451
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
454
tok = scanner.Scan(TokenType.SBCLOSE); // Terminal Rule: SBCLOSE
455
if (tok.Type != TokenType.SBCLOSE)
456
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.SBCLOSE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
457
n = node.CreateNode(tok, tok.ToString() );
458
node.Token.UpdateRange(tok);
461
parent.Token.UpdateRange(node.Token);
462
} // NonTerminalSymbol: Array
464
private void ParseQualifiedName(ParseNode parent) // NonTerminalSymbol: QualifiedName
468
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.QualifiedName), "QualifiedName");
469
parent.Nodes.Add(node);
473
ParseIdentifier(node); // NonTerminal Rule: Identifier
476
tok = scanner.LookAhead(TokenType.DOT); // ZeroOrMore Rule
477
while (tok.Type == TokenType.DOT)
481
tok = scanner.Scan(TokenType.DOT); // Terminal Rule: DOT
482
if (tok.Type != TokenType.DOT)
483
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.DOT.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
484
n = node.CreateNode(tok, tok.ToString() );
485
node.Token.UpdateRange(tok);
489
ParseIdentifier(node); // NonTerminal Rule: Identifier
490
tok = scanner.LookAhead(TokenType.DOT); // ZeroOrMore Rule
493
parent.Token.UpdateRange(node.Token);
494
} // NonTerminalSymbol: QualifiedName
496
private void ParseUnaryExpr(ParseNode parent) // NonTerminalSymbol: UnaryExpr
500
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.UnaryExpr), "UnaryExpr");
501
parent.Nodes.Add(node);
505
tok = scanner.Scan(TokenType.UNARY); // Terminal Rule: UNARY
506
if (tok.Type != TokenType.UNARY)
507
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.UNARY.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
508
n = node.CreateNode(tok, tok.ToString() );
509
node.Token.UpdateRange(tok);
513
ParseAtom(node); // NonTerminal Rule: Atom
515
parent.Token.UpdateRange(node.Token);
516
} // NonTerminalSymbol: UnaryExpr
518
private void ParseAtom(ParseNode parent) // NonTerminalSymbol: Atom
522
ParseNode node = parent.CreateNode(scanner.GetToken(TokenType.Atom), "Atom");
523
parent.Nodes.Add(node);
525
tok = scanner.LookAhead(TokenType.TRUE, TokenType.FALSE, TokenType.NULL, TokenType.INTEGER, TokenType.NUMBER, TokenType.STRING, TokenType.BROPEN, TokenType.IDENTIFIER, TokenType.ARRAYNAME, TokenType.METHODNAME, TokenType.IF, TokenType.UNARY); // Choice Rule
529
tok = scanner.Scan(TokenType.TRUE); // Terminal Rule: TRUE
530
if (tok.Type != TokenType.TRUE)
531
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.TRUE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
532
n = node.CreateNode(tok, tok.ToString() );
533
node.Token.UpdateRange(tok);
536
case TokenType.FALSE:
537
tok = scanner.Scan(TokenType.FALSE); // Terminal Rule: FALSE
538
if (tok.Type != TokenType.FALSE)
539
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.FALSE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
540
n = node.CreateNode(tok, tok.ToString() );
541
node.Token.UpdateRange(tok);
545
tok = scanner.Scan(TokenType.NULL); // Terminal Rule: NULL
546
if (tok.Type != TokenType.NULL)
547
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.NULL.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
548
n = node.CreateNode(tok, tok.ToString() );
549
node.Token.UpdateRange(tok);
552
case TokenType.INTEGER:
553
tok = scanner.Scan(TokenType.INTEGER); // Terminal Rule: INTEGER
554
if (tok.Type != TokenType.INTEGER)
555
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.INTEGER.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
556
n = node.CreateNode(tok, tok.ToString() );
557
node.Token.UpdateRange(tok);
560
case TokenType.NUMBER:
561
tok = scanner.Scan(TokenType.NUMBER); // Terminal Rule: NUMBER
562
if (tok.Type != TokenType.NUMBER)
563
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.NUMBER.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
564
n = node.CreateNode(tok, tok.ToString() );
565
node.Token.UpdateRange(tok);
568
case TokenType.STRING:
569
tok = scanner.Scan(TokenType.STRING); // Terminal Rule: STRING
570
if (tok.Type != TokenType.STRING)
571
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.STRING.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
572
n = node.CreateNode(tok, tok.ToString() );
573
node.Token.UpdateRange(tok);
576
case TokenType.BROPEN:
579
tok = scanner.Scan(TokenType.BROPEN); // Terminal Rule: BROPEN
580
if (tok.Type != TokenType.BROPEN)
581
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BROPEN.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
582
n = node.CreateNode(tok, tok.ToString() );
583
node.Token.UpdateRange(tok);
587
ParseBooleanExpr(node); // NonTerminal Rule: BooleanExpr
590
tok = scanner.Scan(TokenType.BRCLOSE); // Terminal Rule: BRCLOSE
591
if (tok.Type != TokenType.BRCLOSE)
592
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found. Expected " + TokenType.BRCLOSE.ToString(), 0x1001, 0, tok.StartPos, tok.StartPos, tok.Length));
593
n = node.CreateNode(tok, tok.ToString() );
594
node.Token.UpdateRange(tok);
597
case TokenType.IDENTIFIER:
598
case TokenType.ARRAYNAME:
599
case TokenType.METHODNAME:
600
ParseQualifiedName(node); // NonTerminal Rule: QualifiedName
603
ParseConditional(node); // NonTerminal Rule: Conditional
605
case TokenType.UNARY:
606
ParseUnaryExpr(node); // NonTerminal Rule: UnaryExpr
609
tree.Errors.Add(new ParseError("Unexpected token '" + tok.Text.Replace("\n", "") + "' found.", 0x0002, 0, tok.StartPos, tok.StartPos, tok.Length));
613
parent.Token.UpdateRange(node.Token);
614
} // NonTerminalSymbol: Atom