Exemple #1
0
        private static void testJSONLexer()
        {
            var builder = new ParserBuilder <JsonToken, JSon>();
            var parser  = builder.BuildParser(new JSONParser(), ParserType.EBNF_LL_RECURSIVE_DESCENT, "root");

            var source = "{ \"k\" : 1;\"k2\" : 1.1;\"k3\" : null;\"k4\" : false}";
            //source = File.ReadAllText("test.json");
            var lexer = new JSONLexer();
            var sw    = new Stopwatch();

            sw.Start();
            var lexresult = lexer.Tokenize(source);

            if (lexresult.IsOk)
            {
                var tokens = lexresult.Tokens;
                sw.Stop();
                Console.WriteLine($"hard coded lexer {tokens.Count()} tokens in {sw.ElapsedMilliseconds}ms");
                var sw2   = new Stopwatch();
                var start = DateTime.Now.Millisecond;
                sw2.Start();
                lexresult = parser.Result.Lexer.Tokenize(source);
                if (lexresult.IsOk)
                {
                    tokens = lexresult.Tokens;
                    sw2.Stop();
                    var end = DateTime.Now.Millisecond;
                    Console.WriteLine(
                        $"old lexer {tokens.Count()} tokens in {sw2.ElapsedMilliseconds}ms / {end - start}ms");
                }
            }
        }
        /// <summary>
        /// Checks all pattern match attributes against specified member info until first match found
        /// </summary>
        public static bool Check(MemberInfo info, JSONLexer content)
        {
            var attrs = info.GetCustomAttributes(typeof(JSONPatternMatchAttribute), true).Cast<JSONPatternMatchAttribute>();
            foreach(var attr in attrs)
                if (attr.Match(content)) return true;

            return false;
        }
Exemple #3
0
        private static object read(ISourceText source)
        {
            var lexer  = new JSONLexer(source, throwErrors: true);
            var parser = new JSONParser(lexer, throwErrors: true);

            parser.Parse();

            return(parser.ResultContext.ResultObject);
        }
        public DataItem FromFile(Stream dataFile)
        {
            ICharStream          chars             = CharStreams.fromStream(dataFile);
            JSONLexer            jsonLexer         = new JSONLexer(chars);
            CommonTokenStream    commonTokenStream = new CommonTokenStream(jsonLexer);
            JSONParser           jsonParser        = new JSONParser(commonTokenStream);
            JSONConverterVisitor visitor           = new JSONConverterVisitor();

            return(visitor.VisitJson(jsonParser.json()));
        }
Exemple #5
0
        private static IJsonable parse(ICharStream ins)
        {
            JSONLexer lexer = new JSONLexer(ins);

            CommonTokenStream tokens = new CommonTokenStream(lexer);
            JSONParser        parser = new JSONParser(tokens);
            JsonContext       ctx    = parser.json();
            ParseTreeWalker   walker = new ParseTreeWalker();
            JSONAnsonListener lstner = new JSONAnsonListener();

            walker.Walk(lstner, ctx);
            return(lstner.ParsedEnvelope());
        }
        private void ParseJson(string input)
        {
            AntlrInputStream stream = new AntlrInputStream(input);
            ITokenSource     lexer  = new JSONLexer(stream);
            ITokenStream     tokens = new CommonTokenStream(lexer);
            JSONParser       parser = new JSONParser(tokens);

            parser.BuildParseTree = true;
            JSONParser.JsonContext tree = parser.json();
            if (tree != null)
            {
                var builder = new TreeBuilder(parser, tree, treeModel);
                builder.Build();
            }
        }
Exemple #7
0
        public ParserRuleContext parse(IEnumerable <SyntaxToken> tokens, Scope scope, int offset)
        {
            var text = RoslynCompiler.TokensToString(tokens);
            AntlrInputStream stream      = new AntlrInputStream(text);
            ITokenSource     lexer       = new JSONLexer(stream);
            ITokenStream     tokenStream = new CommonTokenStream(lexer);
            JSONParser       parser      = new JSONParser(tokenStream);

            parser.AddErrorListener(new AntlrErrors <IToken>(scope, offset));
            var result = parser.json();

            if (parser.NumberOfSyntaxErrors > 0)
            {
                return(null);
            }

            return(result);
        }
Exemple #8
0
 public JSONToken(JSONLexer lexer, JSONTokenType type, SourcePosition startPos, SourcePosition endPos, string text, object value = null)
     : base(lexer, startPos, endPos, text, value)
 {
     Type = type;
 }
 /// <summary>
 /// Override to perform actual pattern matching, i.e. the one that uses FSM
 /// </summary>
 public abstract bool Match(JSONLexer content);