summaryrefslogtreecommitdiff
path: root/src/GF/Grammar/AppPredefined.hs
diff options
context:
space:
mode:
authoraarne <unknown>2003-10-09 15:23:32 +0000
committeraarne <unknown>2003-10-09 15:23:32 +0000
commit2ee936c7e23bd690b05b8362179911a2d176f150 (patch)
tree00e54d208f21b4f0278aab96ae551ecd6cae4abc /src/GF/Grammar/AppPredefined.hs
parentddd103ccd7422c35b5af0bcb5bad5edd49b080bb (diff)
Added treatment of transfer modules. Aggregation is an example.
Diffstat (limited to 'src/GF/Grammar/AppPredefined.hs')
-rw-r--r--src/GF/Grammar/AppPredefined.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/GF/Grammar/AppPredefined.hs b/src/GF/Grammar/AppPredefined.hs
index f59c910b0..14f35a1d4 100644
--- a/src/GF/Grammar/AppPredefined.hs
+++ b/src/GF/Grammar/AppPredefined.hs
@@ -26,6 +26,7 @@ appPredefined t = case t of
("tk", EInt i, K s) -> K (take (max 0 (length s - i)) s)
("dp", EInt i, K s) -> K (drop (max 0 (length s - i)) s)
("eqStr",K s, K t) -> if s == t then predefTrue else predefFalse
+ ("occur",K s, K t) -> if substring s t then predefTrue else predefFalse
("eqInt",EInt i, EInt j) -> if i==j then predefTrue else predefFalse
("plus", EInt i, EInt j) -> EInt $ i+j
("show", _, t) -> K $ prt t
@@ -49,3 +50,10 @@ str2tag s = case s of
predefTrue = Q (IC "Predef") (IC "PTrue")
predefFalse = Q (IC "Predef") (IC "PFalse")
+
+substring :: String -> String -> Bool
+substring s t = case (s,t) of
+ (c:cs, d:ds) -> (c == d && substring cs ds) || substring s ds
+ ([],_) -> True
+ _ -> False
+