diff --git a/src/compiler/api/GF/Compile/Export.hs b/src/compiler/api/GF/Compile/Export.hs index 603244862..1b1b0be4f 100644 --- a/src/compiler/api/GF/Compile/Export.hs +++ b/src/compiler/api/GF/Compile/Export.hs @@ -34,6 +34,7 @@ exportPGF opts fmt pgf = FmtPGFPretty -> multi "txt" (showPGF) FmtCanonicalGF -> [] -- canon "gf" (render80 . abstract2canonical) FmtCanonicalJson-> [] + FmtSourceJson -> [] FmtHaskell -> multi "hs" (grammar2haskell opts name) FmtJava -> multi "java" (grammar2java opts name) FmtBNF -> single "bnf" bnfPrinter diff --git a/src/compiler/api/GF/Compiler.hs b/src/compiler/api/GF/Compiler.hs index 78ec1796e..d046063c8 100644 --- a/src/compiler/api/GF/Compiler.hs +++ b/src/compiler/api/GF/Compiler.hs @@ -72,6 +72,8 @@ compileSourceFiles opts fs = when (FmtCanonicalJson `elem` ofmts) $ do (gr_canon,_) <- runCheck (grammar2canonical opts absname gr) writeExport (render absname ++ ".json", encode (grammar2json gr_canon)) + when (FmtSourceJson `elem` ofmts) $ + do writeExport (render absname ++ ".json", encode (grammar2json gr)) where ofmts = flag optOutputFormats opts diff --git a/src/compiler/api/GF/Infra/Option.hs b/src/compiler/api/GF/Infra/Option.hs index 30e27720d..0f902f723 100644 --- a/src/compiler/api/GF/Infra/Option.hs +++ b/src/compiler/api/GF/Infra/Option.hs @@ -87,6 +87,7 @@ data Phase = Preproc | Convert | Compile | Link data OutputFormat = FmtPGFPretty | FmtCanonicalGF | FmtCanonicalJson + | FmtSourceJson | FmtJavaScript | FmtJSON | FmtPython @@ -474,6 +475,7 @@ outputFormatsExpl = [(("pgf_pretty", FmtPGFPretty),"human-readable pgf"), (("canonical_gf", FmtCanonicalGF),"Canonical GF source files"), (("canonical_json", FmtCanonicalJson),"Canonical JSON source files"), + (("source_json", FmtSourceJson),"Source grammar as a JSON file"), (("json", FmtJSON),"JSON (whole grammar)"), (("haskell", FmtHaskell),"Haskell (abstract syntax)"), (("java", FmtJava),"Java (abstract syntax)"),