public void TestExpressionSyntaxError() { ExpressionParser exprParser = new ExpressionParser(); ParserBuilder <ExpressionToken, int> builder = new ParserBuilder <ExpressionToken, int>(); Parser <ExpressionToken, int> Parser = builder.BuildParser(exprParser, ParserType.LL_RECURSIVE_DESCENT, "expression").Result; ParseResult <ExpressionToken, int> r = Parser.Parse(" 2 + 3 + + 2"); Assert.True(r.IsError); Assert.NotNull(r.Errors); Assert.True(r.Errors.Count > 0); Assert.IsAssignableFrom <UnexpectedTokenSyntaxError <ExpressionToken> >(r.Errors[0]); UnexpectedTokenSyntaxError <ExpressionToken> error = r.Errors[0] as UnexpectedTokenSyntaxError <ExpressionToken>; Assert.Equal(ExpressionToken.PLUS, error.UnexpectedToken.TokenID); Assert.Equal(1, error.Line); Assert.Equal(8, error.Column); }
public void TestJsonSyntaxErrorMissingLastClosingBracket() { JSONParser jsonParser = new JSONParser(); ParserBuilder <JsonToken, JSon> builder = new ParserBuilder <JsonToken, JSon>(); Parser <JsonToken, JSon> parser = builder.BuildParser(jsonParser, ParserType.LL_RECURSIVE_DESCENT, "root").Result; string source = "{"; ParseResult <JsonToken, JSon> r = parser.Parse(source); Assert.True(r.IsError); Assert.Null(r.Result); Assert.NotNull(r.Errors); Assert.True(r.Errors.Count > 0); Assert.IsType <UnexpectedTokenSyntaxError <JsonToken> >(r.Errors[0]); UnexpectedTokenSyntaxError <JsonToken> error = r.Errors[0] as UnexpectedTokenSyntaxError <JsonToken>; Assert.Equal((JsonToken)0, error?.UnexpectedToken.TokenID); Assert.True(error.ErrorMessage.Contains("end of stream")); Assert.Equal(1, error?.Line); Assert.Equal(2, error?.Column); }
public void TestJsonSyntaxError() { JSONParser jsonParser = new JSONParser(); ParserBuilder <JsonToken, JSon> builder = new ParserBuilder <JsonToken, JSon>(); Parser <JsonToken, JSon> parser = builder.BuildParser(jsonParser, ParserType.LL_RECURSIVE_DESCENT, "root").Result; string source = @"{ 'one': 1, 'bug':{,} }".Replace("'", "\""); ParseResult <JsonToken, JSon> r = parser.Parse(source); Assert.True(r.IsError); Assert.Null(r.Result); Assert.NotNull(r.Errors); Assert.True(r.Errors.Count > 0); Assert.IsType <UnexpectedTokenSyntaxError <JsonToken> >(r.Errors[0]); UnexpectedTokenSyntaxError <JsonToken> error = r.Errors[0] as UnexpectedTokenSyntaxError <JsonToken>; Assert.Equal(JsonToken.COMMA, error?.UnexpectedToken.TokenID); Assert.Equal(2, error?.Line); Assert.Equal(13, error?.Column); }