From fde86265a2a8ba8fc898de18184ffe75748ffdba Mon Sep 17 00:00:00 2001 From: Ben Burwell Date: Mon, 29 Apr 2013 15:14:22 -0400 Subject: Fixes multiple terms and factors --- HW05b.scm | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/HW05b.scm b/HW05b.scm index 2e8bade..ae82b0a 100644 --- a/HW05b.scm +++ b/HW05b.scm @@ -55,7 +55,7 @@ (eval-add-op (car ops) term (car terms)) ;; else, handle multiple terms - 'a + (expr-helper (eval-add-op (car ops) term (car terms)) (cdr ops) (cdr terms)) )))) @@ -65,10 +65,10 @@ (cases add-op op ;; perform addition - (plus-op () (+ (eval-term term1) (eval-term term2))) + (plus-op () (if (term? term1) (+ (eval-term term1) (eval-term term2)) (+ term1 (eval-term term2)))) ;; perform subtraction - (minus-op () (- (eval-term term1) (eval-term term2))) + (minus-op () (if (term? term1) (- (eval-term term1) (eval-term term2)) (- term1 (eval-term term2)))) ))) ;; evaluate a term @@ -96,7 +96,7 @@ (eval-mult-op (car ops) factor (car factors)) ;; otherwise, handle multiple factors - 'b + (term-helper (eval-mult-op (car ops) factor (car factors)) (cdr ops) (cdr factors)) )))) @@ -106,10 +106,10 @@ (cases mult-op op ;; perform multiplication - (times-op () (* (eval-factor fac1) (eval-factor fac2))) + (times-op () (if (factor? fac1) (* (eval-factor fac1) (eval-factor fac2)) (* fac1 (eval-factor fac2)))) ;; perform division - (divide-op () (/ (eval-factor fac1) (eval-factor fac2))) + (divide-op () (if (factor? fac1) (/ (eval-factor fac1) (eval-factor fac2)) (/ fac1 (eval-factor fac2)))) ))) ;; evaluate a factor @@ -138,5 +138,11 @@ (define read-eval-print (sllgen:make-rep-loop "> " execute-expression (sllgen:make-stream-parser scanner-spec grammar))) -;; shortcut for quicker testing -(define spe scan&parse&eval) \ No newline at end of file +(define test + (lambda () + (display "Type something in and see if it works!!!") + (newline) + (read-eval-print))) + +(display "Run (test) to test program") +(newline) \ No newline at end of file -- cgit v1.2.3