NOTE additional tests graciously provided by Chris Kuklewicz www.haskell.org 2009-02-02 :HA#01:E a+ xaax (1,3) :HA#03:E (a?)((ab)?) ab (0,2)(0,0)(0,2)(0,2) :HA#04:E (a?)((ab)?)(b?) ab (0,2)(0,1)(1,1)(?,?)(1,2) :HA#05:E ((a?)((ab)?))(b?) ab (0,2)(0,2)(0,0)(0,2)(0,2)(2,2) :HA#06:E (a?)(((ab)?)(b?)) ab (0,2)(0,1)(1,2)(1,1)(?,?)(1,2) :HA#07:E (.?) x (0,1)(0,1) :HA#08:E (.?){1} x (0,1)(0,1) :HA#09:E (.?)(.?) x (0,1)(0,1)(1,1) :HA#10:E (.?){2} x (0,1)(1,1) :HA#11:E (.?)* x (0,1)(0,1) :HA#12:E (.?.?) xxx (0,2)(0,2) :HA#13:E (.?.?){1} xxx (0,2)(0,2) :HA#14:E (.?.?)(.?.?) xxx (0,3)(0,2)(2,3) :HA#15:E (.?.?){2} xxx (0,3)(2,3) :HA#16:E (.?.?)(.?.?)(.?.?) xxx (0,3)(0,2)(2,3)(3,3) :HA#17:E (.?.?){3} xxx (0,3)(3,3) :HA#18:E (.?.?)* xxx (0,3)(2,3) :HA#19:E a?((ab)?)(b?) ab (0,2)(1,1)(?,?)(1,2) :HA#20:E (a?)((ab)?)b? ab (0,2)(0,1)(1,1)(?,?) :HA#21:E a?((ab)?)b? ab (0,2)(1,1)(?,?) :HA#22:E (a*){2} xxxxx (0,0)(0,0) :HA#23:E (ab?)(b?a) aba (0,3)(0,2)(2,3) :HA#24:E (a|ab)(ba|a) aba (0,3)(0,2)(2,3) :HA#25:E (a|ab|ba) aba (0,2)(0,2) :HA#26:E (a|ab|ba)(a|ab|ba) aba (0,3)(0,2)(2,3) :HA#27:E (a|ab|ba)* aba (0,3)(2,3) :HA#28:E (aba|a*b) ababa (0,3)(0,3) :HA#29:E (aba|a*b)(aba|a*b) ababa (0,5)(0,2)(2,5) :HA#1029:E (aba|a*b)(aba|a*b)(aba|a*b) ababa NOMATCH :HA#30:E (aba|a*b)* ababa (0,5)(2,5) :HA#31:E (aba|ab|a) ababa (0,3)(0,3) :HA#32:E (aba|ab|a)(aba|ab|a) ababa (0,5)(0,2)(2,5) :HA#1032:E (aba|ab|a)(aba|ab|a)(aba|ab|a) ababa (0,5)(0,2)(2,4)(4,5) :HA#33:E (aba|ab|a)* ababa (0,5)(2,5) :HA#34:E (a(b)?) aba (0,2)(0,2)(1,2) :HA#35:E (a(b)?)(a(b)?) aba (0,3)(0,2)(1,2)(2,3)(?,?) :HA#36:E (a(b)?)+ aba (0,3)(2,3)(?,?) :HA#37:E (.*)(.*) xx (0,2)(0,2)(2,2) :HA#38:E .*(.*) xx (0,2)(2,2) :HA#39:E (a.*z|b.*y) azbazby (0,5)(0,5) :HA#40:E (a.*z|b.*y)(a.*z|b.*y) azbazby (0,7)(0,5)(5,7) :HA#41:E (a.*z|b.*y)* azbazby (0,7)(5,7) :HA#42:E (.|..)(.*) ab (0,2)(0,2)(2,2) :HA#43:E ((..)*(...)*) xxx (0,3)(0,3)(?,?)(0,3) :HA#44:E ((..)*(...)*)((..)*(...)*) xxx (0,3)(0,3)(?,?)(0,3)(3,3)(?,?)(?,?) :HA#45:E ((..)*(...)*)* xxx (0,3)(0,3)(?,?)(0,3) :HA#83:E (aa(b(b))?)+ aabbaa (0,6)(4,6)(?,?)(?,?) :HA#84:E (a(b)?)+ aba (0,3)(2,3)(?,?) :HA#85:E ([ab]+)([bc]+)([cd]*) abcd (0,4)(0,2)(2,3)(3,4) :HA#90:E ^(A([^B]*))?(B(.*))? Aa (0,2)(0,2)(1,2)(?,?)(?,?) :HA#91:E ^(A([^B]*))?(B(.*))? Bb (0,2)(?,?)(?,?)(0,2)(1,2) :HA#110:E (^){0,3} a (0,0)(0,0) :HA#111:E ($){0,3} a (0,0)(?,?) :HA#112:E (^){1,3} a (0,0)(0,0) :HA#113:E ($){1,3} a (1,1)(1,1) :HA#200:E ((s^)|(s)|(^)|($)|(^.))* searchme (0,1)(0,1)(?,?)(0,1)(?,?)(?,?)(?,?) :HA#201:Ez s(()|^)e searchme (0,2)(1,1)(1,1) :HA#202:Ez s(^|())e searchme (0,2)(1,1)(1,1) :HA#203:Ez s(^|())e searchme (0,2)(1,1)(1,1) :HA#204:Ez s()?e searchme (0,2)(1,1) :HA#205:E s(^)?e searchme (0,2)(?,?) :HA#206:E ((s)|(e)|(a))* searchme (0,3)(2,3)(?,?)(?,?)(2,3) :HA#207:Ez ((s)|(e)|())* searchme (0,2)(1,2)(?,?)(1,2)(?,?) :HA#208:E ((b*)|c(c*))* cbb (0,3)(1,3)(1,3)(?,?) :HA#209:E (yyy|(x?)){2,4} yyyyyy (0,6)(3,6)(?,?) :HA#210:Ez ($)|() xxx (0,0)(?,?)(0,0) :HA#211:Ez $()|^() ac\n (0,0)(?,?)(0,0) :HA#212:Ez ^()|$() ac\n (0,0)(0,0)(?,?) :HA#213:E ($)?(.) __ (0,1)(?,?)(0,1) :HA#214:Ez (.|()|())* c (0,1)(0,1)(?,?)(?,?) :HA#215:E ((a)|(b)){2,} ab (0,2)(1,2)(?,?)(1,2) :HA#216:Ez .()|((.)?) NULL (0,0)(?,?)(0,0)(?,?) :HA#217:E (.|$){2,} xx (0,2)(1,2) :HA#218:E (.|$){2,2} xx (0,2)(1,2) :HA#219:E (.){2,} xx (0,2)(1,2) :HA#220:Ez (a|())(b|())(c|()) abc (0,3)(0,1)(?,?)(1,2)(?,?)(2,3)(?,?) :HA#220:Ez ab()c|ab()c() abc (0,3)(2,2)(-1,-1)(-1,-1) :HA#250:E (b(c)|d(e))* bcde (0,4)(2,4)(-1,-1)(3,4) :HA#251:E (a(b)*)* aba (0,3)(2,3)(-1,-1) # osx / bsd have a tough time with these :HA#301:Ez (()|.)(b) ab (0,2)(0,1)(?,?)(1,2) :HA#302:Ez (()|[ab])(b) ab (0,2)(0,1)(?,?)(1,2) :HA#303:Ez (()|[ab])+b aaab (0,4)(2,3)(?,?) :HA#311:Ez (.|())(b) ab (0,2)(0,1)(?,?)(1,2) :HA#312:Ez ([ab]|())(b) ab (0,2)(0,1)(?,?)(1,2) :HA#314:Ez ([ab]|())+b aaab (0,4)(2,3)(?,?) :HA#320:Ez (.?)(b) ab (0,2)(0,1)(1,2)