Welcome to Synthiam!

The easiest way to program the most powerful robots. Use technologies by leading industry experts. ARC is a free-to-use robot programming software that makes servo automation, computer vision, autonomous navigation, and artificial intelligence easy.

Get Started
USA
Asked — Edited
Resolved Resolved by DJ Sures!

Expression Parser Broken: Boolean Expressions With Negative Numbers

The code below does not work:

Code:


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

Become a Synthiam ARC Pro subscriber to unleash the power of easy and powerful robot programming

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)

Code:


repeatwhile($retry>0 AND $status<0)
print("Do something here")
$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.

Code:


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

Code:


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

repeatwhile(($retry>0) AND ($status<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