diff --git a/expr_grammar b/expr_grammar new file mode 100644 index 0000000..49b14a1 --- /dev/null +++ b/expr_grammar @@ -0,0 +1,10 @@ +expression -> equality ; +equality -> comparison ( ( "!=" | "==" ) comparison )* ; +comparison -> term ( ( ">" | ">=" | "<" | "<=" ) term )* ; +term -> factor ( ( "-" | "+" ) factor )* ; +factor -> exponent ( ( "/" | "*" | "/." | "/_" | "%" | "/%" ) exponent )* ; +exponent -> unary ( ( "**" ) unary )* ; +unary -> ( "!" | "-" ) unary + | primary ; +primary -> NUMBER | STRING | "true" | "false" | "nil" + | "(" expression ")" ;