diff --git a/README.md b/README.md index fc205b2..dd7d840 100644 --- a/README.md +++ b/README.md @@ -46,3 +46,20 @@ - [ ] IO Intrinsics - [ ] Print - [ ] ReadLine + +## Grammar + +### Expressions + +``` +expr_primary = LITERAL | "(" expr p | "-" expr_primary | "~" expr_primary +expr_mul = expr_primary (("*" | "/" | "%") expr_primary)* +expr_add = expr_mul (("+" | "-") expr_mul)* +expr_shift = expr_add ((">>" | "<<") expr_add)* +expr_rel = expr_shift ((">" | ">=" | "<" | "<=") expr_shift)* +expr_equ = expr_rel (("==" | "!=") expr_rel)* +expr_band = expr_equ ("&" expr_equ)* +expr_bxor = expr_band ("^" expr_band)* +expr_bor = expr_bxor ("|" expr_bxor)* +expr = expr_bor +``` \ No newline at end of file diff --git a/src/parser.rs b/src/parser.rs index 3774aaf..168c599 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -73,21 +73,6 @@ pub enum Ast { UnOp(UnOpType, Box), } -/* -## Grammar -### Expressions -expr_primary = LITERAL | "(" expr p | "-" expr_primary | "~" expr_primary -expr_mul = expr_primary (("*" | "/" | "%") expr_primary)* -expr_add = expr_mul (("+" | "-") expr_mul)* -expr_shift = expr_add ((">>" | "<<") expr_add)* -expr_rel = expr_shift ((">" | ">=" | "<" | "<=") expr_shift)* -expr_equ = expr_rel (("==" | "!=") expr_rel)* -expr_band = expr_equ ("&" expr_equ)* -expr_bxor = expr_band ("^" expr_band)* -expr_bor = expr_bxor ("|" expr_bxor)* -expr = expr_bor -*/ - struct Parser> { tokens: Peekable, }