blob: f55175398d345937bfcff407ce091ca5f2755a72 [file] [log] [blame]
; 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))))))