mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
Changed nolr printer to use EBNF format.
This commit is contained in:
@@ -14,7 +14,7 @@ import GF.Speech.SRGS_ABNF
|
|||||||
import GF.Speech.SRGS_XML
|
import GF.Speech.SRGS_XML
|
||||||
import GF.Speech.JSGF
|
import GF.Speech.JSGF
|
||||||
import GF.Speech.GSL
|
import GF.Speech.GSL
|
||||||
import GF.Speech.SRG (ebnfPrinter)
|
import GF.Speech.SRG (ebnfPrinter, nonLeftRecursivePrinter)
|
||||||
import GF.Speech.VoiceXML
|
import GF.Speech.VoiceXML
|
||||||
import GF.Speech.SLF
|
import GF.Speech.SLF
|
||||||
import GF.Speech.PrRegExp
|
import GF.Speech.PrRegExp
|
||||||
@@ -39,7 +39,7 @@ exportPGF opts fmt pgf =
|
|||||||
FmtProlog_Abs -> multi "pl" grammar2prolog_abs
|
FmtProlog_Abs -> multi "pl" grammar2prolog_abs
|
||||||
FmtBNF -> single "bnf" bnfPrinter
|
FmtBNF -> single "bnf" bnfPrinter
|
||||||
FmtEBNF -> single "ebnf" ebnfPrinter
|
FmtEBNF -> single "ebnf" ebnfPrinter
|
||||||
FmtNoLR -> single "bnf" nonLeftRecursivePrinter
|
FmtNoLR -> single "ebnf" nonLeftRecursivePrinter
|
||||||
FmtRegular -> single "bnf" regularPrinter
|
FmtRegular -> single "bnf" regularPrinter
|
||||||
FmtFCFG -> single "fcfg" fcfgPrinter
|
FmtFCFG -> single "fcfg" fcfgPrinter
|
||||||
FmtSRGS_XML -> single "grxml" (srgsXmlPrinter sisr)
|
FmtSRGS_XML -> single "grxml" (srgsXmlPrinter sisr)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
--
|
--
|
||||||
-- Approximates PGF grammars with context-free grammars.
|
-- Approximates PGF grammars with context-free grammars.
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
module GF.Speech.PGFToCFG (bnfPrinter, nonLeftRecursivePrinter, regularPrinter,
|
module GF.Speech.PGFToCFG (bnfPrinter, regularPrinter,
|
||||||
fcfgPrinter, pgfToCFG) where
|
fcfgPrinter, pgfToCFG) where
|
||||||
|
|
||||||
import PGF.CId
|
import PGF.CId
|
||||||
@@ -26,9 +26,6 @@ import qualified Data.Set as Set
|
|||||||
bnfPrinter :: PGF -> CId -> String
|
bnfPrinter :: PGF -> CId -> String
|
||||||
bnfPrinter = toBNF id
|
bnfPrinter = toBNF id
|
||||||
|
|
||||||
nonLeftRecursivePrinter :: PGF -> CId -> String
|
|
||||||
nonLeftRecursivePrinter = toBNF removeLeftRecursion
|
|
||||||
|
|
||||||
regularPrinter :: PGF -> CId -> String
|
regularPrinter :: PGF -> CId -> String
|
||||||
regularPrinter = toBNF makeRegular
|
regularPrinter = toBNF makeRegular
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
module GF.Speech.SRG (SRG(..), SRGRule(..), SRGAlt(..), SRGItem, SRGSymbol
|
module GF.Speech.SRG (SRG(..), SRGRule(..), SRGAlt(..), SRGItem, SRGSymbol
|
||||||
, SRGNT, CFTerm
|
, SRGNT, CFTerm
|
||||||
, ebnfPrinter
|
, ebnfPrinter
|
||||||
|
, nonLeftRecursivePrinter
|
||||||
, makeSimpleSRG
|
, makeSimpleSRG
|
||||||
, makeNonRecursiveSRG
|
, makeNonRecursiveSRG
|
||||||
, getSpeechLanguage
|
, getSpeechLanguage
|
||||||
@@ -69,6 +70,9 @@ type SRGNT = (Cat, Int)
|
|||||||
ebnfPrinter :: PGF -> CId -> String
|
ebnfPrinter :: PGF -> CId -> String
|
||||||
ebnfPrinter pgf cnc = prSRG $ makeSRG id pgf cnc
|
ebnfPrinter pgf cnc = prSRG $ makeSRG id pgf cnc
|
||||||
|
|
||||||
|
nonLeftRecursivePrinter :: PGF -> CId -> String
|
||||||
|
nonLeftRecursivePrinter pgf cnc = prSRG $ makeSRG removeLeftRecursion pgf cnc
|
||||||
|
|
||||||
makeSRG :: (CFG -> CFG) -> PGF -> CId -> SRG
|
makeSRG :: (CFG -> CFG) -> PGF -> CId -> SRG
|
||||||
makeSRG = mkSRG cfgToSRG
|
makeSRG = mkSRG cfgToSRG
|
||||||
where
|
where
|
||||||
|
|||||||
Reference in New Issue
Block a user