1.6 KiB
Fatures Description
List language elements
- Literals
- Variables
- Integers (signed & unsigned)
- Floating points
- Data (array type)
- Type (structure type)
- Pointers
- Functions
- Conditions
- Repeat (loop)
- Modules
- Comments
Literals
Number literals can be specified as decimal, hexadecimal, and binary numbers. Digits can be separated by an '_' but it cannot be the first or the last character (otherwise it will get interpreted as and identifier).
// Valid examples:
1024
1_024
1.245
1_000.
0xffa
0xffaa_42bb
0b1101
0b1010_0101
// Invalid examples:
_100
1000_.100
0x_fa
0b10_
_0b1101
Functions
Conditions
If-Else statements can be written on a single or multiple lines and are an expression, which allows for something like this:
isValid bool <- if count = 0: doForEmpty() else doForCount(count)
Repeats
C-style for, while, and do-while are all combined into a single rep loop. The format is rep init, pre-condition, post-condition. init allows to setup a counter, pre-condition is evaluated before and post after each loop. Each part is optional, but if you include post-condition, pre-condition must also be include. Some examples:
// infinite loop
rep: doStuff()
// do things ten times
rep i s32 <- 0, i < 10:
doStuff(i)
i <- i + 1
;
// do things at least once
rep i s32 <- 0, true, i < someValue:
doStuff(i)
;
Comments
Like in C, comments can specified using either \\ which will run until the end of the line or through /* */ block. However, unlike C, the /* bla bla /* bla */ */ comments can be also embeded inside each other.