(seq (#\&) and)
(seq (#\|) or)))
(token (or (seq (#\() lp)
+ (seq (#\[) lb)
(seq (#\-) neg)
(seq (#\!) not)))
(token (or (seq (#\!) fact)
- (when nestedp (seq (#\)) rp))))))
+ (when nestedp
+ (or (seq (#\)) rp)
+ (seq (#\]) rb)))))))
(next (or :any (t :eof))))
(cons value next))))))
(assert-expr-parse "1 ** 2 ** 3" '((** 1 (** 2 3)) . :eof) t t)
(assert-expr-parse "1 + 2) * 3" '((+ 1 2) . #\)) t t)
(assert-expr-parse "1 + 2 * 3" '((+ 1 (* 2 3)) . :eof) t t)
-
(assert-expr-parse "! 1 + 2 = 3 | 6 - 3 /= 12/6"
'((or (not (= (+ 1 2) 3))
(/= (- 6 3) (/ 12 6)))