Exemplo n.º 1
0
        protected static IParseTree AntlrParse(string expression)
        {
            var inputStream = new AntlrInputStream(expression);
            var lexer       = new ExpressionAntlrLexer(inputStream);

            lexer.RemoveErrorListeners();
            var tokenStream = new CommonTokenStream(lexer);
            var parser      = new ExpressionAntlrParser(tokenStream);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(ParserErrorListener.Instance);
            parser.BuildParseTree = true;
            return(parser.file()?.expression());
        }
Exemplo n.º 2
0
        protected static IParseTree AntlrParse(string expression)
        {
            if (expressionDict.TryGetValue(expression, out var expressionParseTree))
            {
                return(expressionParseTree);
            }

            var inputStream = new AntlrInputStream(expression);
            var lexer       = new ExpressionAntlrLexer(inputStream);

            lexer.RemoveErrorListeners();
            var tokenStream = new CommonTokenStream(lexer);
            var parser      = new ExpressionAntlrParser(tokenStream);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(ParserErrorListener.Instance);
            parser.BuildParseTree = true;
            var expressionContext = parser.file()?.expression();

            expressionDict.TryAdd(expression, expressionContext);
            return(expressionContext);
        }