; The calculator in spirit.scheme | |
(define expression) ; forward declaration | |
(define factor | |
(qi:| | |
(qi:int_) | |
(qi:>> (qi:char_ "(") (expression) (qi:char_ ")")) | |
(qi:>> (qi:char_ "-") (factor)) | |
(qi:>> (qi:char_ "+") (factor)))) | |
(define term | |
(qi:>> (factor) | |
(qi:* | |
(qi:| | |
(qi:>> (qi:char_ "*") (factor)) | |
(qi:>> (qi:char_ "/") (factor)))))) | |
(define expression | |
(qi:>> (term) | |
(qi:* | |
(qi:| | |
(qi:>> (qi:char_ "+") (term)) | |
(qi:>> (qi:char_ "-") (term)))))) |