USA
Asked — Edited
Resolved Resolved by DJ Sures!

Expression Parser Broken: Boolean Expressions With Negative Numbers

The code below does not work:


1: ClearVariables() 
2: $status = -1
3: $retry = 3
4: if ($retry<3 AND $status<0)
5:   #do something
6: endif

error:

Quote:

Error on line 4: Missing String Quotes or Invalid Expression at index 8: -


ARC Pro

Upgrade to ARC Pro

Get access to the latest features and updates before they're released. You'll have everything that's needed to unleash your robot's potential!

Author Avatar
PRO
USA
#1  

the code works when the status variable has a non negative number.

Author Avatar
PRO
USA
#2  

RepeatWhile and RepeatUntil are also affected

Author Avatar
PRO
USA
#3  

this was the initial code (stops working when status is negative)


repeatwhile($retry>0 AND $status<0)
  print("Do something here")
  $retry = $retry - 1
endrepeatwhile 
Author Avatar
PRO
USA
#4  

to overcome the bug, i end up changing the logic and the code became more complex to read.


:loop
if ($retry>0)
  if ($status<0)
    Print("Do something here")
    $retry = $retry -1
    Goto(loop)
  endif
endif
#5  

These variations seem to work:


if ($retry<3) AND ($status<0)
           or
if (($retry<3) AND ($status<0))

repeatwhile(($retry>0) AND ($status<0))
Author Avatar
PRO
Synthiam
#6  

fixed in next release

Author Avatar
PRO
Synthiam
#7  

PS - also, thanks for the examples @WBS and @ptp . It helps identify the solution with use case examples. Usually someone just says "this doesn't work" and i have to guess what they were trying to do:D

Author Avatar
PRO
USA
#8  

Thanks