public void Verify_postfix_lexer_logic()
        {
            const string expression = "true true && false ||";
            var lexer = new PostfixLexer();

            var tokens = lexer.Analyze(expression, false);
            Assert.AreEqual(tokens.Length, 9);
            Assert.AreEqual(tokens[0], "true");
            Assert.AreEqual(tokens[1], " ");
            Assert.AreEqual(tokens[2], "true");
            Assert.AreEqual(tokens[3], " ");
            Assert.AreEqual(tokens[4], "&&");
            Assert.AreEqual(tokens[5], " ");
            Assert.AreEqual(tokens[6], "false");
            Assert.AreEqual(tokens[7], " ");
            Assert.AreEqual(tokens[8], "||");

            tokens = lexer.Analyze(expression, true);
            Assert.AreEqual(tokens.Length, 5);
            Assert.AreEqual(tokens[0], "true");
            Assert.AreEqual(tokens[1], "true");
            Assert.AreEqual(tokens[2], "&&");
            Assert.AreEqual(tokens[3], "false");
            Assert.AreEqual(tokens[4], "||");

            try
            {
                lexer.Analyze("true && (false)", false);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.IsTrue(e is ArgumentException);
            }

            try
            {
                lexer.Analyze("true + 7", false);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.IsTrue(e is ArgumentException);
            }
        }
コード例 #2
0
 public PostfixParser()
 {
     _postfixLexer = new PostfixLexer();
 }