From 89e84f0a83c1716a9620e449f2bc734b9af2b24e Mon Sep 17 00:00:00 2001 From: Justyna Ilczuk Date: Sat, 22 Dec 2012 20:15:34 +0100 Subject: [PATCH] Logical expressions are successfully implemented. --- Sencha-lang/AST/ProgramNode.cpp | 3 +-- Sencha-lang/Tests/TestParser.cpp | 11 +++-------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/Sencha-lang/AST/ProgramNode.cpp b/Sencha-lang/AST/ProgramNode.cpp index 0a5240a..d22de22 100644 --- a/Sencha-lang/AST/ProgramNode.cpp +++ b/Sencha-lang/AST/ProgramNode.cpp @@ -38,9 +38,8 @@ void ProgramNode::execute_last() SenchaObject ProgramNode::evaluate_last() { - std::cout << "Program evaluates last statement:"; + SenchaObject result = (children[children.size() - 1])->evaluate(); - std::cout << "It's value is: " << result.repr() << std::endl; return result; } diff --git a/Sencha-lang/Tests/TestParser.cpp b/Sencha-lang/Tests/TestParser.cpp index 649d576..3f432c9 100644 --- a/Sencha-lang/Tests/TestParser.cpp +++ b/Sencha-lang/Tests/TestParser.cpp @@ -8,12 +8,12 @@ #include "TestParser.h" TestParser::TestParser() { - // TODO Auto-generated constructor stub + } TestParser::~TestParser() { - // TODO Auto-generated destructor stub + } std::string TestParser::test_parsing_and_evaluating_logical_expressions() @@ -23,16 +23,11 @@ std::string TestParser::test_parsing_and_evaluating_logical_expressions() Lexer lexer; Context context; Parser parser(&context); - ASTInspector inspector; for(auto logical_case : logical_inputs) { auto tokens = lexer.parse_line(logical_case.first); parser.add_tokens(tokens); - cout << parser.show_tokens(); parser.interpret(); - inspector.visit(parser.program); - std::cout << inspector.get_report(); - inspector.forget_everything(); SenchaObject value = parser.program->evaluate(); parser.erase_all(); muu_assert("Logical value isn't correct", value.truthy == logical_case.second); @@ -53,7 +48,7 @@ std::vector TestParser::prepare_logical_input() logical_inputs.push_back(InputOutputPair("true or false", true)); logical_inputs.push_back(InputOutputPair("true or true", true)); logical_inputs.push_back(InputOutputPair("(true or false) and (true or false)", true)); - logical_inputs.push_back(InputOutputPair("7 + 2 > 55 or 4-5 == -1", true)); + logical_inputs.push_back(InputOutputPair("7 + 2 > 55 or 6-5 == 1", true)); return logical_inputs; }