예제 #1
0
        private static (IParseTree tree, string parseErrorMessage) TryParseExpression(string expression)
        {
            ICharStream     stream = CharStreams.fromstring(expression);
            PolynomialLexer lexer  = new PolynomialLexer(stream);

            ITokenStream     tokens = new CommonTokenStream(lexer);
            PolynomialParser parser = new PolynomialParser(tokens)
            {
                BuildParseTree = true
            };

            parser.RemoveErrorListeners();
            parser.AddErrorListener(new PolynomialErrorListener());

            try
            {
                var tree = parser.parse();
                return(tree, string.Empty);
            }
            catch (ParseCanceledException pce)
            {
                return(null, pce.Message);
            }
        }