Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.73 KB | None | 0 0
  1. (define next (read))
  2. (define (peek) next)
  3. (define (get) (define t next) (set! next (read)) t)
  4.  
  5. (define (parse-atom) (get))
  6.  
  7. (define (parse-mul)
  8.   (define cur (parse-atom))
  9.   (define c (peek))
  10.   (define (recur)
  11.   (when (or (eq? c '*) (eq? c '/)) (begin
  12.       (get)
  13.       (define m2 (parse-atom))
  14.       (set! cur (if (eq? c '*) (* cur m2) (/ cur m2)))
  15.       (set! c (peek))
  16.       (recur))
  17.   ))
  18.   (recur)
  19.   cur
  20. )
  21.  
  22. (define (parse-add)
  23.   (define cur (parse-mul))
  24.   (define c (peek))
  25.   (define (recur)
  26.   (when (or (eq? c '+) (eq? c '-)) (begin
  27.       (get)
  28.       (define m2 (parse-mul))
  29.       (set! cur (if (eq? c '+) (+ cur m2) (- cur m2)))
  30.       (set! c (peek))
  31.       (recur))
  32.   ))
  33.   (recur)
  34.   cur
  35. )
  36. (display (parse-add))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement