You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
wordSeperator =_{ " " | "-" | "_" }
|
|
variable =@{ ASCII_ALPHA
|
|
~ (ASCII_ALPHANUMERIC | wordSeperator)*
|
|
~ "?"?
|
|
}
|
|
|
|
char =_{ "\"" ~ ANY ~ "\"" }
|
|
decNum =_{ ASCII_DIGIT+ }
|
|
hexNum =_{ "0x" ~ ASCII_HEX_DIGIT+ }
|
|
num =_{ hexNum | decNum }
|
|
constant = { char | num }
|
|
path = { "\"" ~ (!"\"" ~ ANY)+ ~ "\"" }
|
|
|
|
include =@{ "#include" ~ spacing+ ~ path }
|
|
|
|
var =@{ "var" ~ spacing+ ~ variable }
|
|
delvar =@{ "delvar" ~ spacing+ ~ variable }
|
|
|
|
point =@{ "point" ~ spacing+ ~ variable }
|
|
pointm =@{ "pointm" ~ spacing+ ~ variable }
|
|
|
|
add =@{ "add" ~ spacing+ ~ constant }
|
|
addb =@{ "addb" ~ spacing+ ~ constant }
|
|
addv =@{ "addv" ~ spacing+ ~ variable }
|
|
|
|
sub =@{ "sub" ~ spacing+ ~ constant }
|
|
subb =@{ "subb" ~ spacing+ ~ constant }
|
|
subv =@{ "subv" ~ spacing+ ~ variable }
|
|
|
|
copy =@{ "copy" ~ spacing+ ~ variable }
|
|
setz =@{ "setz" }
|
|
|
|
getchr =@{ "getchr" }
|
|
print =@{ "print" }
|
|
|
|
macaroo =_{ include }
|
|
instruction =_{ macaroo
|
|
|
|
| var
|
|
| delvar
|
|
|
|
| point
|
|
| pointm
|
|
|
|
| add
|
|
| addb
|
|
| addv
|
|
|
|
| sub
|
|
| subb
|
|
| subv
|
|
|
|
| copy
|
|
| setz
|
|
|
|
| getchr
|
|
| print
|
|
}
|
|
|
|
loopBlockStart = { "[" ~ NEWLINE }
|
|
loopBlockEnd = { "]" }
|
|
loopBlock = { loopBlockStart
|
|
~ statements
|
|
~ spacing* ~ loopBlockEnd
|
|
}
|
|
|
|
statement =_{ spacing*
|
|
~ (instruction | loopBlock)
|
|
}
|
|
|
|
statements =_{ (statement | NEWLINE)* }
|
|
|
|
spacing =_{ " " | "\t" }
|
|
COMMENT =_{ ";;" ~ (!NEWLINE ~ ANY)* ~ NEWLINE }
|
|
|
|
file = { SOI ~ (statement ~ NEWLINE+)* ~ EOI }
|
|
|