literals, some simplification, etc
1 files changed, 23 insertions(+), 11 deletions(-)

M src/parser.pest
M src/parser.pest +23 -11
@@ 11,8 11,8 @@ program = { SOI ~ decl+ ~ EOI }
 
 decl = { (decl_function | decl_struct) }
 
-// fn <name> <params> -> <rettype> = <body> end
-decl_function = {"fn" ~ varname ~ params ~ "->" ~ typename ~ "=" ~ fnbody ~ "end" }
+// fn <name> <params> -> <rettype> <body> end
+decl_function = {"fn" ~ varname ~ params ~ "->" ~ typename ~ fnbody ~ "end" }
 
 params = {
        "()" |

          
@@ 25,14 25,14 @@ param = { varname ~ ":" ~ typename }
 fnbody = { expr+ }
 
 expr = {
-     exp_uniop |
-     exp_binop |
-     exp_funcall |
-     exp_if |
-     exp_let |
-     exp_literal |
-     exp_var |
-     exp_block
+    exp_uniop |
+    exp_binop |
+    exp_funcall |
+    exp_if |
+    exp_let |
+    exp_literal |
+    exp_var |
+    exp_block
 }
 
 exp_uniop = { "uniop" }

          
@@ 40,12 40,24 @@ exp_binop = { "binop" }
 exp_funcall = { "funcall"}
 exp_if = { "if" ~ expr ~ "then" ~ expr+ ~ "else" ~ expr+ ~ "end" }
 exp_let = { "let" ~ varname ~ ":" ~ typename ~ "=" ~ expr }
-exp_literal = { "literal" }
+exp_literal = {
+    lit_number |
+    lit_bool |
+    lit_unit
+}
 exp_var = { varname }
 exp_block = { "do" ~ expr+ ~ "end" }
 //exp_structref = {}
 //exp_match = {}
 
+sign = { "-" | "+" }
+digit = { '0'..'9' }
+
+lit_number = { sign? ~ digit+ ~ ("." ~ digit*)? }
+lit_bool = { "true" | "false" }
+lit_unit = { "()" }
+// TODO: Structs, vectors...
+
 decl_struct = {"struct" ~ varname ~ structmember+ ~ "end" }
 
 structmember = { varname ~ ":" ~ typename ~ "," }