From 111e5a373e21e1483d3020895f19234f4aeb577a Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Mon, 16 Mar 2015 06:24:59 -0400 Subject: [PATCH] != didn't work either - missed it in the builtins at the top of ASTTransformation.cpp --- src/ASTTransformation.cpp | 1 + src/CGenerator.cpp | 5 +++-- tests/test_nequals.expected_results | 1 + tests/test_nequals.krak | 10 ++++++++++ 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 tests/test_nequals.expected_results create mode 100644 tests/test_nequals.krak diff --git a/src/ASTTransformation.cpp b/src/ASTTransformation.cpp index edcece1..6b34257 100644 --- a/src/ASTTransformation.cpp +++ b/src/ASTTransformation.cpp @@ -18,6 +18,7 @@ ASTTransformation::ASTTransformation(Importer *importerIn) { languageLevelOperators["--"].push_back(new NodeTree("function", ASTData(function, Symbol("--", true), NULL))); languageLevelOperators["++"].push_back(new NodeTree("function", ASTData(function, Symbol("++", true), NULL))); languageLevelOperators["=="].push_back(new NodeTree("function", ASTData(function, Symbol("==", true), new Type(boolean)))); + languageLevelOperators["!="].push_back(new NodeTree("function", ASTData(function, Symbol("!=", true), new Type(boolean)))); languageLevelOperators["<="].push_back(new NodeTree("function", ASTData(function, Symbol("<=", true), new Type(boolean)))); languageLevelOperators[">="].push_back(new NodeTree("function", ASTData(function, Symbol(">=", true), new Type(boolean)))); languageLevelOperators["<"].push_back(new NodeTree("function", ASTData(function, Symbol("<", true), new Type(boolean)))); diff --git a/src/CGenerator.cpp b/src/CGenerator.cpp index edc8d6e..8b58b2b 100644 --- a/src/CGenerator.cpp +++ b/src/CGenerator.cpp @@ -388,9 +388,10 @@ std::string CGenerator::generate(NodeTree* from, NodeTree* enc return "(" + generate(children[1], enclosingObject) + ")[" +generate(children[2],enclosingObject) + "]"; if (name == "+" || name == "-" || name == "*" || name == "/" || name == "==" || name == ">=" || name == "<=" || name == "!=" || name == "<" || name == ">" || name == "%" || name == "+=" || name == "-=" || name == "*=" || name == "/=" || name == "||" - || name == "&&") + || name == "&&") { + std::cout << "THIS IS IT NAME: " << name << std::endl; return "((" + generate(children[1], enclosingObject) + ")" + name + "(" + generate(children[2], enclosingObject) + "))"; - else if (name == "." || name == "->") { + } else if (name == "." || name == "->") { if (children.size() == 1) return "/*dot operation with one child*/" + generate(children[0], enclosingObject) + "/*end one child*/"; //If this is accessing an actual function, find the function in scope and take the appropriate action. Probabally an object method diff --git a/tests/test_nequals.expected_results b/tests/test_nequals.expected_results new file mode 100644 index 0000000..eb10e6d --- /dev/null +++ b/tests/test_nequals.expected_results @@ -0,0 +1 @@ +Correct diff --git a/tests/test_nequals.krak b/tests/test_nequals.krak new file mode 100644 index 0000000..98eb56f --- /dev/null +++ b/tests/test_nequals.krak @@ -0,0 +1,10 @@ +import io:*; + + +|int| main() { + if (1 != 2) + println("Correct"); +} + + +