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
-~----------~----~----~----~------~----~------~--~---

Reply via email to