summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2015-12-01 15:14:27 +0000
committerhallgren <hallgren@chalmers.se>2015-12-01 15:14:27 +0000
commit5bb792be5e3416a2229d549d57f02b54829c470b (patch)
treeb5ec6bcfbbc289a4670a125f0afdec116c011e2b
parentd6ae5e811b7d61ab714b2cab1437af2c350aefb6 (diff)
GF.Data.Str: change matchPrefix to agree with the GF book and the run-time system
The matchPrefix function is used in str2strings and the partial evaluator to compute pre{...} tokens. But unlike the description in the GF book and the implementation in the run-time system, matchPrefix looked at the concatenation(!) of all following tokens and not just the next token when deciding how to compute a pre{...} token. This is a backwards incompatible change, but it is subtle and probably won't cause any problems. In particular, the example grammars are unaffected.
-rw-r--r--src/compiler/GF/Data/Str.hs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/GF/Data/Str.hs b/src/compiler/GF/Data/Str.hs
index 7b79add0a..7f1f4db75 100644
--- a/src/compiler/GF/Data/Str.hs
+++ b/src/compiler/GF/Data/Str.hs
@@ -44,8 +44,8 @@ type Ss = [String]
-- matching functions in both ways
matchPrefix :: Ss -> [(Ss,[String])] -> [String] -> Ss
-matchPrefix s vs t =
- head $ [u | let t' = concat (unmarkup t),
+matchPrefix s vs t =
+ head $ [u | t':_ <- [unmarkup t],
(u,as) <- vs,
any (`isPrefixOf` t') as]
++ [s]