Skip to content

Commit

Permalink
* KaRL was considering numbers like .75 to be variables. This should …
Browse files Browse the repository at this point in the history
…be fixed now.

* Added tests for new doubles like .75 to test_basic_reasoning
  • Loading branch information
jredmondson committed Jun 29, 2018
1 parent 22a8a6e commit 99d7166
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
9 changes: 6 additions & 3 deletions include/madara/expression/Interpreter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6036,9 +6036,11 @@ madara::expression::Interpreter::number_insert (
continue;

// do we have a float?
if (i + j <= input.length () && input[i + j] == '.')
if ((i + j <= input.length () && input[i + j] == '.') || input[i] == '.')
{
++j;
if (input[i] != '.')
++j;

for (; i + j <= input.length () && is_number (input[i + j]); ++j)
continue;

Expand Down Expand Up @@ -6286,7 +6288,8 @@ ::std::list<madara::expression::Symbol *>& list,
bool build_argument_list)
{
handled = false;
if (is_number (input[i]))
if (is_number (input[i]) ||
(i + 1 < input.size () && input[i] == '.' && is_number (input[i+1])))
{
handled = true;
// leaf node
Expand Down
6 changes: 6 additions & 0 deletions tests/test_basic_reasoning.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,12 @@ void test_doubles (madara::knowledge::KnowledgeBase & knowledge)

knowledge.evaluate (".var7 = 2.00800e-003");
assert (knowledge.get (".var7") == 0.002008);

knowledge.evaluate ("var1 = .75; var2 = -.75; var3 = 1.2; var4 = 3.0/5");
assert (knowledge.get ("var1") == 0.75);
assert (knowledge.get ("var2") == -0.75);
assert (knowledge.get ("var3") == 1.2);
assert (knowledge.get ("var4") == 3.0/5);
}

void test_strings (madara::knowledge::KnowledgeBase & knowledge)
Expand Down

0 comments on commit 99d7166

Please sign in to comment.