--- /dev/null
+expression -> literal | unary | binary | grouping ;
+grouping -> "(" expression ")" ;
+literal -> NUMBER | STRING | "true" | "false" | "nil" ;
+unary -> ( "!" | "-" ) expression ;
+binary -> expression operator expression ;
+operator -> "==" | "!=" | "<" | "<=" | ">" | ">=" |
+ "+" | "-" | "*" | "/" ;
+
+
+NUMBER -> "[0-9]" "."? "[0-9]" ;
+STRING -> \" "[a-zA-Z]"* \" ;
+
+
+So expression could be:
+1.
+ unary =>
+ !expression =>
+ !literal =>
+ !NUMBER =>
+ !4
+
+2.
+ grouping =>
+ (expression) =>
+ (binary) =>
+ (expression operator expression) =>
+ (literal operator expression) =>
+ (NUMBER operator expression) =>
+ (5.8 operator expression) =>
+ (5.8 * expression) =>
+ (5.8 * unary) =>
+ (5.8 * -expression) =>
+ (5.8 * -literal) =>
+ (5.8 * -NUMBER) =>
+ (5.8 * -8)