Пример #1
0
        public IEnumerable <Node> Parse(UnbufferedTokenStream nTriples)
        {
            var found  = new Dictionary <NodeID, List <KeyValue> >();
            var parser = new parser_grammer.NTRIPLESParser(nTriples);

            parser.BuildParseTree = true;
            parser.AddErrorListener(new ErrorListener());
            parser.AddParseListener(new NtriplesListener(triple =>
            {
                if (found.ContainsKey(triple.Item1))
                {
                    found[triple.Item1].Add(triple.Item2);
                }
                else
                {
                    found.Add(triple.Item1, new List <KeyValue> {
                        triple.Item2
                    });
                }
            }));
            var tc = parser.triples();

            if (tc.exception != null)
            {
                throw tc.exception;
            }

            return(found.Select(kv => new Node(kv.Key, kv.Value)));
        }
Пример #2
0
        public static void Main(string[] args)
        {
            try
            {
                StreamReader input = new StreamReader(args[0]);
//                AntlrInputStream inputStream = new AntlrInputStream(input);
                UnbufferedCharStream inputStream = new UnbufferedCharStream(input);
                FpxLexer             fpxLexer    = new FpxLexer(inputStream);
                fpxLexer.TokenFactory = new CommonTokenFactory(true);
//                CommonTokenStream commonTokenStream = new CommonTokenStream(fpxLexer);
                UnbufferedTokenStream commonTokenStream = new UnbufferedTokenStream(fpxLexer);
                FpxParser             fpxParser         = new FpxParser(commonTokenStream);
//                fpxParser.ErrorHandler = new BailErrorStrategy();
//                fpxParser.BuildParseTree = false;
                List <string>       Errors         = new List <string>();
                GatherErrorListener gErrorListener = new GatherErrorListener(Errors);
                fpxParser.RemoveErrorListeners();
                fpxParser.AddErrorListener(gErrorListener);

                FpxParser.PxfileContext pxFileContext = fpxParser.pxfile();
                FpxVisitor visitor = new FpxVisitor(Errors);

                if (!gErrorListener.AnyNonRecoverableErrors)
                {
                    Console.WriteLine(visitor.Visit(pxFileContext));
                }
                DisplayErrors(Errors);
            } // try
            catch (Exception _e)
            {
                Console.WriteLine("Error: " + _e);
                Console.WriteLine("Error: " + _e.StackTrace);
            } // catch
        }     // Main
Пример #3
0
        public static string GetOwnText(string filename)
        {
            var afs    = new AntlrFileStream(filename);
            var lexer  = new gramLexer(afs);
            var ts     = new UnbufferedTokenStream(lexer);
            var parser = new gramParser(ts);
            var tree   = parser.compileUnit();
            var source = tree.GetText();

            return(source);
        }
Пример #4
0
        public ClassObject parse(string code)
        {
            AntlrInputStream      ips    = new AntlrInputStream(code);
            SomeLanguageLexer     lexer  = new SomeLanguageLexer(ips);
            UnbufferedTokenStream tokens = new UnbufferedTokenStream(lexer);
            SomeLanguageParser    parser = new SomeLanguageParser(tokens);

            ClassListener classListener = new ClassListener();

            parser.classDeclaration().EnterRule(classListener);
            return(classListener.getParsedClass());
        }
Пример #5
0
        public static string GetRules(string code)
        {
            var ais = new AntlrInputStream(code);
            //var lexer = new gramLexer(ais);
            var lexer = new SASLibnamesLexer(ais);
            var ts    = new UnbufferedTokenStream(lexer);
            //var parser = new gramParser(ts);
            var parser = new SASLibnamesParser(ts);
            //var tree = parser.compileUnit();
            var tree = parser.program();

            var listener = new BaseListener <SASLibnamesParser>();
            var walker   = new ParseTreeWalker();

            walker.Walk(listener, tree);
            return(listener.GetRules());
        }
        internal static void ParseInput(ICharStream stream, IParseTreeListener listener)
        {
            // optimized for memory consumption
            var lexer = new VowpalWabbitLexer(stream)
            {
                TokenFactory = new CommonTokenFactory(copyText: true)
            };

            var tokens = new UnbufferedTokenStream(lexer);
            var parser = new VowpalWabbitParser(tokens)
            {
                // Note; don't disable, as it is required to access the line
                // BuildParseTree = false,
            };

            // fast than LL(*)
            parser.Interpreter.PredictionMode = PredictionMode.Sll;

            parser.AddParseListener(listener);
            parser.AddErrorListener(new TestErrorListener());
            parser.start();
        }
Пример #7
0
        public void TestSeek()
        {
            UnbufferedTokenStream stream = new UnbufferedTokenStream(new TokenSource());

            stream.Consume();
            Assert.AreEqual(0, stream.LA(-1));
            Assert.AreEqual(1, stream.LA(1));

            stream.Mark();

            stream.Consume();
            Assert.AreEqual(1, stream.LA(-1));
            Assert.AreEqual(2, stream.LA(1));

            int index = stream.Index;
            stream.Rewind();
            Assert.AreEqual(0, stream.LA(-1));
            Assert.AreEqual(1, stream.LA(1));

            stream.Seek(index);
            Assert.AreEqual(1, stream.LA(-1));
            Assert.AreEqual(2, stream.LA(1));
        }
Пример #8
0
        static void TryFile(string fn)
        {
            var str      = new UnbufferedCharStream(new StreamReader(fn));
            var lexer    = new AbcLexer(str);
            var tokens   = new UnbufferedTokenStream(lexer);
            var parser   = new AbcParser(tokens);
            var listener = new ErrorListener <IToken>(parser, lexer, tokens);

            parser.AddErrorListener(listener);
            lexer.AddErrorListener(new ErrorListener <int>(parser, lexer, tokens));
            parser.BuildParseTree = false;
            lexer.TokenFactory    = new MyCTF();
            var tree = parser.file();

            if (listener.had_error)
            {
                System.Console.WriteLine("error in parse.");
            }
            else
            {
                System.Console.WriteLine("parse completed.");
            }
        }
Пример #9
0
        public void TestSeek()
        {
            UnbufferedTokenStream stream = new UnbufferedTokenStream(new TokenSource());

            stream.Consume();
            Assert.AreEqual(0, stream.LA(-1));
            Assert.AreEqual(1, stream.LA(1));

            stream.Mark();

            stream.Consume();
            Assert.AreEqual(1, stream.LA(-1));
            Assert.AreEqual(2, stream.LA(1));

            int index = stream.Index;

            stream.Rewind();
            Assert.AreEqual(0, stream.LA(-1));
            Assert.AreEqual(1, stream.LA(1));

            stream.Seek(index);
            Assert.AreEqual(1, stream.LA(-1));
            Assert.AreEqual(2, stream.LA(1));
        }