summaryrefslogtreecommitdiff
path: root/src/GF/Speech/RegExp.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF/Speech/RegExp.hs')
-rw-r--r--src/GF/Speech/RegExp.hs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/GF/Speech/RegExp.hs b/src/GF/Speech/RegExp.hs
index 1842780ee..5ee40828e 100644
--- a/src/GF/Speech/RegExp.hs
+++ b/src/GF/Speech/RegExp.hs
@@ -131,9 +131,13 @@ symbolsRE (RESymbol x) = [x]
-- Debugging
prRE :: RE String -> String
-prRE (REUnion []) = "<NULL>"
-prRE (REUnion xs) = "(" ++ concat (intersperse " | " (map prRE xs)) ++ ")"
-prRE (REConcat xs) = "(" ++ unwords (map prRE xs) ++ ")"
-prRE (RERepeat x) = "(" ++ prRE x ++ ")*"
-prRE (RESymbol s) = s
+prRE = prRE' 0
+prRE' _ (REUnion []) = "<NULL>"
+prRE' n (REUnion xs) = p n 1 (concat (intersperse " | " (map (prRE' 1) xs)))
+prRE' n (REConcat xs) = p n 2 (unwords (map (prRE' 2) xs))
+prRE' n (RERepeat x) = p n 3 (prRE' 3 x) ++ "*"
+prRE' _ (RESymbol s) = s
+
+p n m s | n >= m = "(" ++ s ++ ")"
+ | True = s