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()); }
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); }