Logical expressions are successfully implemented.
parent
10f3eaf214
commit
89e84f0a83
|
@ -38,9 +38,8 @@ void ProgramNode::execute_last()
|
||||||
|
|
||||||
SenchaObject ProgramNode::evaluate_last()
|
SenchaObject ProgramNode::evaluate_last()
|
||||||
{
|
{
|
||||||
std::cout << "Program evaluates last statement:";
|
|
||||||
SenchaObject result = (children[children.size() - 1])->evaluate();
|
SenchaObject result = (children[children.size() - 1])->evaluate();
|
||||||
std::cout << "It's value is: " << result.repr() << std::endl;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
#include "TestParser.h"
|
#include "TestParser.h"
|
||||||
|
|
||||||
TestParser::TestParser() {
|
TestParser::TestParser() {
|
||||||
// TODO Auto-generated constructor stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TestParser::~TestParser() {
|
TestParser::~TestParser() {
|
||||||
// TODO Auto-generated destructor stub
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string TestParser::test_parsing_and_evaluating_logical_expressions()
|
std::string TestParser::test_parsing_and_evaluating_logical_expressions()
|
||||||
|
@ -23,16 +23,11 @@ std::string TestParser::test_parsing_and_evaluating_logical_expressions()
|
||||||
Lexer lexer;
|
Lexer lexer;
|
||||||
Context context;
|
Context context;
|
||||||
Parser parser(&context);
|
Parser parser(&context);
|
||||||
ASTInspector inspector;
|
|
||||||
for(auto logical_case : logical_inputs)
|
for(auto logical_case : logical_inputs)
|
||||||
{
|
{
|
||||||
auto tokens = lexer.parse_line(logical_case.first);
|
auto tokens = lexer.parse_line(logical_case.first);
|
||||||
parser.add_tokens(tokens);
|
parser.add_tokens(tokens);
|
||||||
cout << parser.show_tokens();
|
|
||||||
parser.interpret();
|
parser.interpret();
|
||||||
inspector.visit(parser.program);
|
|
||||||
std::cout << inspector.get_report();
|
|
||||||
inspector.forget_everything();
|
|
||||||
SenchaObject value = parser.program->evaluate();
|
SenchaObject value = parser.program->evaluate();
|
||||||
parser.erase_all();
|
parser.erase_all();
|
||||||
muu_assert("Logical value isn't correct", value.truthy == logical_case.second);
|
muu_assert("Logical value isn't correct", value.truthy == logical_case.second);
|
||||||
|
@ -53,7 +48,7 @@ std::vector<TestParser::InputOutputPair> TestParser::prepare_logical_input()
|
||||||
logical_inputs.push_back(InputOutputPair("true or false", true));
|
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 true", true));
|
||||||
logical_inputs.push_back(InputOutputPair("(true or false) and (true or false)", 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;
|
return logical_inputs;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue