Stability | provisional |
---|---|
Safe Haskell | None |
Language | Haskell2010 |
Abstract syntax for canonical GF grammars, i.e. what's left after high-level constructions such as functors and opers have been eliminated by partial evaluation. This is intended as a common intermediate representation to simplify export to other formats.
Synopsis
- data Grammar = Grammar Abstract [Concrete]
- data Abstract = Abstract ModId Flags [CatDef] [FunDef]
- abstrName :: Abstract -> ModId
- data CatDef = CatDef CatId [CatId]
- data FunDef = FunDef FunId Type
- data Type = Type [TypeBinding] TypeApp
- data TypeApp = TypeApp CatId [Type]
- data TypeBinding = TypeBinding VarId Type
- data Concrete = Concrete ModId ModId Flags [ParamDef] [LincatDef] [LinDef]
- concName :: Concrete -> ModId
- data ParamDef
- data LincatDef = LincatDef CatId LinType
- data LinDef = LinDef FunId [VarId] LinValue
- data LinType
- newtype ParamType = ParamTypeId ParamId
- data LinValue
- = ConcatValue LinValue LinValue
- | LiteralValue LinLiteral
- | ErrorValue String
- | ParamConstant ParamValue
- | PredefValue PredefId
- | RecordValue [RecordRowValue]
- | TableValue LinType [TableRowValue]
- | TupleValue [LinValue]
- | VariantValue [LinValue]
- | VarValue VarValueId
- | PreValue [([String], LinValue)] LinValue
- | Projection LinValue LabelId
- | Selection LinValue LinValue
- | CommentedValue String LinValue
- data LinLiteral
- data LinPattern
- type ParamValue = Param LinValue
- type ParamPattern = Param LinPattern
- type ParamValueDef = Param ParamId
- data Param arg = Param ParamId [arg]
- type RecordRowType = RecordRow LinType
- type RecordRowValue = RecordRow LinValue
- type TableRowValue = TableRow LinValue
- data RecordRow rhs = RecordRow LabelId rhs
- data TableRow rhs = TableRow LinPattern rhs
- newtype PredefId = PredefId Id
- newtype LabelId = LabelId Id
- data VarValueId = VarValueId QualId
- newtype ParamId = ParamId QualId
- newtype ModId = ModId Id
- newtype CatId = CatId Id
- newtype FunId = FunId Id
- data VarId
- newtype Flags = Flags [(FlagName, FlagValue)]
- type FlagName = Id
- data FlagValue
- type Id = RawIdent
- data QualId
- class Pretty a => PPA a where
- class Pretty rhs => RhsSeparator rhs where
- semiSep :: Pretty a2 => [a2] -> [Doc]
- block :: Pretty a2 => [a2] -> Doc
Documentation
Abstract Syntax
data TypeBinding Source #
Instances
Show TypeBinding Source # | |
Defined in GF.Grammar.Canonical showsPrec :: Int -> TypeBinding -> ShowS # show :: TypeBinding -> String # showList :: [TypeBinding] -> ShowS # | |
JSON TypeBinding Source # | |
Defined in GF.Grammar.CanonicalJSON readJSON :: JSValue -> Result TypeBinding # showJSON :: TypeBinding -> JSValue # readJSONs :: JSValue -> Result [TypeBinding] # showJSONs :: [TypeBinding] -> JSValue # | |
Pretty TypeBinding Source # | |
Defined in GF.Grammar.Canonical pp :: TypeBinding -> Doc Source # ppList :: [TypeBinding] -> Doc Source # |
Concreate syntax
Linearization type, RHS of lincat
FloatType | |
IntType | |
ParamType ParamType | |
RecordType [RecordRowType] | |
StrType | |
TableType LinType LinType | |
TupleType [LinType] |
Linearization value, RHS of lin
data LinLiteral Source #
Instances
data LinPattern Source #
ParamPattern ParamPattern | |
RecordPattern [RecordRow LinPattern] | |
TuplePattern [LinPattern] | |
WildPattern |
Instances
type ParamValue = Param LinValue Source #
type ParamPattern = Param LinPattern Source #
type ParamValueDef = Param ParamId Source #
Instances
Functor Param Source # | |
Foldable Param Source # | |
Defined in GF.Grammar.Canonical fold :: Monoid m => Param m -> m # foldMap :: Monoid m => (a -> m) -> Param a -> m # foldMap' :: Monoid m => (a -> m) -> Param a -> m # foldr :: (a -> b -> b) -> b -> Param a -> b # foldr' :: (a -> b -> b) -> b -> Param a -> b # foldl :: (b -> a -> b) -> b -> Param a -> b # foldl' :: (b -> a -> b) -> b -> Param a -> b # foldr1 :: (a -> a -> a) -> Param a -> a # foldl1 :: (a -> a -> a) -> Param a -> a # elem :: Eq a => a -> Param a -> Bool # maximum :: Ord a => Param a -> a # minimum :: Ord a => Param a -> a # | |
Traversable Param Source # | |
Eq arg => Eq (Param arg) Source # | |
Ord arg => Ord (Param arg) Source # | |
Defined in GF.Grammar.Canonical | |
Show arg => Show (Param arg) Source # | |
JSON arg => JSON (Param arg) Source # | |
PPA arg => Pretty (Param arg) Source # | |
PPA arg => PPA (Param arg) Source # | |
type RecordRowType = RecordRow LinType Source #
type RecordRowValue = RecordRow LinValue Source #
type TableRowValue = TableRow LinValue Source #
Instances
TableRow LinPattern rhs |
Instances
Functor TableRow Source # | |
Foldable TableRow Source # | |
Defined in GF.Grammar.Canonical fold :: Monoid m => TableRow m -> m # foldMap :: Monoid m => (a -> m) -> TableRow a -> m # foldMap' :: Monoid m => (a -> m) -> TableRow a -> m # foldr :: (a -> b -> b) -> b -> TableRow a -> b # foldr' :: (a -> b -> b) -> b -> TableRow a -> b # foldl :: (b -> a -> b) -> b -> TableRow a -> b # foldl' :: (b -> a -> b) -> b -> TableRow a -> b # foldr1 :: (a -> a -> a) -> TableRow a -> a # foldl1 :: (a -> a -> a) -> TableRow a -> a # elem :: Eq a => a -> TableRow a -> Bool # maximum :: Ord a => TableRow a -> a # minimum :: Ord a => TableRow a -> a # | |
Traversable TableRow Source # | |
Eq rhs => Eq (TableRow rhs) Source # | |
Ord rhs => Ord (TableRow rhs) Source # | |
Defined in GF.Grammar.Canonical | |
Show rhs => Show (TableRow rhs) Source # | |
JSON rhs => JSON (TableRow rhs) Source # | |
Pretty rhs => Pretty (TableRow rhs) Source # | |
Identifiers in Concrete Syntax
data VarValueId Source #
Instances
Name of param type or param value
Used in both Abstract and Concrete Syntax
Identifiers
Pretty printing
class Pretty a => PPA a where Source #
Pretty print atomically (i.e. wrap it in parentheses if necessary)
Instances
PPA QualId Source # | |
PPA ParamId Source # | |
PPA PredefId Source # | |
PPA LinPattern Source # | |
Defined in GF.Grammar.Canonical ppA :: LinPattern -> Doc Source # | |
PPA LinLiteral Source # | |
Defined in GF.Grammar.Canonical ppA :: LinLiteral -> Doc Source # | |
PPA LinValue Source # | |
PPA Type Source # | |
PPA arg => PPA (Param arg) Source # | |
class Pretty rhs => RhsSeparator rhs where Source #
Instances
RhsSeparator LinPattern Source # | |
Defined in GF.Grammar.Canonical rhsSep :: LinPattern -> Doc Source # | |
RhsSeparator LinValue Source # | |
RhsSeparator LinType Source # | |