This is a solution in Qi+Qi-YACC (define test-brackets X -> (not (= (compile <paren> (COERCE X LIST)) fail!)))
(defcc <paren> #\[ <paren> #\] <paren>; #\( <paren> #\) <paren>; <token> <paren>; <e> := [];) (defcc <token> -*- := (if (element? -*- [#\[ #\] #\( #\)]) #\Escape -*-);) Testing (5-) (test-brackets "()") true (6-) (test-brackets "())") false (7-) (test-brackets "([))]") false (8-) (test-brackets "([])") true (9-) (test-brackets "([)]") false (10-) (test-brackets "[][[([])]]") true Mark --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---