summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2006-12-17 18:16:20 +0000
committerbringert <bringert@cs.chalmers.se>2006-12-17 18:16:20 +0000
commit4e592d495e402bb8e73f860197315654c3958ae4 (patch)
tree4cebf309f2965bed179fdafbd6bd18bb98d6d035 /src
parentf252bb60901ce909719f2aad11e77fba7793ac60 (diff)
Use [] in JSGF printing.
Diffstat (limited to 'src')
-rw-r--r--src/GF/Speech/PrJSGF.hs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/GF/Speech/PrJSGF.hs b/src/GF/Speech/PrJSGF.hs
index 26421d36c..90e8678f1 100644
--- a/src/GF/Speech/PrJSGF.hs
+++ b/src/GF/Speech/PrJSGF.hs
@@ -31,14 +31,16 @@ import GF.Speech.SISR
import GF.Speech.SRG
import GF.Speech.RegExp
+import Data.List
import Debug.Trace
+
jsgfPrinter :: Ident -- ^ Grammar name
-> String -- ^ Start category
-> Options
-> Maybe SISRFormat
-> Maybe Probs -> CGrammar -> String
-jsgfPrinter name start opts sisr probs cfg = trace (show srg) $ prJSGF srg sisr ""
+jsgfPrinter name start opts sisr probs cfg = prJSGF srg sisr ""
where srg = makeSimpleSRG name start opts probs cfg
prJSGF :: SRG -> Maybe SISRFormat -> ShowS
@@ -77,7 +79,10 @@ prItem :: Maybe SISRFormat -> EBnfSRGItem -> ShowS
prItem sisr = f 1
where
f _ (REUnion []) = showString "<VOID>"
- f p (REUnion xs) = (if p >= 1 then paren else id) (joinS " | " (map (f 1) xs))
+ f p (REUnion xs)
+ | not (null es) = wrap "[" (f 0 (REUnion nes)) "]"
+ | otherwise = (if p >= 1 then paren else id) (joinS " | " (map (f 1) xs))
+ where (es,nes) = partition (== REConcat []) xs
f _ (REConcat []) = showString "<NULL>"
f p (REConcat xs) = (if p >= 3 then paren else id) (unwordsS (map (f 2) xs))
f p (RERepeat x) = f 3 x . showString "*"