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.
49 lines
1.2 KiB
49 lines
1.2 KiB
operator = @{ "operator" } // TODO
|
|
operand = @{ "operand" } // TODO
|
|
|
|
variable =@{ ASCII_ALPHA
|
|
~ (ASCII_ALPHANUMERIC | " ")*
|
|
}
|
|
|
|
var =@{ "var" ~ spacing+ ~ variable }
|
|
delvar =@{ "delvar" ~ spacing+ ~ variable }
|
|
|
|
point =@{ "point" ~ spacing+ ~ variable }
|
|
pointm =@{ "pointm" ~ spacing+ ~ variable }
|
|
|
|
addv =@{ "addv" ~ spacing+ ~ variable }
|
|
subv =@{ "subv" ~ spacing+ ~ variable }
|
|
|
|
copy =@{ "copy" ~ spacing+ ~ variable }
|
|
|
|
instruction =_{ var
|
|
| delvar
|
|
|
|
| point
|
|
| pointm
|
|
|
|
| addv
|
|
| subv
|
|
|
|
| copy
|
|
|
|
| operator ~ (spacing+ ~ operand)?
|
|
}
|
|
|
|
loopBlockStart = { "[" ~ NEWLINE }
|
|
loopBlockEnd = { "]" }
|
|
loopBlock = { loopBlockStart
|
|
~ statements
|
|
~ loopBlockEnd
|
|
}
|
|
|
|
statement = _{ spacing*
|
|
~ (instruction | loopBlock)
|
|
}
|
|
|
|
statements = _{ (statement | NEWLINE)* }
|
|
|
|
spacing = _{ " " | "\t" }
|
|
COMMENT = _{ ";;" ~ (!NEWLINE ~ ANY)* ~ NEWLINE}
|
|
|
|
file = {SOI ~ (statement ~ NEWLINE+)* ~ EOI}
|
|
|