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); } }
public PostfixParser() { _postfixLexer = new PostfixLexer(); }