示例#1
0
        protected static IParseTree AntlrParse(string expression)
        {
            var inputStream = new AntlrInputStream(expression);
            var lexer       = new ExpressionLexer(inputStream);
            var tokenStream = new CommonTokenStream(lexer);
            var parser      = new ExpressionParser(tokenStream);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(ParserErrorListener.Instance);
            parser.BuildParseTree = true;
            return(parser.file()?.expression());
        }
示例#2
0
文件: Traveler.cs 项目: dongtx/D7
        internal Result Execute(string formula, out IParseTree tree)
        {
            ErrorListener listener = new ErrorListener();

            listener.Owner        = Owner;
            listener.ErrorOutput += ErrorOutput;

            var stream = new AntlrInputStream(formula);
            var lexer  = new ExpressionLexer(stream);
            var tokens = new CommonTokenStream(lexer);
            var parser = new ExpressionParser(tokens);

            parser.AddErrorListener(listener);

            tree = parser.program();

            return(Visit(tree));
        }