예제 #1
0
        public void ValidExpressionContainsNoUnrecognizedTokens()
        {
            TheLexer lexer  = new TheLexer();
            var      tokens = lexer.GetTokens("3 + 5");

            Assert.AreEqual(0, tokens.Count(p => p.GetType() == typeof(UnrecognizedToken)));
        }
예제 #2
0
        public void UnrecognizedTokenDetected()
        {
            TheLexer lexer  = new TheLexer();
            var      tokens = lexer.GetTokens("3 xyz 5");

            Assert.AreEqual(1, tokens.Count(p => p.GetType() == typeof(UnrecognizedToken)));
        }
예제 #3
0
        public ParserState(string input)
        {
            var inputStream = new AntlrInputStream(input);

            lexer = new TheLexer(inputStream);
            var commonTokenStream = new CommonTokenStream(lexer);

            parser = new TheParser(commonTokenStream);

            errorListener = new ErrorListener(commonTokenStream);
            lexer.RemoveErrorListeners();
            parser.RemoveErrorListeners();
            parser.AddErrorListener(errorListener);
        }
예제 #4
0
        /// <summary>
        /// Will convert the input to a Regular Expression String, but will not enclose it with reuired options. Used for testing purposes.
        /// </summary>
        /// <param name="input">A string in Impression format.</param>
        public static string ConvertNoOptions(string input)
        {
            var inputStream       = new AntlrInputStream(input);
            var lexer             = new TheLexer(inputStream);
            var commonTokenStream = new CommonTokenStream(lexer);
            var parser            = new TheParser(commonTokenStream);

            var errorListener = new ErrorListener(commonTokenStream);

            lexer.RemoveErrorListeners();
            parser.RemoveErrorListeners();
            parser.AddErrorListener(errorListener);

            var context = parser.expressionSeq();
            var visitor = new Visitor(errorListener);
            var result  = visitor.Visit(context);

            if (visitor.errorListener.hadErrors)
            {
                throw new InvalidOperationException(visitor.errorListener.PrintErrors());
            }

            return(result);
        }