forked from GitHub/gf-core
Added "bnf" output format for debugging.
This commit is contained in:
@@ -7,6 +7,8 @@ import PGF.Raw.Convert (fromPGF)
|
|||||||
import GF.Compile.GFCCtoHaskell
|
import GF.Compile.GFCCtoHaskell
|
||||||
import GF.Compile.GFCCtoJS
|
import GF.Compile.GFCCtoJS
|
||||||
import GF.Infra.Option
|
import GF.Infra.Option
|
||||||
|
import GF.Speech.CFG
|
||||||
|
import GF.Speech.PGFToCFG
|
||||||
import GF.Speech.SRGS
|
import GF.Speech.SRGS
|
||||||
import GF.Text.UTF8
|
import GF.Text.UTF8
|
||||||
|
|
||||||
@@ -22,6 +24,7 @@ prPGF fmt gr name = case fmt of
|
|||||||
FmtJavaScript -> pgf2js gr
|
FmtJavaScript -> pgf2js gr
|
||||||
FmtHaskell -> grammar2haskell gr name
|
FmtHaskell -> grammar2haskell gr name
|
||||||
FmtHaskell_GADT -> grammar2haskellGADT gr name
|
FmtHaskell_GADT -> grammar2haskellGADT gr name
|
||||||
|
FmtBNF -> prCFG $ pgfToCFG gr (outputConcr gr)
|
||||||
FmtSRGS_XML -> srgsXmlPrinter Nothing gr (outputConcr gr)
|
FmtSRGS_XML -> srgsXmlPrinter Nothing gr (outputConcr gr)
|
||||||
|
|
||||||
-- | Get the name of the concrete syntax to generate output from.
|
-- | Get the name of the concrete syntax to generate output from.
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ data OutputFormat = FmtPGF
|
|||||||
| FmtJavaScript
|
| FmtJavaScript
|
||||||
| FmtHaskell
|
| FmtHaskell
|
||||||
| FmtHaskell_GADT
|
| FmtHaskell_GADT
|
||||||
|
| FmtBNF
|
||||||
| FmtSRGS_XML
|
| FmtSRGS_XML
|
||||||
| FmtSRGS_ABNF
|
| FmtSRGS_ABNF
|
||||||
| FmtJSGF
|
| FmtJSGF
|
||||||
@@ -418,6 +419,7 @@ outputFormats =
|
|||||||
("js", FmtJavaScript),
|
("js", FmtJavaScript),
|
||||||
("haskell", FmtHaskell),
|
("haskell", FmtHaskell),
|
||||||
("haskell_gadt", FmtHaskell_GADT),
|
("haskell_gadt", FmtHaskell_GADT),
|
||||||
|
("bnf", FmtBNF),
|
||||||
("srgs", FmtSRGS_XML),
|
("srgs", FmtSRGS_XML),
|
||||||
("srgs_xml", FmtSRGS_XML),
|
("srgs_xml", FmtSRGS_XML),
|
||||||
("srgs_abnf", FmtSRGS_ABNF),
|
("srgs_abnf", FmtSRGS_ABNF),
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ countRules = length . allRules
|
|||||||
prCFG :: CFG -> String
|
prCFG :: CFG -> String
|
||||||
prCFG = unlines . map prRule . allRules
|
prCFG = unlines . map prRule . allRules
|
||||||
where
|
where
|
||||||
prRule r = lhsCat r ++ " --> " ++ unwords (map prSym (ruleRhs r))
|
prRule r = lhsCat r ++ " ::= " ++ unwords (map prSym (ruleRhs r))
|
||||||
prSym = symbol id (\t -> "\""++ t ++"\"")
|
prSym = symbol id (\t -> "\""++ t ++"\"")
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ fmtExtension FmtPGF = "pgf"
|
|||||||
fmtExtension FmtJavaScript = "js"
|
fmtExtension FmtJavaScript = "js"
|
||||||
fmtExtension FmtHaskell = "hs"
|
fmtExtension FmtHaskell = "hs"
|
||||||
fmtExtension FmtHaskell_GADT = "hs"
|
fmtExtension FmtHaskell_GADT = "hs"
|
||||||
|
fmtExtension FmtBNF = "bnf"
|
||||||
fmtExtension FmtSRGS_XML = "grxml"
|
fmtExtension FmtSRGS_XML = "grxml"
|
||||||
|
|
||||||
writeOutputFile :: FilePath -> String -> IOE ()
|
writeOutputFile :: FilePath -> String -> IOE ()
|
||||||
|
|||||||
Reference in New Issue
Block a user