diff options
Diffstat (limited to 'GRAMMAR.txt')
-rw-r--r-- | GRAMMAR.txt | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/GRAMMAR.txt b/GRAMMAR.txt new file mode 100644 index 0000000..a44e086 --- /dev/null +++ b/GRAMMAR.txt @@ -0,0 +1,23 @@ +root -> toplevel* +toplevel -> function + +function -> "func" IDENTIFIER "(" param? ")" IDENTIFIER block +param -> IDENTIFIER IDENTIFIER ( "," param )? + +block -> "{" ( statement )* "}" + +statement -> ( return ) ";" +return -> "return" expression + +expression -> equality +equality -> comparison ( ( "==" | "!=" ) comparison )* +comparison -> term ( ( "<" | "<=" | ">" | ">=" ) term )? +term -> numeral ( ( "<<" | ">>" ) numeral )* +numeral -> factor ( ( "+" | "-" ) factor )* +factor -> unary ( ( "*" | "/" ) unary )* +unary -> ( "-" | "!" | "~" )? primary +primary -> grouping | literal +grouping -> "(" expression ")" +literal -> string | number +string -> STRING* +number -> IDENTIFIER "(" NUMBER ")" |