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

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.

PRO
USA
#1  

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

PRO
USA
#2  

RepeatWhile and RepeatUntil are also affected

PRO
USA
#3  

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


repeatwhile($retry&gt;0 AND $status&lt;0)
  print(&quot;Do something here&quot;)
  $retry = $retry - 1
endrepeatwhile 

PRO
USA
#4  

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


:loop
if ($retry&gt;0)
  if ($status&lt;0)
    Print(&quot;Do something here&quot;)
    $retry = $retry -1
    Goto(loop)
  endif
endif

#5  

These variations seem to work:


if ($retry&lt;3) AND ($status&lt;0)
           or
if (($retry&lt;3) AND ($status&lt;0))

repeatwhile(($retry&gt;0) AND ($status&lt;0))

PRO
Synthiam
#6  

fixed in next release

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

PRO
USA
#8  

Thanks