1
0
forked from GitHub/gf-core

Export a grammar in source format to JSON

This commit is contained in:
Krasimir Angelov
2025-04-14 11:16:27 +02:00
parent 3432e6f571
commit cc4d07f168
3 changed files with 5 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)"),