Add preliminary syntax information to the Readme.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
65f12f1e52
commit
f3e54ccf78
1 changed files with 52 additions and 1 deletions
53
README.md
53
README.md
|
|
@ -1,3 +1,54 @@
|
|||
# ELox
|
||||
|
||||
A partial Lox implementation for embedded devices.
|
||||
A Lox variant for embedded devices.
|
||||
It's sole purpose is to be a playground to implement an
|
||||
end to end compiler for embedded devices.
|
||||
|
||||
## Features
|
||||
|
||||
ELox omits some features from Lox and borrows some others from C.
|
||||
The feature set is meant to be restrictive to ease implementation.
|
||||
|
||||
- Static typing with no type inference.
|
||||
- Words (`word`), and boolean (`true` and `false`) types.
|
||||
- Word literals in different formats: `101`, `0x101`, `0b101`, `0o101`.
|
||||
- Arithmetic expressions: `+`, `-`, `*`, `<<`, `>>`.
|
||||
- Logical expressions: `&&`, `||`, `==`, `!=`, `<`, `<=`, `>`, `>=`.
|
||||
- Bitwise expressions: `&`, `|`, `^`.
|
||||
- Stack and global variables: `var myWord word`.
|
||||
- Control flow with `if`, `while` and `for` with usual C-like syntax.
|
||||
- Memory regions which can be used to access a group of registers more effectively.
|
||||
They must be instantiated at a particular address and all elements are words.
|
||||
```
|
||||
mem someRegGroup {
|
||||
reg1
|
||||
reg2
|
||||
reg3
|
||||
}
|
||||
|
||||
var regs someRegGroup = @0xdfffffff
|
||||
|
||||
fun main () {
|
||||
regs.reg1 = 0xff
|
||||
var test word = regs.reg2
|
||||
}
|
||||
```
|
||||
- Functions
|
||||
```
|
||||
// This is a comment btw.
|
||||
fun myFunWithReturn(arg1 word, arg2 bool) word {
|
||||
var res word = 0
|
||||
if (arg2) {
|
||||
res = arg1
|
||||
} else {
|
||||
res = arg1 * arg1
|
||||
}
|
||||
}
|
||||
|
||||
fun myFun(arg1 word, arg2 word) {
|
||||
doSomethingElse(arg1, arg2)
|
||||
}
|
||||
```
|
||||
|
||||
Notable ommisions are signed integers, heap variables (no malloc implementation yet),
|
||||
arrays, structs and strings. These may be slowly implemented as needs arise.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue