public static void testJSON() { try { var instance = new EbnfJsonGenericParser(); var builder = new ParserBuilder <JsonTokenGeneric, JSon>(); var buildResult = builder.BuildParser(instance, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root"); // if (buildResult.IsOk) // { // Console.WriteLine("parser built."); // var parser = buildResult.Result; // var content = File.ReadAllText("test.json"); // Console.WriteLine("test.json read."); // var jsonResult = parser.Parse(content); // Console.WriteLine("json parse done."); // if (jsonResult.IsOk) // { // Console.WriteLine("YES !"); // } // else // { // Console.WriteLine("Ooh no !"); // } // Console.WriteLine("Done."); // // } // else // { // buildResult.Errors.ForEach(e => Console.WriteLine(e.Message)); // } } catch (Exception e) { Console.WriteLine($"ERROR {e.Message} : \n {e.StackTrace}"); } }
public void Setup() { Console.WriteLine(("SETUP")); Console.ReadLine(); content = File.ReadAllText("test.json"); Console.WriteLine("json read."); var jsonParser = new EbnfJsonGenericParser(); var builder = new ParserBuilder <JsonTokenGeneric, JSon>(); var result = builder.BuildParser(jsonParser, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root"); Console.WriteLine("parser built."); if (result.IsError) { Console.WriteLine("ERROR"); result.Errors.ForEach(e => Console.WriteLine(e)); } else { Console.WriteLine("parser ok"); BenchedParser = result.Result; } Console.WriteLine($"parser {BenchedParser}"); }
public JsonGenericTests() { var jsonParser = new EbnfJsonGenericParser(); var builder = new ParserBuilder <JsonTokenGeneric, JSon>(); Parser = builder.BuildParser(jsonParser, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root").Result; }
private static void testGenericLexerJson() { var sw = new Stopwatch(); var source = File.ReadAllText("test.json"); var wp = new EbnfJsonParser(); sw.Reset(); sw.Start(); var wbuilder = new ParserBuilder <JsonToken, JSon>(); var buildResult = wbuilder.BuildParser(wp, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root"); var parser = buildResult.Result; var r = parser.Parse(source); sw.Stop(); Console.WriteLine($"json regex parser : {sw.ElapsedMilliseconds} ms"); if (r.IsError) { r.Errors.ForEach(e => Console.WriteLine(e.ToString())); } sw.Reset(); sw.Start(); wbuilder = new ParserBuilder <JsonToken, JSon>(); buildResult = wbuilder.BuildParser(wp, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root"); parser = buildResult.Result; parser.Lexer = new JSONLexer(); r = parser.Parse(source); Console.WriteLine($"json hard coded lexer : {sw.ElapsedMilliseconds} ms"); sw.Stop(); sw.Reset(); sw.Start(); var wpg = new EbnfJsonGenericParser(); var wbuilderGen = new ParserBuilder <JsonTokenGeneric, JSon>(); var buildResultgen = wbuilderGen.BuildParser(wpg, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root"); var parserGen = buildResultgen.Result; var rGen = parserGen.Parse(source); sw.Stop(); Console.WriteLine($"json generic parser : {sw.ElapsedMilliseconds} ms"); if (rGen.IsError) { rGen.Errors.ForEach(e => Console.WriteLine(e.ToString())); } ; }
public void TestErrorMissingClosingBracket() { var jsonParser = new EbnfJsonGenericParser(); var builder = new ParserBuilder <JsonTokenGeneric, JSon>(); var parserTest = builder.BuildParser(jsonParser, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root").Result; ParseResult <JsonTokenGeneric, JSon> r = null; try { r = parserTest.Parse("{"); } catch (Exception e) { var stack = e.StackTrace; var message = e.Message; } Assert.True(r.IsError); }
public void TestJsonEbnfSyntaxMissingLastClosingBracket() { EbnfJsonGenericParser jsonParser = new EbnfJsonGenericParser(); ParserBuilder <JsonTokenGeneric, JSon> builder = new ParserBuilder <JsonTokenGeneric, JSon>(); Parser <JsonTokenGeneric, JSon> Parser = builder.BuildParser(jsonParser, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root").Result; string source = "{"; ParseResult <JsonTokenGeneric, 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 <JsonTokenGeneric> >(r.Errors[0]); UnexpectedTokenSyntaxError <JsonTokenGeneric> error = r.Errors[0] as UnexpectedTokenSyntaxError <JsonTokenGeneric>; Assert.Equal((JsonTokenGeneric)0, error?.UnexpectedToken.TokenID); Assert.True(error.ErrorMessage.Contains("end of stream")); Assert.Equal(0, error?.Line); Assert.Equal(1, error?.Column); }