Create new parser (works for lists so far)

This commit is contained in:
Bartłomiej Pluta
2019-07-05 16:45:59 +02:00
parent 23e0f3f33e
commit ed73aa1ad1
32 changed files with 516 additions and 59 deletions

42
grammar Normal file
View File

@@ -0,0 +1,42 @@
integer := ...
string := ...
note := ...
identifier := ...
expr := integer
expr := string
expr := note
expr := identifier
expr := access
expr := assignment
expr := functionCall
# left associative
access := expr '.' expr
# right associative
asterisk := expr '*' stmt
stmt := asterisk
stmt := block
stmt := return
stmt := functionDefinition
# right associative
assignment := identifier '=' expr
list := '(' ')'
list := '(' expr listTail
listTail := expr ', ' listTail
listTail := ')'
percent := integer '%'
return := 'return' expr
block := '{' stmt* '}'
functionCall := identifier list
functionDefinition := 'function' identifier list block