1
0
forked from GitHub/gf-core

Translating linearization functions to Haskell: support for variants

By adding the flag -haskell=variants to the command line, GF will now generate
linearization functions in Haskell that support variants. Variants are
represented as lists in Haskell.

Variants inside pre { ... } expressions are still ignored.

TODO: apply some monad laws to generate more compact code (using an
intermediate representation of the generated Haskell code, instead of
pretty printing directly from the GF code).
This commit is contained in:
hallgren
2015-02-09 16:24:33 +00:00
parent 3509ee650d
commit 8e4e8da105
3 changed files with 91 additions and 49 deletions

View File

@@ -126,7 +126,7 @@ data CFGTransform = CFGNoLR
deriving (Show,Eq,Ord)
data HaskellOption = HaskellNoPrefix | HaskellGADT | HaskellLexical
| HaskellConcrete
| HaskellConcrete | HaskellVariants
deriving (Show,Eq,Ord)
data Warning = WarnMissingLincat
@@ -521,7 +521,8 @@ haskellOptionNames =
[("noprefix", HaskellNoPrefix),
("gadt", HaskellGADT),
("lexical", HaskellLexical),
("concrete", HaskellConcrete)]
("concrete", HaskellConcrete),
("variants", HaskellVariants)]
-- | This is for bacward compatibility. Since GHC 6.12 we
-- started using the native Unicode support in GHC but it