regex-pderiv 0.0.6 → 0.0.7
raw patch · 3 files changed
+32/−30 lines, 3 files
Files
- Text/Regex/PDeriv/Common.lhs +4/−2
- Text/Regex/PDeriv/Translate.lhs +27/−27
- regex-pderiv.cabal +1/−1
Text/Regex/PDeriv/Common.lhs view
@@ -5,8 +5,10 @@ > import qualified Data.IntMap as IM > import Data.List (nubBy) -> type Range = (Int,Int) -- ^ (sub)words represent by range-> type Letter = (Char,Int) -- ^ a character and its index (position)+> -- | (sub)words represent by range+> type Range = (Int,Int) +> -- | a character and its index (position)+> type Letter = (Char,Int) > class IsEmpty a where > isEmpty :: a -> Bool
Text/Regex/PDeriv/Translate.lhs view
@@ -112,7 +112,7 @@ > { EEmpty -> > do { return ( PE Empty ) > }-> {-|+> {- > e ~> p > ----------------- > ( e ) ~>_p x :: p@@ -123,7 +123,7 @@ > ; return ( PVar i [] p) > } > ; EOr es -> -> {-|+> {- > e1 ~> p1 e2 ~> p2 > ------------------- > e1|e2 ~>_p p1|p2@@ -136,7 +136,7 @@ > } > } > ; EConcat es ->-> {-| +> {- > e1 ~> p1 e2 ~> p2 > --------------------- > (e1,e2) ~>_p (p1,p2)@@ -149,7 +149,7 @@ > } > } > ; EOpt e b ->-> {-| +> {- > todo : not sure whether this makes sense > e ~> p > -------------------@@ -161,7 +161,7 @@ > ; return (PChoice p (PE Empty) g) > } > ; EPlus e b ->-> {-| +> {- > e ~> p > ------------------- > p+ ~>_p (p,p*)@@ -172,7 +172,7 @@ > ; return (PPair p (PStar p g)) > } > ; EStar e b -> -> {-| +> {- > e ~> p > ------------------- > e*~>_p p*@@ -183,7 +183,7 @@ > ; return (PStar p g) > } > ; EBound e low (Just high) b ->-> {-| we could have relax this rule to e ~> p+> {- we could have relax this rule to e ~> p > e ~>_r r > r1 = take l (repeat r) > r2 = take (h-l) (repeat r?)@@ -214,7 +214,7 @@ > ; return p > } > ; EBound e low Nothing b ->-> {-|+> {- > e ~>_r r > r1 = take l (repeat r) > r' = (r1,r*)@@ -265,7 +265,7 @@ > ; return p > } > ; EDot -> -> -- | . ~> a :: \Sigma +> -- . ~> a :: \Sigma > -- we might not need this rule > do { i <- getIncNGI > ; let r = anychar@@ -273,7 +273,7 @@ > ; return p > } > ; EAny cs ->-> -- | [ abc ] ~> a :: 'a'|'b'|'c' +> -- [ abc ] ~> a :: 'a'|'b'|'c' > -- we might not need this rule > do { i <- getIncNGI > ; let -- r = char_list_to_re cs@@ -282,7 +282,7 @@ > ; return p > } > ; ENoneOf cs ->-> -- | [^ abc] ~> a :: \Sigma - 'a'|'b'|'c' +> -- [^ abc] ~> a :: \Sigma - 'a'|'b'|'c' > -- we might not need this rule > do { i <- getIncNGI > ; let -- r = char_list_to_re (filter (\c -> not (c `elem` cs )) sigma)@@ -291,14 +291,14 @@ > ; return p > } > ; EEscape c ->-> -- | \\c ~> a :: L c +> -- \\c ~> a :: L c > -- we might not need this rule > do { i <- getIncNGI > ; let p = PVar i [] (PE (L c)) > ; return p > } > ; EChar c ->-> -- | c ~> a :: L c+> -- c ~> a :: L c > -- we might not need this rule > do { i <- getIncNGI > ; let p = PVar i [] (PE (L c))@@ -326,19 +326,19 @@ > r_trans e = > case e of > { EEmpty -> -> {-|+> {- > () ~>_r () > -} > return Empty > ; EGroup e ->-> {-| we might not need this rule+> {- we might not need this rule > e ~> r > ---------- > (e) ~> r > -} > r_trans e > ; EOr es ->-> {-|+> {- > e1 ~>_r r1 e2 ~>_r r2 > ------------------- > e1|e2 ~>_r r1|r2@@ -350,7 +350,7 @@ > } > } > ; EConcat es ->-> {-|+> {- > e1 ~>_r r1 e2 ~>_r r2 > ---------------------- > (e1,e2) ~>_r (r1,r2)@@ -362,7 +362,7 @@ > } > } > ; EOpt e b -> -> {-|+> {- > e ~>_r r > ----------- > e? ~>_r r?@@ -373,7 +373,7 @@ > ; return (Choice r Empty g) > } > ; EPlus e b -> -> {-|+> {- > e ~>_r r > --------------- > e+ ~>_r (r,r*)@@ -384,7 +384,7 @@ > ; return (Seq r (Star r g)) > } > ; EStar e b -> -> {-|+> {- > e ~>_r r > ---------------- > e* ~>_r r*@@ -395,7 +395,7 @@ > ; return (Star r g) > } > ; EBound e low (Just high) b ->-> {-|+> {- > e ~>_r r > r1 = take l (repeat r) > r2 = take (h-l) (repeat r?)@@ -424,7 +424,7 @@ > ; return r3 > } > ; EBound e low Nothing b -> -> {-|+> {- > e ~>_r r > r1 = take l (repeat r) > r' = (r1,r*)@@ -463,21 +463,21 @@ > ; return Empty > } > ; EDot -> -> -- | . ~>_r \Sigma+> -- . ~>_r \Sigma > -- return anychar > return Any > ; EAny cs ->-> -- | [ abc ] ~>_r 'a'|'b'|'c'+> -- [ abc ] ~>_r 'a'|'b'|'c' > return (char_list_to_re cs) > ; ENoneOf cs ->-> -- | [^ abc] ~>_r \Sigma - 'a'|'b'|'c'+> -- [^ abc] ~>_r \Sigma - 'a'|'b'|'c' > -- return $ char_list_to_re (filter (\c -> not (c `elem` cs )) sigma) > return (Not cs) > ; EEscape c ->-> -- | \\c ~>_r c+> -- \\c ~>_r c > return $ L c > ; EChar c ->-> -- | c ~>_r c+> -- c ~>_r c > return $ L c > } >
regex-pderiv.cabal view
@@ -1,5 +1,5 @@ Name: regex-pderiv-Version: 0.0.6+Version: 0.0.7 License: BSD3 License-File: LICENSE Copyright: Copyright (c) 2009, Kenny Zhuo Ming Lu and Martin Sulzmann