|
1 |
| -using System; |
2 |
| -using System.Linq; |
| 1 | +using System.Linq; |
3 | 2 | using csly.indentedWhileLang.compiler;
|
4 | 3 | using csly.indentedWhileLang.parser;
|
5 | 4 | using csly.whileLang.interpreter;
|
|
9 | 8 | using sly.lexer;
|
10 | 9 | using sly.parser;
|
11 | 10 | using sly.parser.generator;
|
| 11 | +using sly.parser.generator.visitor; |
12 | 12 | using Xunit;
|
13 | 13 |
|
14 | 14 | namespace ParserTests.samples
|
@@ -414,9 +414,36 @@ public void TestMissingUIndents()
|
414 | 414 | if false then
|
415 | 415 | x := 28";
|
416 | 416 | var result = parser.Parse(program);
|
| 417 | + var root = result.Result; |
| 418 | + Check.That(root).IsInstanceOf<SequenceStatement>(); |
| 419 | + var seq = result.Result as SequenceStatement; |
| 420 | + var dump = seq.Dump(" "); |
| 421 | + Check.That(seq.Statements).CountIs(1); |
| 422 | + Check.That(seq.Statements[0]).IsInstanceOf<IfStatement>(); |
417 | 423 | Check.That(result).IsOkParsing();
|
418 | 424 | }
|
419 | 425 |
|
| 426 | + [Fact] |
| 427 | + public void TestIssue413_incompleteProgram() |
| 428 | + { |
| 429 | + var buildResult = buildParser(); |
| 430 | + var parser = buildResult.Result; |
| 431 | + var program = @" |
| 432 | +if |
| 433 | +"; |
| 434 | + var result = parser.Parse(program); |
| 435 | + Check.That(result).Not.IsOkParsing(); |
| 436 | + Check.That(result.Errors).CountIs(1); |
| 437 | + var error = result.Errors.First(); |
| 438 | + Check.That(error.ErrorType).IsEqualTo(ErrorType.UnexpectedEOS); |
| 439 | + var unexpectedEosError = error as UnexpectedTokenSyntaxError<IndentedWhileTokenGeneric>; |
| 440 | + Check.That(unexpectedEosError).IsNotNull(); |
| 441 | + Check.That(unexpectedEosError.ExpectedTokens.Extracting(x => x.TokenId)).IsEquivalentTo( |
| 442 | + IndentedWhileTokenGeneric.MINUS,IndentedWhileTokenGeneric.NOT, IndentedWhileTokenGeneric.QUESTION, |
| 443 | + IndentedWhileTokenGeneric.OPEN_PAREN,IndentedWhileTokenGeneric.OPEN_FSTRING,IndentedWhileTokenGeneric.TRUE, |
| 444 | + IndentedWhileTokenGeneric.INT,IndentedWhileTokenGeneric.FALSE,IndentedWhileTokenGeneric.IDENTIFIER); |
| 445 | + } |
| 446 | + |
420 | 447 | [Fact]
|
421 | 448 | public void TestIndentationError_emptyIndentLine()
|
422 | 449 | {
|
|
0 commit comments