regex-tdfa-unittest (empty) → 1.1
raw patch · 14 files changed
+696/−0 lines, 14 filesdep +arraydep +basedep +bytestringsetup-changed
Dependencies added: array, base, bytestring, containers, mtl, regex-base, regex-tdfa
Files
- LICENSE +10/−0
- Main.hs +209/−0
- Setup.hs +6/−0
- data-dir/basic3.txt +142/−0
- data-dir/class.txt +14/−0
- data-dir/forced-assoc.txt +28/−0
- data-dir/left-assoc.txt +12/−0
- data-dir/nullsub3.txt +51/−0
- data-dir/osx-bsd-critical.txt +11/−0
- data-dir/repetition2.txt +79/−0
- data-dir/right-assoc.txt +12/−0
- data-dir/test-manifest.txt +9/−0
- data-dir/totest.txt +87/−0
- regex-tdfa-unittest.cabal +26/−0
+ LICENSE view
@@ -0,0 +1,10 @@+Copyright (c) 2009, Christopher Edward Kuklewicz+All rights reserved.++Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.+ * Neither the name of the copyright holder nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Main.hs view
@@ -0,0 +1,209 @@+module Main where++import Control.Monad+import Control.Monad.Error()+import Data.Array+import Data.List+--import Data.Monoid+import Data.Sequence(Seq)+import Data.String+import Data.Typeable+import Data.Version()+import System.Environment+import Text.Regex.Base+import qualified Data.Foldable as F+import Paths_regex_tdfa_unittest(getDataFileName,version)++import qualified Data.ByteString.Char8 as S+import qualified Data.ByteString.Lazy.Char8 as L++import qualified Text.Regex.TDFA.Common as TDFA+import qualified Text.Regex.TDFA as TDFA++default(Int)++type RSource = String+type RType = String -- can be changed to any Extract instance+newtype RegexSource = RegexSource {unSource :: RSource} deriving Show+newtype RegexStringOf a = RegexString {unString :: a} deriving Show+type RegexString = RegexStringOf RType++dictionary :: [Char]+dictionary = ['a'..'c']++['A'..'C']++"_"+++class StringIs a where toString :: a -> String+instance StringIs [Char] where toString = id+instance StringIs S.ByteString where toString = S.unpack+instance StringIs L.ByteString where toString = L.unpack+instance StringIs (Seq Char) where toString = F.toList++type A = Array Int (Int,Int)++maxItems :: Int+maxItems=100++testOne :: t -> (t -> t1 -> Array Int (Int, Int)) -> t1 -> String+testOne s op r = + let foo :: String+ foo = concatMap (\(o,l) -> show (o,(o+l))) (take maxItems $ elems (op s r :: Array Int (Int,Int)))+ in if null foo then "NOMATCH" else foo++testOne' :: A -> String+testOne' input = + let foo :: String+ foo = concatMap (\(o,l) -> show (o,(o+l))) (take maxItems $ elems input)+ in if null foo then "NOMATCH" else foo++toTest :: String -> (Int,String,String,String)+toTest line = let [n,regex,input,output] = words line+ noQ [] = []+ noQ ('?':xs) = '-':'1':noQ xs+ noQ (x:xs) = x:noQ xs+ input' = if input == "NULL" then "" else unN input+ in (read n,regex,input',noQ output)++toTest' :: String -> String -> (String,(Int,String,String,String))+toTest' oldRegex line =+ let [n,regex,input,output] = words line+ noQ [] = []+ noQ ('?':xs) = '-':'1':noQ xs+ noQ (x:xs) = x:noQ xs+ input' = if input == "NULL" then "" else input+ regex' = if regex == "SAME" then oldRegex else regex+ in (regex',(read n,regex',input',noQ output))++load,load' :: FilePath -> IO [(Int, String, String, String)]+load x' = do+ text <- readFile x'+ return $ map toTest (lines text)++load' x' = do+ text <- readFile x'+ return . snd $ mapAccumL toTest' "X_X_X_" (lines text)++checkTest :: PFT A -> (Int,String,String,String) -> IO [Int]+checkTest opM (n,regex,input,output) = do+ let output'e = opM input regex+ p = putStrLn+ p ""+ case output'e of+ Left msg -> do+ p ("############################# Unexpected Error # "++show n ++ " #############################" )+ p ("Searched text: "++show input)+ p ("Regex pattern: "++show regex)+ p ("Expected output: "++show output)+ p ("Error message: "++msg)+ return [n]+ Right output'a -> do+ let output' = testOne' output'a+ case (n<0 , output==output') of+ (False,True) -> p ("Expected Pass #"++show n)+ (False,False) -> p ("############################# Unexpected Fail # "++show n ++ " #############################" )+ (True,True) -> p ("############################# Unexpected Pass # "++show n ++ " #############################" )+ (True,False) -> p ("Expected Fail #"++show n)+ if (output == output')+ then do p ("text and pattern: "++show input)+ p ("Regex pattern: "++show regex)+ p ("Outputs agree: "++show output)+ return (if n<0 then [n] else [])+ else do p ""+ p ("Searched text: "++show input)+ p ("Regex pattern: "++show regex)+ p ("Expected output: "++show output)+ p ("Actual result : "++show output')+ return (if n<0 then [] else [n])++checkFile :: (RType -> RSource -> Either String A) -> FilePath -> IO (String,[Int])+checkFile opM dataFile = do+ filepath <- getDataFileName dataFile+ putStrLn $ "\nLoading Tests from: "++show filepath+ vals <- liftM concat (mapM (checkTest opM) =<< load' filepath)+ return (filepath,vals)++checkTests :: (RType -> RSource -> Either String A) -> IO [(String, [Int])]+checkTests opM = do+ dataFileList <- return . lines =<< readFile =<< getDataFileName "test-manifest.txt"+ mapM (checkFile opM) dataFileList++manifest :: String+manifest="test-manifest.txt"++dataFiles :: [String]+dataFiles=["basic3.txt","class.txt","right-assoc.txt","left-assoc.txt","forced-assoc.txt","nullsub3.txt","repetition2.txt","totest.txt"]++type PFT a = RegexContext TDFA.Regex RType a => RType -> RSource -> Either String a++posix :: PFT a+posix x reg =+ let q :: Either String TDFA.Regex+ q = makeRegexOptsM (defaultCompOpt { TDFA.caseSensitive = False}) defaultExecOpt reg+ in q >>= \ s -> return (match s x)++unN :: String -> String+unN ('\\':'n':xs) = '\n':unN xs+unN (x:xs) = x:unN xs+unN [] = []++manual :: [String] -> IO ()+manual [sIn,rIn] = do+ let s :: RType+ r :: String+ s = fromString (unN sIn)+ r = (unN rIn)+ -- first match+ let r1 :: TDFA.Regex+ r1 = makeRegex r+ let b1u@(_,_b1s,_,_)=(match r1 s :: (RType,RType,RType,[RType]))+ putStrLn ("Searched text: "++show s)+ putStrLn ("Regex pattern: "++show r)+ print b1u+ -- multiple matches and counting+ let b1 = (match r1 s :: [MatchArray])+ c1 = (match r1 s :: Int)+ putStrLn $ "Count of matches = "++show c1+ putStrLn $ "Matches found = "++show (length b1)+ mapM_ (putStrLn . testOne') b1+manual _ = error "wrong arguments to regex-posix-unittest's manual function"++main :: IO ()+main = do+ putStr "regex-tdfa-unittest version: "+ print version+ putStr "regex-tdfa-unittest testing Text.Regex.TDFA version: "+ print TDFA.getVersion_Text_Regex_TDFA+ manifestFile <- getDataFileName manifest+ a <- getArgs+ if length a == 2+ then manual a+ else do+ putStrLn $ "Explanation and discussion of these tests on the wiki at http://www.haskell.org/haskellwiki/Regex_Posix including comparing results from different operating systems"+ putStrLn $ "Questions about this package to the author at email <TextRegexLazy@personal.mightyreason.com>"+ putStrLn $ "The type of both the pattern and test is " ++ show (typeOf (undefined :: RType))+ putStrLn $ "Without extactly two arguments:"+ putStrLn $ " This program runs all test files listed in the manifest at: "++show manifestFile+ putStrLn $ " Lines with negative number are expected to fail, others are expected to pass."+ putStrLn $ "With exactly two arguments:"+ putStrLn $ " The first argument is the text to be searched."+ putStrLn $ " The second argument is the regular expression pattern to search with."+ vals <- checkTests posix+ if null (concatMap snd vals)+ then putStrLn "\nWow, all the tests passed!"+ else putStrLn $ "\nBoo, tests failed!\n"++unlines (map show vals)++{-+-- for TRE+posix x r = let q :: Posix.Regex+ q = makeRegexOpts (defaultCompOpt .|. Posix.compRightAssoc .|. Posix.compIgnoreCase) defaultExecOpt r+ in match q x++tdfa x r = let q :: TDFA.Wrap.Regex+ q = makeRegexOpts (defaultCompOpt { TDFA.Wrap.caseSensitive = False+ , TDFA.Wrap.rightAssoc = True }) defaultExecOpt r+ in match q x++tdfa2 x r = let q :: TDFA2.Wrap.Regex+ q = makeRegexOpts (defaultCompOpt { TDFA2.Wrap.caseSensitive = False+ , TDFA2.Wrap.rightAssoc = True }) defaultExecOpt r+ in match q x+-}
+ Setup.hs view
@@ -0,0 +1,6 @@+#!/usr/bin/env runhaskell++-- I usually compile this with "ghc --make -o setup Setup.hs"++import Distribution.Simple(defaultMain)+main = defaultMain
+ data-dir/basic3.txt view
@@ -0,0 +1,142 @@+ 1 \) () (1,2)+ 2 \} } (0,1)+ 3 ] ] (0,1)+ 4 $^ NULL (0,0)+ 5 a($) aa (1,2)(2,2)+ 6 a*(^a) aa (0,1)(0,1)+ 7 (..)*(...)* a (0,0)(?,?)(?,?)+ 8 (..)*(...)* abcd (0,4)(2,4)(?,?)+ 9 (ab|a)(bc|c) abc (0,3)(0,2)(2,3)+ 10 (ab)c|abc abc (0,3)(0,2)+ 11 a{0}b ab (1,2)+ 12 (a*)(b?)(b+)b{3} aaabbbbbbb (0,10)(0,3)(3,4)(4,7)+ 13 (a*)(b{0,1})(b{1,})b{3} aaabbbbbbb (0,10)(0,3)(3,4)(4,7)+ 15 ((a|a)|a) a (0,1)(0,1)(0,1)+ 16 (a*)(a|aa) aaaa (0,4)(0,3)(3,4)+ 17 a*(a.|aa) aaaa (0,4)(2,4)+ 18 a(b)|c(d)|a(e)f aef (0,3)(?,?)(?,?)(1,2)+ 19 (a|b)?.* b (0,1)(0,1)+ 20 (a|b)c|a(b|c) ac (0,2)(0,1)(?,?)+ 21 (a|b)c|a(b|c) ab (0,2)(?,?)(1,2)+ 22 (a|b)*c|(a|ab)*c abc (0,3)(1,2)(?,?)+ 23 (a|b)*c|(a|ab)*c xc (1,2)(?,?)(?,?)+ 24 (.a|.b).*|.*(.a|.b) xa (0,2)(0,2)(?,?)+ 25 a?(ab|ba)ab abab (0,4)(0,2)+ 26 a?(ac{0}b|ba)ab abab (0,4)(0,2)+ 27 ab|abab abbabab (0,2)+ 28 aba|bab|bba baaabbbaba (5,8)+ 29 aba|bab baaabbbaba (6,9)+ 30 (aa|aaa)*|(a|aaaaa) aa (0,2)(0,2)(?,?)+ 31 (a.|.a.)*|(a|.a...) aa (0,2)(0,2)(?,?)+ 32 ab|a xabc (1,3)+ 33 ab|a xxabc (2,4)+ 34 (Ab|cD)* aBcD (0,4)(2,4)+ 35 :::1:::0:|:::1:1:0: :::0:::1:::1:::0: (8,17)+ 36 :::1:::0:|:::1:1:1: :::0:::1:::1:::0: (8,17)+ 37 [[:lower:]]+ `az{ (1,3)+ 38 [[:upper:]]+ @AZ[ (1,3)+ 39 (a)(b)(c) abc (0,3)(0,1)(1,2)(2,3)+ 43 ((((((((((((((((((((((((((((((x)))))))))))))))))))))))))))))) x (0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)+ 44 ((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))* xx (0,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)+ 45 a?(ab|ba)* ababababababababababababababababababababababababababababababababababababababababa (0,81)(79,81)+ 46 abaa|abbaa|abbbaa|abbbbaa ababbabbbabbbabbbbabbbbaa (18,25)+ 47 abaa|abbaa|abbbaa|abbbbaa ababbabbbabbbabbbbabaa (18,22)+ 48 aaac|aabc|abac|abbc|baac|babc|bbac|bbbc baaabbbabac (7,11)+ 49 aaaa|bbbb|cccc|ddddd|eeeeee|fffffff|gggg|hhhh|iiiii|jjjjj|kkkkk|llll XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa (53,57)+ 50 a*a*a*a*a*b aaaaaaaaab (0,10)+ 51 ab+bc abbc (0,4)+ 52 ab+bc abbbbc (0,6)+ 53 ab?bc abbc (0,4)+ 54 ab?bc abc (0,3)+ 55 ab?c abc (0,3)+ 56 ab|cd abc (0,2)+ 57 ab|cd abcd (0,2)+ 58 a\(b a(b (0,3)+ 59 a\(*b ab (0,2)+ 60 a\(*b a((b (0,4)+ 61 ((a)) abc (0,1)(0,1)(0,1)+ 62 (a)b(c) abc (0,3)(0,1)(2,3)+ 63 a+b+c aabbabc (4,7)+ 64 a* aaa (0,3)+ 65 (a*)* - (0,0)(0,0)+ 66 (a*)+ - (0,0)(0,0)+ 67 (a*|b)* - (0,0)(0,0)+ 68 (a+|b)* ab (0,2)(1,2)+ 69 (a+|b)+ ab (0,2)(1,2)+ 70 (a+|b)? ab (0,1)(0,1)+ 71 (^)* - (0,0)(0,0)+ 72 ([abc])*d abbbcd (0,6)(4,5)+ 73 ([abc])*bcd abcd (0,4)(0,1)+ 74 a|b|c|d|e e (0,1)+ 75 (a|b|c|d|e)f ef (0,2)(0,1)+ 76 ((a*|b))* - (0,0)(0,0)(0,0)+ 77 (ab|cd)e abcde (2,5)(2,4)+ 78 (a|b)c*d abcd (1,4)(1,2)+ 79 (ab|ab*)bc abc (0,3)(0,1)+ 80 a([bc]*)c* abc (0,3)(1,3)+ 81 a([bc]*)(c*d) abcd (0,4)(1,3)(3,4)+ 82 a([bc]+)(c*d) abcd (0,4)(1,3)(3,4)+ 83 a([bc]*)(c+d) abcd (0,4)(1,2)(2,4)+ 84 a[bcd]*dcdcde adcdcde (0,7)+ 85 (ab|a)b*c abc (0,3)(0,2)+ 86 ((a)(b)c)(d) abcd (0,4)(0,3)(0,1)(1,2)(3,4)+ 87 ^a(bc+|b[eh])g|.h$ abh (1,3)(?,?)+ 88 (bc+d$|ef*g.|h?i(j|k)) effgz (0,5)(0,5)(?,?)+ 89 (bc+d$|ef*g.|h?i(j|k)) ij (0,2)(0,2)(1,2)+ 90 (bc+d$|ef*g.|h?i(j|k)) reffgz (1,6)(1,6)(?,?)+ 91 (((((((((a))))))))) a (0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)+ 92 (.*)c(.*) abcde (0,5)(0,2)(3,5)+ 93 a(bc)d abcd (0,4)(1,3)+ 94 a[-]?c ac (0,3)+ 95 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Qaddafi (0,15)(?,?)(10,12)+ 96 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mo'ammar_Gadhafi (0,16)(?,?)(11,13)+ 97 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Kaddafi (0,15)(?,?)(10,12)+ 98 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Qadhafi (0,15)(?,?)(10,12)+ 99 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Gadafi (0,14)(?,?)(10,11)+ 100 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mu'ammar_Qadafi (0,15)(?,?)(11,12)+ 101 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moamar_Gaddafi (0,14)(?,?)(9,11)+ 102 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Mu'ammar_Qadhdhafi (0,18)(?,?)(13,15)+ 103 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Khaddafi (0,16)(?,?)(11,13)+ 104 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Ghaddafy (0,16)(?,?)(11,13)+ 105 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Ghadafi (0,15)(?,?)(11,12)+ 106 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Ghaddafi (0,16)(?,?)(11,13)+ 107 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muamar_Kaddafi (0,14)(?,?)(9,11)+ 108 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Quathafi (0,16)(?,?)(11,13)+ 109 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Muammar_Gheddafi (0,16)(?,?)(11,13)+ 110 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moammar_Khadafy (0,15)(?,?)(11,12)+ 111 M[ou]'?am+[ae]r_.*([AEae]l[-_])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy] Moammar_Qudhafi (0,15)(?,?)(10,12)+ 112 a+(b|c)*d+ aabcdd (0,6)(3,4)+ 113 ^.+$ vivi (0,4)+ 114 ^(.+)$ vivi (0,4)(0,4)+ 115 ^([^!.]+).att.com!(.+)$ gryphon.att.com!eby (0,19)(0,7)(16,19)+ 116 ^([^!]+!)?([^!]+)$ bas (0,3)(?,?)(0,3)+ 117 ^([^!]+!)?([^!]+)$ bar!bas (0,7)(0,4)(4,7)+ 118 ^([^!]+!)?([^!]+)$ foo!bas (0,7)(0,4)(4,7)+ 119 ^.+!([^!]+!)([^!]+)$ foo!bar!bas (0,11)(4,8)(8,11)+ 120 ((foo)|(bar))!bas bar!bas (0,7)(0,3)(?,?)(0,3)+ 121 ((foo)|(bar))!bas foo!bar!bas (4,11)(4,7)(?,?)(4,7)+ 122 ((foo)|(bar))!bas foo!bas (0,7)(0,3)(0,3)(?,?)+ 123 ((foo)|bar)!bas bar!bas (0,7)(0,3)(?,?)+ 124 ((foo)|bar)!bas foo!bar!bas (4,11)(4,7)(?,?)+ 125 ((foo)|bar)!bas foo!bas (0,7)(0,3)(0,3)+ 126 (foo|(bar))!bas bar!bas (0,7)(0,3)(0,3)+ 127 (foo|(bar))!bas foo!bar!bas (4,11)(4,7)(4,7)+ 128 (foo|(bar))!bas foo!bas (0,7)(0,3)(?,?)+ 129 (foo|bar)!bas bar!bas (0,7)(0,3)+ 130 (foo|bar)!bas foo!bar!bas (4,11)(4,7)+ 131 (foo|bar)!bas foo!bas (0,7)(0,3)+ 132 ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11)+ 133 ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ bas (0,3)(?,?)(0,3)(?,?)(?,?)+ 134 ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ bar!bas (0,7)(0,4)(4,7)(?,?)(?,?)+ 135 ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ foo!bar!bas (0,11)(?,?)(?,?)(4,8)(8,11)+ 136 ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ foo!bas (0,7)(0,4)(4,7)(?,?)(?,?)+ 137 ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ bas (0,3)(0,3)(?,?)(0,3)(?,?)(?,?)+ 138 ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ bar!bas (0,7)(0,7)(0,4)(4,7)(?,?)(?,?)+ 139 ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11)+ 140 ^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$ foo!bas (0,7)(0,7)(0,4)(4,7)(?,?)(?,?)+ 141 .*(/XXX).* /XXX (0,4)(0,4)+ 142 .*(\\XXX).* \XXX (0,4)(0,4)+ 143 \\XXX \XXX (0,4)+ 144 .*(/000).* /000 (0,4)(0,4)+ 145 .*(\\000).* \000 (0,4)(0,4)+ 146 \\000 \000 (0,4)
+ data-dir/class.txt view
@@ -0,0 +1,14 @@+1 aa* xaxaax (1,2)+2 (a*)(ab)*(b*) abc (0,2)(0,1)(?,?)(1,2)+-2 (a*)(ab)*(b*) abc (0,2)(0,0)(0,2)(2,2)+3 ((a*)(ab)*)((b*)(a*)) aba (0,3)(0,2)(0,0)(0,2)(2,3)(2,2)(2,3)+4 (...?.?)* xxxxxx (0,6)(4,6)+5 (a|ab)(bc|c) abcabc (0,3)(0,2)(2,3)+6 (aba|a*b)(aba|a*b) ababa (0,5)(0,2)(2,5)+7 (a*){2} xxxxx (0,0)(0,0)+8 (a*)* a (0,1)(0,1)+9 (aba|a*b)* ababa (0,5)(2,5)+10 (a(b)?)+ aba (0,3)(2,3)(?,?)+11 .*(.*) ab (0,2)(2,2)+12 (a?)((ab)?)(b?)a?(ab)?b? abab (0,4)(0,1)(1,1)(?,?)(1,2)(?,?)+-12 (a?)((ab)?)(b?)a?(ab)?b? abab (0,4)(0,1)(1,1)(?,?)(1,2)(2,4)
+ data-dir/forced-assoc.txt view
@@ -0,0 +1,28 @@+1 (a|ab)(c|bcd) abcd (0,4)(0,1)(1,4)+2 (a|ab)(bcd|c) abcd (0,4)(0,1)(1,4)+3 (ab|a)(c|bcd) abcd (0,4)(0,1)(1,4)+4 (ab|a)(bcd|c) abcd (0,4)(0,1)(1,4)+5 ((a|ab)(c|bcd))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4)+6 ((a|ab)(bcd|c))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4)+7 ((ab|a)(c|bcd))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4)+8 ((ab|a)(bcd|c))(d*) abcd (0,4)(0,4)(0,1)(1,4)(4,4)+9 (a|ab)((c|bcd)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4)+10 (a|ab)((bcd|c)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4)+11 (ab|a)((c|bcd)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4)+12 (ab|a)((bcd|c)(d*)) abcd (0,4)(0,2)(2,4)(2,3)(3,4)+13 (a*)(b|abc) abc (0,3)(0,0)(0,3)+14 (a*)(abc|b) abc (0,3)(0,0)(0,3)+15 ((a*)(b|abc))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3)+16 ((a*)(abc|b))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3)+17 (a*)((b|abc)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3)+18 (a*)((abc|b)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3)+19 (a*)(b|abc) abc (0,3)(0,0)(0,3)+20 (a*)(abc|b) abc (0,3)(0,0)(0,3)+21 ((a*)(b|abc))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3)+22 ((a*)(abc|b))(c*) abc (0,3)(0,3)(0,0)(0,3)(3,3)+23 (a*)((b|abc)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3)+24 (a*)((abc|b)(c*)) abc (0,3)(0,1)(1,3)(1,2)(2,3)+25 (a|ab) ab (0,2)(0,2)+26 (ab|a) ab (0,2)(0,2)+27 (a|ab)(b*) ab (0,2)(0,2)(2,2)+28 (ab|a)(b*) ab (0,2)(0,2)(2,2)
+ data-dir/left-assoc.txt view
@@ -0,0 +1,12 @@+-1 (a|ab)(c|bcd)(d*) abcd (0,4)(0,1)(1,4)(4,4)+-2 (a|ab)(bcd|c)(d*) abcd (0,4)(0,1)(1,4)(4,4)+-3 (ab|a)(c|bcd)(d*) abcd (0,4)(0,1)(1,4)(4,4)+-4 (ab|a)(bcd|c)(d*) abcd (0,4)(0,1)(1,4)(4,4)+-5 (a*)(b|abc)(c*) abc (0,3)(0,0)(0,3)(3,3)+-6 (a*)(abc|b)(c*) abc (0,3)(0,0)(0,3)(3,3)+-7 (a*)(b|abc)(c*) abc (0,3)(0,0)(0,3)(3,3)+-8 (a*)(abc|b)(c*) abc (0,3)(0,0)(0,3)(3,3)+-9 (a|ab)(c|bcd)(d|.*) abcd (0,4)(0,1)(1,4)(4,4)+-10 (a|ab)(bcd|c)(d|.*) abcd (0,4)(0,1)(1,4)(4,4)+-11 (ab|a)(c|bcd)(d|.*) abcd (0,4)(0,1)(1,4)(4,4)+-12 (ab|a)(bcd|c)(d|.*) abcd (0,4)(0,1)(1,4)(4,4)
+ data-dir/nullsub3.txt view
@@ -0,0 +1,51 @@+ 1 (a*)* a (0,1)(0,1)+ 2 SAME x (0,0)(0,0)+ 3 SAME aaaaaa (0,6)(0,6)+ 4 SAME aaaaaax (0,6)(0,6)+ 5 (a*)+ a (0,1)(0,1)+ 6 SAME x (0,0)(0,0)+ 7 SAME aaaaaa (0,6)(0,6)+ 8 SAME aaaaaax (0,6)(0,6)+ 9 (a+)* a (0,1)(0,1)+ 10 SAME x (0,0)(?,?)+ 11 SAME aaaaaa (0,6)(0,6)+ 12 SAME aaaaaax (0,6)(0,6)+ 13 (a+)+ a (0,1)(0,1)+ 14 SAME x NOMATCH+ 15 SAME aaaaaa (0,6)(0,6)+ 16 SAME aaaaaax (0,6)(0,6)+ 17 ([a]*)* a (0,1)(0,1)+ 18 SAME x (0,0)(0,0)+ 19 SAME aaaaaa (0,6)(0,6)+ 20 SAME aaaaaax (0,6)(0,6)+ 21 ([a]*)+ a (0,1)(0,1)+ 22 SAME x (0,0)(0,0)+ 23 SAME aaaaaa (0,6)(0,6)+ 24 SAME aaaaaax (0,6)(0,6)+ 25 ([^b]*)* a (0,1)(0,1)+ 26 SAME b (0,0)(0,0)+ 27 SAME aaaaaa (0,6)(0,6)+ 28 SAME aaaaaab (0,6)(0,6)+ 29 ([ab]*)* a (0,1)(0,1)+ 30 SAME aaaaaa (0,6)(0,6)+ 31 SAME ababab (0,6)(0,6)+ 32 SAME bababa (0,6)(0,6)+ 33 SAME b (0,1)(0,1)+ 34 SAME bbbbbb (0,6)(0,6)+ 35 SAME aaaabcde (0,5)(0,5)+ 36 ([^a]*)* b (0,1)(0,1)+ 37 SAME bbbbbb (0,6)(0,6)+ 38 SAME aaaaaa (0,0)(0,0)+ 39 ([^ab]*)* ccccxx (0,6)(0,6)+ 40 SAME ababab (0,0)(0,0)+ 41 ((z)+|a)* zabcde (0,2)(1,2)(?,?)+ 42 (a) aaa (0,1)(0,1)+ 46 (a*)*(x) x (0,1)(0,0)(0,1)+ 47 (a*)*(x) ax (0,2)(0,1)(1,2)+ 48 (a*)*(x) axa (0,2)(0,1)(1,2)+ 49 (a*)+(x) x (0,1)(0,0)(0,1)+ 50 (a*)+(x) ax (0,2)(0,1)(1,2)+ 51 (a*)+(x) axa (0,2)(0,1)(1,2)+ 52 (a*){2}(x) x (0,1)(0,0)(0,1)+ 53 (a*){2}(x) ax (0,2)(1,1)(1,2)+ 54 (a*){2}(x) axa (0,2)(1,1)(1,2)
+ data-dir/osx-bsd-critical.txt view
@@ -0,0 +1,11 @@+1 (()|.)(b) ab (0,2)(0,1)(?,?)(1,2)+-1 (()|.)(b) ab (1,2)(1,1)(1,1)(1,2)+2 (()|[ab])(b) ab (0,2)(0,1)(?,?)(1,2)+-2 (()|[ab])(b) ab (1,2)(1,1)(1,1)(1,2)+3 (()|[ab])+b aaab (0,4)(2,3)(?,?)+-3 (()|[ab])+b aaab (3,4)(3,3)(3,3)+11 (.|())(b) ab (0,2)(0,1)(?,?)(1,2)+12 ([ab]|())(b) ab (0,2)(0,1)(?,?)(1,2)+14 ([ab]|())+b aaab (0,4)(2,3)(?,?)+-14 ([ab]|())+b aaab (0,4)(3,3)(3,3)+20 (.?)(b) ab (0,2)(0,1)(1,2)
+ data-dir/repetition2.txt view
@@ -0,0 +1,79 @@+1 ((..)|(.)) NULL NOMATCH+2 ((..)|(.))((..)|(.)) NULL NOMATCH+3 ((..)|(.))((..)|(.))((..)|(.)) NULL NOMATCH+4 ((..)|(.)){1} NULL NOMATCH+5 ((..)|(.)){2} NULL NOMATCH+6 ((..)|(.)){3} NULL NOMATCH+7 ((..)|(.))* NULL (0,0)(?,?)(?,?)(?,?)+8 ((..)|(.)) a (0,1)(0,1)(?,?)(0,1)+9 ((..)|(.))((..)|(.)) a NOMATCH+10 ((..)|(.))((..)|(.))((..)|(.)) a NOMATCH+11 ((..)|(.)){1} a (0,1)(0,1)(?,?)(0,1)+12 ((..)|(.)){2} a NOMATCH+13 ((..)|(.)){3} a NOMATCH+14 ((..)|(.))* a (0,1)(0,1)(?,?)(0,1)+15 ((..)|(.)) aa (0,2)(0,2)(0,2)(?,?)+16 ((..)|(.))((..)|(.)) aa (0,2)(0,1)(?,?)(0,1)(1,2)(?,?)(1,2)+17 ((..)|(.))((..)|(.))((..)|(.)) aa NOMATCH+18 ((..)|(.)){1} aa (0,2)(0,2)(0,2)(?,?)+19 ((..)|(.)){2} aa (0,2)(1,2)(?,?)(1,2)+20 ((..)|(.)){3} aa NOMATCH+21 ((..)|(.))* aa (0,2)(0,2)(0,2)(?,?)+22 ((..)|(.)) aaa (0,2)(0,2)(0,2)(?,?)+23 ((..)|(.))((..)|(.)) aaa (0,3)(0,2)(0,2)(?,?)(2,3)(?,?)(2,3)+24 ((..)|(.))((..)|(.))((..)|(.)) aaa (0,3)(0,1)(?,?)(0,1)(1,2)(?,?)(1,2)(2,3)(?,?)(2,3)+25 ((..)|(.)){1} aaa (0,2)(0,2)(0,2)(?,?)+26 ((..)|(.)){2} aaa (0,3)(2,3)(?,?)(2,3)+27 ((..)|(.)){3} aaa (0,3)(2,3)(?,?)(2,3)+28 ((..)|(.))* aaa (0,3)(2,3)(?,?)(2,3)+29 ((..)|(.)) aaaa (0,2)(0,2)(0,2)(?,?)+30 ((..)|(.))((..)|(.)) aaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)+31 ((..)|(.))((..)|(.))((..)|(.)) aaaa (0,4)(0,2)(0,2)(?,?)(2,3)(?,?)(2,3)(3,4)(?,?)(3,4)+32 ((..)|(.)){1} aaaa (0,2)(0,2)(0,2)(?,?)+33 ((..)|(.)){2} aaaa (0,4)(2,4)(2,4)(?,?)+34 ((..)|(.)){3} aaaa (0,4)(3,4)(?,?)(3,4)+35 ((..)|(.))* aaaa (0,4)(2,4)(2,4)(?,?)+36 ((..)|(.)) aaaaa (0,2)(0,2)(0,2)(?,?)+37 ((..)|(.))((..)|(.)) aaaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)+38 ((..)|(.))((..)|(.))((..)|(.)) aaaaa (0,5)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)(4,5)(?,?)(4,5)+39 ((..)|(.)){1} aaaaa (0,2)(0,2)(0,2)(?,?)+40 ((..)|(.)){2} aaaaa (0,4)(2,4)(2,4)(?,?)+41 ((..)|(.)){3} aaaaa (0,5)(4,5)(?,?)(4,5)+42 ((..)|(.))* aaaaa (0,5)(4,5)(?,?)(4,5)+43 ((..)|(.)) aaaaaa (0,2)(0,2)(0,2)(?,?)+44 ((..)|(.))((..)|(.)) aaaaaa (0,4)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)+45 ((..)|(.))((..)|(.))((..)|(.)) aaaaaa (0,6)(0,2)(0,2)(?,?)(2,4)(2,4)(?,?)(4,6)(4,6)(?,?)+46 ((..)|(.)){1} aaaaaa (0,2)(0,2)(0,2)(?,?)+47 ((..)|(.)){2} aaaaaa (0,4)(2,4)(2,4)(?,?)+48 ((..)|(.)){3} aaaaaa (0,6)(4,6)(4,6)(?,?)+49 ((..)|(.))* aaaaaa (0,6)(4,6)(4,6)(?,?)+100 X(.?){0,}Y X1234567Y (0,9)(7,8)+101 X(.?){1,}Y X1234567Y (0,9)(7,8)+102 X(.?){2,}Y X1234567Y (0,9)(7,8)+103 X(.?){3,}Y X1234567Y (0,9)(7,8)+104 X(.?){4,}Y X1234567Y (0,9)(7,8)+105 X(.?){5,}Y X1234567Y (0,9)(7,8)+106 X(.?){6,}Y X1234567Y (0,9)(7,8)+107 X(.?){7,}Y X1234567Y (0,9)(7,8)+108 X(.?){8,}Y X1234567Y (0,9)(8,8)+110 X(.?){0,8}Y X1234567Y (0,9)(7,8)+111 X(.?){1,8}Y X1234567Y (0,9)(7,8)+112 X(.?){2,8}Y X1234567Y (0,9)(7,8)+113 X(.?){3,8}Y X1234567Y (0,9)(7,8)+114 X(.?){4,8}Y X1234567Y (0,9)(7,8)+115 X(.?){5,8}Y X1234567Y (0,9)(7,8)+116 X(.?){6,8}Y X1234567Y (0,9)(7,8)+117 X(.?){7,8}Y X1234567Y (0,9)(7,8)+118 X(.?){8,8}Y X1234567Y (0,9)(8,8)+260 (a|ab|c|bcd){0,}(d*) ababcd (0,6)(3,6)(6,6)+261 (a|ab|c|bcd){1,}(d*) ababcd (0,6)(3,6)(6,6)+262 (a|ab|c|bcd){2,}(d*) ababcd (0,6)(3,6)(6,6)+263 (a|ab|c|bcd){3,}(d*) ababcd (0,6)(3,6)(6,6)+264 (a|ab|c|bcd){4,}(d*) ababcd NOMATCH+265 (a|ab|c|bcd){0,10}(d*) ababcd (0,6)(3,6)(6,6)+266 (a|ab|c|bcd){1,10}(d*) ababcd (0,6)(3,6)(6,6)+267 (a|ab|c|bcd){2,10}(d*) ababcd (0,6)(3,6)(6,6)+268 (a|ab|c|bcd){3,10}(d*) ababcd (0,6)(3,6)(6,6)+269 (a|ab|c|bcd){4,10}(d*) ababcd NOMATCH+270 (a|ab|c|bcd)*(d*) ababcd (0,6)(3,6)(6,6)+271 (a|ab|c|bcd)+(d*) ababcd (0,6)(3,6)(6,6)
+ data-dir/right-assoc.txt view
@@ -0,0 +1,12 @@+1 (a|ab)(c|bcd)(d*) abcd (0,4)(0,2)(2,3)(3,4)+2 (a|ab)(bcd|c)(d*) abcd (0,4)(0,2)(2,3)(3,4)+3 (ab|a)(c|bcd)(d*) abcd (0,4)(0,2)(2,3)(3,4)+4 (ab|a)(bcd|c)(d*) abcd (0,4)(0,2)(2,3)(3,4)+5 (a*)(b|abc)(c*) abc (0,3)(0,1)(1,2)(2,3)+6 (a*)(abc|b)(c*) abc (0,3)(0,1)(1,2)(2,3)+7 (a*)(b|abc)(c*) abc (0,3)(0,1)(1,2)(2,3)+8 (a*)(abc|b)(c*) abc (0,3)(0,1)(1,2)(2,3)+9 (a|ab)(c|bcd)(d|.*) abcd (0,4)(0,2)(2,3)(3,4)+10 (a|ab)(bcd|c)(d|.*) abcd (0,4)(0,2)(2,3)(3,4)+11 (ab|a)(c|bcd)(d|.*) abcd (0,4)(0,2)(2,3)(3,4)+12 (ab|a)(bcd|c)(d|.*) abcd (0,4)(0,2)(2,3)(3,4)
+ data-dir/test-manifest.txt view
@@ -0,0 +1,9 @@+basic3.txt+class.txt+left-assoc.txt+right-assoc.txt+forced-assoc.txt+nullsub3.txt+repetition2.txt+totest.txt+osx-bsd-critical.txt
+ data-dir/totest.txt view
@@ -0,0 +1,87 @@+01 a+ xaax (1,3)+03 (a?)((ab)?) ab (0,2)(0,0)(0,2)(0,2)+04 (a?)((ab)?)(b?) ab (0,2)(0,1)(1,1)(?,?)(1,2)+05 ((a?)((ab)?))(b?) ab (0,2)(0,2)(0,0)(0,2)(0,2)(2,2)+06 (a?)(((ab)?)(b?)) ab (0,2)(0,1)(1,2)(1,1)(?,?)(1,2)+07 (.?) x (0,1)(0,1)+08 (.?){1} x (0,1)(0,1)+09 (.?)(.?) x (0,1)(0,1)(1,1)+10 (.?){2} x (0,1)(1,1)+11 (.?)* x (0,1)(0,1)+12 (.?.?) xxx (0,2)(0,2)+13 (.?.?){1} xxx (0,2)(0,2)+14 (.?.?)(.?.?) xxx (0,3)(0,2)(2,3)+15 (.?.?){2} xxx (0,3)(2,3)+16 (.?.?)(.?.?)(.?.?) xxx (0,3)(0,2)(2,3)(3,3)+17 (.?.?){3} xxx (0,3)(3,3)+18 (.?.?)* xxx (0,3)(2,3)+19 a?((ab)?)(b?) ab (0,2)(1,1)(?,?)(1,2)+20 (a?)((ab)?)b? ab (0,2)(0,1)(1,1)(?,?)+21 a?((ab)?)b? ab (0,2)(1,1)(?,?)+22 (a*){2} xxxxx (0,0)(0,0)+23 (ab?)(b?a) aba (0,3)(0,2)(2,3)+24 (a|ab)(ba|a) aba (0,3)(0,2)(2,3)+25 (a|ab|ba) aba (0,2)(0,2)+26 (a|ab|ba)(a|ab|ba) aba (0,3)(0,2)(2,3)+27 (a|ab|ba)* aba (0,3)(2,3)+28 (aba|a*b) ababa (0,3)(0,3)+29 (aba|a*b)(aba|a*b) ababa (0,5)(0,2)(2,5)+1029 (aba|a*b)(aba|a*b)(aba|a*b) ababa NOMATCH+30 (aba|a*b)* ababa (0,5)(2,5)+31 (aba|ab|a) ababa (0,3)(0,3)+32 (aba|ab|a)(aba|ab|a) ababa (0,5)(0,2)(2,5)+1032 (aba|ab|a)(aba|ab|a)(aba|ab|a) ababa (0,5)(0,2)(2,4)(4,5)+33 (aba|ab|a)* ababa (0,5)(2,5)+34 (a(b)?) aba (0,2)(0,2)(1,2)+35 (a(b)?)(a(b)?) aba (0,3)(0,2)(1,2)(2,3)(?,?)+36 (a(b)?)+ aba (0,3)(2,3)(?,?)+37 (.*)(.*) xx (0,2)(0,2)(2,2)+38 .*(.*) xx (0,2)(2,2)+39 (a.*z|b.*y) azbazby (0,5)(0,5)+40 (a.*z|b.*y)(a.*z|b.*y) azbazby (0,7)(0,5)(5,7)+41 (a.*z|b.*y)* azbazby (0,7)(5,7)+42 (.|..)(.*) ab (0,2)(0,2)(2,2)+43 ((..)*(...)*) xxx (0,3)(0,3)(?,?)(0,3)+44 ((..)*(...)*)((..)*(...)*) xxx (0,3)(0,3)(?,?)(0,3)(3,3)(?,?)(?,?)+45 ((..)*(...)*)* xxx (0,3)(0,3)(?,?)(0,3)+83 (aa(b(b))?)+ aabbaa (0,6)(4,6)(?,?)(?,?)+84 (a(b)?)+ aba (0,3)(2,3)(?,?)+85 ([ab]+)([bc]+)([cd]*) abcd (0,4)(0,2)(2,3)(3,4)+90 ^(A([^B]*))?(B(.*))? Aa (0,2)(0,2)(1,2)(?,?)(?,?)+91 ^(A([^B]*))?(B(.*))? Bb (0,2)(?,?)(?,?)(0,2)(1,2)+110 (^){0,3} a (0,0)(0,0)+111 ($){0,3} a (0,0)(?,?)+112 (^){1,3} a (0,0)(0,0)+113 ($){1,3} a (1,1)(1,1)+200 ((s^)|(s)|(^)|($)|(^.))* searchme (0,1)(0,1)(?,?)(0,1)(?,?)(?,?)(?,?)+201 s(()|^)e searchme (0,2)(1,1)(1,1)+202 s(^|())e searchme (0,2)(1,1)(1,1)+203 s(^|())e searchme (0,2)(1,1)(1,1)+204 s()?e searchme (0,2)(1,1)+205 s(^)?e searchme (0,2)(?,?)+206 ((s)|(e)|(a))* searchme (0,3)(2,3)(?,?)(?,?)(2,3)+207 ((s)|(e)|())* searchme (0,2)(1,2)(?,?)(1,2)(?,?)+208 ((b*)|c(c*))* cbb (0,3)(1,3)(1,3)(?,?)+209 (yyy|(x?)){2,4} yyyyyy (0,6)(3,6)(?,?)+210 ($)|() xxx (0,0)(?,?)(0,0)+211 $()|^() ac\n (0,0)(?,?)(0,0)+212 ^()|$() ac\n (0,0)(0,0)(?,?)+213 ($)?(.) __ (0,1)(?,?)(0,1)+214 (.|()|())* c (0,1)(0,1)(?,?)(?,?)+215 ((a)|(b)){2,} ab (0,2)(1,2)(?,?)(1,2)+216 .()|((.)?) NULL (0,0)(?,?)(0,0)(?,?)+217 (.|$){2,} xx (0,2)(1,2)+218 (.|$){2,2} xx (0,2)(1,2)+219 (.){2,} xx (0,2)(1,2)+220 (a|())(b|())(c|()) abc (0,3)(0,1)(?,?)(1,2)(?,?)(2,3)(?,?)+220 ab()c|ab()c() abc (0,3)(2,2)(-1,-1)(-1,-1)+250 (b(c)|d(e))* bcde (0,4)(2,4)(-1,-1)(3,4)+251 (a(b)*)* aba (0,3)(2,3)(-1,-1)+260 []] ] (0,1)+261 [^]] ] NOMATCH+262 [-] - (0,1)+263 [^-] - NOMATCH+260 []] a NOMATCH+261 [^]] a (0,1)+262 [-] a NOMATCH+263 [^-] a (0,1)
+ regex-tdfa-unittest.cabal view
@@ -0,0 +1,26 @@+name: regex-tdfa-unittest+version: 1.1+-- 1.1 add single character tests totest.txt for ] and -+cabal-version: >=1.2+license: BSD3+license-File: LICENSE+copyright: Copyright (c) 2009, Christopher Kuklewicz+author: Christopher Kuklewicz+maintainer: TextRegexLazy@personal.mightyreason.com+stability: Stable+synopsis: Unit tests for the regex-tdfa+description: Apply regex-posix-unittest tests to regex-tdfa+category: Text+tested-with: GHC+build-type: Simple+data-dir: data-dir+data-files: test-manifest.txt,+ basic3.txt,class.txt,forced-assoc.txt,nullsub3.txt,repetition2.txt,right-assoc.txt,totest.txt,left-assoc.txt,osx-bsd-critical.txt++executable regex-tdfa-unittest+ build-depends: regex-base >= 0.93.1, base >=4 && < 5, regex-tdfa >= 0.92, bytestring, containers, array, mtl+ main-is: Main.hs+ other-modules: Paths_regex_tdfa_unittest+ extensions: FlexibleInstances, FlexibleContexts,Rank2Types+ GHC-Options: -Wall -O2 -funbox-strict-fields+ GHC-Prof-Options: -auto-all