From 0d69984338399a78a3ba6f3a2493f1ffb34964f8 Mon Sep 17 00:00:00 2001 From: bd Date: Sat, 4 Jan 2025 22:43:31 -0700 Subject: Modify parser to handle unary operators --- src/modules/parser/parser.scm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/modules/parser') diff --git a/src/modules/parser/parser.scm b/src/modules/parser/parser.scm index ceac389..fa9202d 100644 --- a/src/modules/parser/parser.scm +++ b/src/modules/parser/parser.scm @@ -21,12 +21,17 @@ (define (p-stmt tokens) (match tokens - (`(return ,expr semi-colon) - (make-stmt (p-expr (list expr)))) + (('return expr ... 'semi-colon) + (make-stmt (p-expr expr))) (_ (die)))) (define (p-expr tokens) - (match tokens - (((? number? int)) - (make-expr int)) - (_ (die)))) + (make-expr + (match tokens + (((? integer? int)) + (make-const int)) + (((or 'sub 'complement) expr ...) + (make-unary (car tokens) (p-expr expr))) + (('left-paren expr ... 'right-paren) + (p-expr expr)) + (_ (die))))) -- cgit v1.2.3