- Bytecode
- Configuration
- Comments
#
- Conditions
if
else
end
- Constants
true
false
HIGH
LOW
INPUT
OUTPUT
- Cycles
for
while
next
break
continue
- Functions
function
locals
return
- Macros
macro
- Numeric variables
@
@[]
- Operators
+
-
*
/
%
==
!=
>
>=
<
<=
&&
||
&
|
^
>>
<<
++
--
~
not
- Strings
:
:[]
- System functions
adc read
args
char
cursor
delay
file close
file open
file read
file write
include
index
input
io open
io read
io write
jump
label
mem
millis
number
numeric
print
random
restart
serial open
serial read
serial write
size
stop
string
system
- Unary operators
++
--
Arithmetic | Logic | Bitwise | Unary prefix |
---|---|---|---|
+ Addition |
== Equal |
& And |
++ Increment then use |
- Subtraction |
!= Not equal |
| Or |
-- Decrement then use |
* Multiplication |
< Less |
^ Xor |
~ Bitwise not |
/ Division |
<= Less or equal |
<< Left shift |
not Logic not |
% Modulus |
> Greater |
>> Right shift |
|
>= Greater or equal |
|||
&& And |
|||
|| Or |
BIPLAN implements a recursive descent parser for this reason there is no operator precedence and calculations are executed in the order specified by the user.
In BIPLAN the following program is incorrect:
if 1 == 1 || 0 == 0 print "OK" end
The correct form is:
if (1 == 1) || (0 == 0) print "OK" end
Parenthesis are required for the interpreter to detect a nested relation and compute it before the primary relation.