From e0de6ddf16a37435966e31a73b4425a0300dc1e6 Mon Sep 17 00:00:00 2001 From: Shagun Agrawal Date: Sat, 3 Aug 2024 02:45:43 +0530 Subject: Add tacky IR stage Add Tacky IR stage General formatting etc --- src/cljcc/parser.clj | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'src/cljcc/parser.clj') diff --git a/src/cljcc/parser.clj b/src/cljcc/parser.clj index d19ddd1..8852d91 100644 --- a/src/cljcc/parser.clj +++ b/src/cljcc/parser.clj @@ -11,10 +11,11 @@ (def c-parser (insta/parser " = function+ - function = #'int\\b' identifier <'('> #'void\\b' <')'> <'{'> statement+ <'}'> + function = #'int\\b' identifier <'('> #'void\\b' <')'> <'{'> statement <'}'> statement = #'return\\b' exp <';'> exp = exp-prime - = constant | unop exp-prime | <'('> exp-prime <')'> + = constant | unop-exp | <'('> exp-prime <')'> + unop-exp = unop exp unop = #'-' | #'~' identifier = #'[a-zA-Z_]\\w*\\b' constant = #'[0-9]+\\b' @@ -29,21 +30,17 @@ (comment - (parse "int main(void) {return 2;}") + (parse "int main(void) {return 2;}") - (parse " + (parse " int main(void) { return 2; - return 2; }") - (parse "int main(void) { + (parse "int main(void) { return -(((((10))))); }") - (parse "int main(void) { - return --2; + (parse "int main(void) { return -(((((10))))); - }") - - ,) + }")) -- cgit v1.2.3