more cleanup
This commit is contained in:
parent
f2b0e38464
commit
488d7b1edb
@ -28,3 +28,4 @@ i <- 1
|
|||||||
loop until i > 10
|
loop until i > 10
|
||||||
print(i)
|
print(i)
|
||||||
i <- 1
|
i <- 1
|
||||||
|
## Loops
|
||||||
|
54
peg.txt
54
peg.txt
@ -1,54 +0,0 @@
|
|||||||
program := __* stmt*
|
|
||||||
|
|
||||||
stmt := assignment /
|
|
||||||
funcall stop /
|
|
||||||
conditional /
|
|
||||||
loop /
|
|
||||||
expr stop
|
|
||||||
|
|
||||||
expr := - _ expr /
|
|
||||||
expr "+" _ expr /
|
|
||||||
expr "-" - expr /
|
|
||||||
expr "*" _ expr /
|
|
||||||
expr "/" _ expr /
|
|
||||||
"(" _ expr ")" /
|
|
||||||
['"'] ((!['"'] [_] / #"\""#)*) ['"'] /
|
|
||||||
funcall /
|
|
||||||
fundef /
|
|
||||||
boolean /
|
|
||||||
id /
|
|
||||||
num
|
|
||||||
|
|
||||||
boolean := ("true" / "false") _
|
|
||||||
id := letter (letter / digit / ['?'|'.'|'-'])* _
|
|
||||||
num := (digit+ "."? digit* / "." digit+) _
|
|
||||||
|
|
||||||
assignment := id "<-" _ expr stop
|
|
||||||
funcall := id "(" _ expr ** ("," _) ")" _
|
|
||||||
funcdef := id? "->" _ block
|
|
||||||
|
|
||||||
conditional := if __* elif* __* else? __*
|
|
||||||
if := "if" _ expr block
|
|
||||||
elif := "elif" _ expr block
|
|
||||||
else := "else" _ block
|
|
||||||
|
|
||||||
loop := "loop" _ (until / over / block)
|
|
||||||
until := "until" _ expr block
|
|
||||||
over := "over"_ id "in" _ expr block
|
|
||||||
|
|
||||||
block := expr / indented_block
|
|
||||||
indented_block := stop indent __* stmt+ dedent
|
|
||||||
|
|
||||||
letter := ['A'..='Z'] / ['a'..='z']
|
|
||||||
digit := ['0'..='9']
|
|
||||||
|
|
||||||
stop := __+ / eof
|
|
||||||
indent := ">>>"
|
|
||||||
dedent := "<<<"
|
|
||||||
|
|
||||||
_ := ['\t'|' ']*
|
|
||||||
__ := comment? newline / comment &eof
|
|
||||||
comment := "#" (!newline [_])* &(newline / eof)
|
|
||||||
newline := "\r\n" \ "\r" \ "\n"
|
|
||||||
|
|
||||||
eof := ![_]
|
|
Loading…
Reference in New Issue
Block a user