summaryrefslogtreecommitdiff
path: root/src-3.0/GF/Compile/Export.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src-3.0/GF/Compile/Export.hs')
-rw-r--r--src-3.0/GF/Compile/Export.hs20
1 files changed, 15 insertions, 5 deletions
diff --git a/src-3.0/GF/Compile/Export.hs b/src-3.0/GF/Compile/Export.hs
index d6780147e..81d9e3140 100644
--- a/src-3.0/GF/Compile/Export.hs
+++ b/src-3.0/GF/Compile/Export.hs
@@ -1,11 +1,13 @@
module GF.Compile.Export where
-import PGF.Data (PGF)
+import PGF.CId
+import PGF.Data (PGF(..))
import PGF.Raw.Print (printTree)
import PGF.Raw.Convert (fromPGF)
import GF.Compile.GFCCtoHaskell
import GF.Compile.GFCCtoJS
import GF.Infra.Option
+import GF.Speech.SRGS
import GF.Text.UTF8
-- top-level access to code generation
@@ -16,10 +18,18 @@ prPGF :: OutputFormat
-- module name.
-> String
prPGF fmt gr name = case fmt of
- FmtPGF -> printPGF gr
- FmtJavaScript -> pgf2js gr
- FmtHaskell -> grammar2haskell gr name
- FmtHaskellGADT -> grammar2haskellGADT gr name
+ FmtPGF -> printPGF gr
+ FmtJavaScript -> pgf2js gr
+ FmtHaskell -> grammar2haskell gr name
+ FmtHaskell_GADT -> grammar2haskellGADT gr name
+ FmtSRGS_XML -> srgsXmlPrinter Nothing gr (outputConcr gr)
+
+-- | Get the name of the concrete syntax to generate output from.
+-- FIXME: there should be an option to change this.
+outputConcr :: PGF -> CId
+outputConcr pgf = case cncnames pgf of
+ [] -> error "No concrete syntax."
+ cnc:_ -> cnc
printPGF :: PGF -> String
printPGF = encodeUTF8 . printTree . fromPGF