示例#1
0
 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}");
     }
 }
示例#2
0
        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}");
        }
示例#3
0
        public JsonGenericTests()
        {
            var jsonParser = new EbnfJsonGenericParser();
            var builder    = new ParserBuilder <JsonTokenGeneric, JSon>();

            Parser = builder.BuildParser(jsonParser, ParserType.EBNF_LL_RECURSIVE_DESCENT, "root").Result;
        }
示例#4
0
文件: Program.cs 项目: fossabot/csly
        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()));
            }


            ;
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }