aboutsummaryrefslogtreecommitdiff
path: root/tests/bkpregex/regex-indef
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bkpregex/regex-indef')
-rw-r--r--tests/bkpregex/regex-indef/Regex.hs14
-rw-r--r--tests/bkpregex/regex-indef/Str.hsig9
2 files changed, 23 insertions, 0 deletions
diff --git a/tests/bkpregex/regex-indef/Regex.hs b/tests/bkpregex/regex-indef/Regex.hs
new file mode 100644
index 0000000..506566b
--- /dev/null
+++ b/tests/bkpregex/regex-indef/Regex.hs
@@ -0,0 +1,14 @@
+module Regex where
+
+import Prelude hiding (null)
+import Str
+import Regex.Types
+
+accept :: Reg -> Str -> Bool
+accept Eps u = null u
+accept (Sym c) u = u == singleton c
+accept (Alt p q) u = accept p u || accept q u
+accept (Seq p q) u =
+ or [accept p u1 && accept q u2 | (u1, u2) <- splits u]
+accept (Rep r) u =
+ or [and [accept r ui | ui <- ps] | ps <- parts u]
diff --git a/tests/bkpregex/regex-indef/Str.hsig b/tests/bkpregex/regex-indef/Str.hsig
new file mode 100644
index 0000000..23bfb8c
--- /dev/null
+++ b/tests/bkpregex/regex-indef/Str.hsig
@@ -0,0 +1,9 @@
+signature Str where
+
+data Str
+instance Eq Str
+
+null :: Str -> Bool
+singleton :: Char -> Str
+splits :: Str -> [(Str, Str)]
+parts :: Str -> [[Str]]