Complete C tranlsation unit (C99 6.9, K&R A10)
A complete C translation unit, for example representing a C header or source file. It consists of a list of external (i.e. toplevel) declarations.
:: a typeCtrl KGHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27
Modulelanguage-c-0.9.3Haskell2010
Abstract syntax of C source and header files.
The tree structure is based on the grammar in Appendix A of K&R. The abstract syntax simplifies the concrete syntax by merging similar concrete constructs into a single type of abstract tree structure: declarations are merged with structure declarations, parameter declarations and type names, and declarators are merged with abstract declarators.
With K&R we refer to ``The C Programming Language'', second edition, Brain W. Kernighan and Dennis M. Ritchie, Prentice Hall, 1988. The AST supports all of C99 http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf and several GNU extensions http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html.
Complete C tranlsation unit (C99 6.9, K&R A10)
A complete C translation unit, for example representing a C header or source file. It consists of a list of external (i.e. toplevel) declarations.
External C declaration (C99 6.9, K&R A10)
Either a toplevel declaration, function definition or external assembler.
Functor CTranslationUnitDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CTranslUnitDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CTranslationUnitDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CTranslationUnitDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CTranslationUnit a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CTranslationUnit a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CTranslationUnit a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CTranslationUnit a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CTranslationUnit t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CTranslationUnit t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CTranslationUnit a) = D1 ('MetaData "CTranslationUnit"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CTranslUnit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CExternalDeclaration a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CTranslationUnit = D1 ('MetaData "CTranslationUnit"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CTranslUnit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CExternalDeclaration) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCDeclExt (CDeclaration a)CFDefExt (CFunctionDef a)CAsmExt (CStringLiteral a) aFunctor CExternalDeclarationDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CExtDeclDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CExternalDeclarationDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CExternalDeclarationDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CExternalDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CExternalDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CExternalDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CExternalDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CExternalDeclaration t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CExternalDeclaration t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CExternalDeclaration a) = D1 ('MetaData "CExternalDeclaration"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CDeclExt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a))) :+: (C1 ('MetaCons "CFDefExt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CFunctionDef a))) :+: C1 ('MetaCons "CAsmExt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStringLiteral a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CExternalDeclaration = D1 ('MetaData "CExternalDeclaration"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CDeclExt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CDeclaration)) :+: (C1 ('MetaCons "CFDefExt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CFunctionDef)) :+: C1 ('MetaCons "CAsmExt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CStringLiteral) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC function definition (C99 6.9.1, K&R A10.1)
A function definition is of the form CFunDef specifiers declarator decllist? stmt.
specifiers are the type and storage-class specifiers of the function.
The only storage-class specifiers allowed are extern and static.
The declarator must be such that the declared identifier has function type.
The return type shall be void or an object type other than array type.
The optional declaration list decllist is for old-style function declarations.
The statement stmt is a compound statement.
C declarations (K&R A8, C99 6.7), including structure declarations, parameter declarations and type names.
A declaration is of the form CDecl specifiers init-declarator-list, where the form of the declarator list's
elements depends on the kind of declaration:
1) Toplevel declarations (K&R A8, C99 6.7 declaration)
C99 requires that there is at least one specifier, though this is merely a syntactic restriction
at most one storage class specifier is allowed per declaration
the elements of the non-empty init-declarator-list are of the form (Just declr, init?, Nothing).
The declarator declr has to be present and non-abstract and the initialization expression is
optional.
2) Structure declarations (K&R A8.3, C99 6.7.2.1 struct-declaration)
Those are the declarations of a structure's members.
do not allow storage specifiers
in strict C99, the list of declarators has to be non-empty
the elements of init-declarator-list are either of the form (Just declr, Nothing, size?),
representing a member with optional bit-field size, or of the form (Nothing, Nothing, Just size),
for unnamed bitfields. declr has to be non-abstract.
no member of a structure shall have incomplete type
3) Parameter declarations (K&R A8.6.3, C99 6.7.5 parameter-declaration)
init-declarator-list must contain at most one triple of the form (Just declr, Nothing, Nothing),
i.e. consist of a single declarator, which is allowed to be abstract (i.e. unnamed).
4) Type names (A8.8, C99 6.7.6)
do not allow storage specifiers
init-declarator-list must contain at most one triple of the form (Just declr, Nothing, Nothing).
where declr is an abstract declarator (i.e. doesn't contain a declared identifier)
C structure or union specifiers (K&R A8.3, C99 6.7.2.1)
CStruct tag identifier struct-decls c-attrs represents a struct or union specifier (depending on tag).
either identifier or the declaration list struct-decls (or both) have to be present.
Example: in struct foo x;, the identifier is present, in struct { int y; } x the declaration list, and
in struct foo { int y; } x; both of them.
c-attrs is a list of attribute annotations associated with the struct or union specifier
C enumeration specifier (K&R A8.4, C99 6.7.2.2)
CEnum identifier enumerator-list attrs represent as enum specifier
Either the identifier or the enumerator-list (or both) have to be present.
If enumerator-list is present, it has to be non-empty.
The enumerator list is of the form (enumeration-constant, enumeration-value?), where the latter
is an optional constant integral expression.
attrs is a list of attribute annotations associated with the enumeration specifier
CFunDef [CDeclarationSpecifier a] (CDeclarator a) [CDeclaration a] (CStatement a) aFunctor CFunctionDefDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CFunDefDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CFunctionDefDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CFunctionDefDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CFunctionDef a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CFunctionDef a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CFunctionDef a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CFunctionDef a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CFunctionDef t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CFunctionDef t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CFunctionDef a) = D1 ('MetaData "CFunctionDef"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CFunDef"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CDeclarationSpecifier a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclarator a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CDeclaration a]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CFunctionDef = D1 ('MetaData "CFunctionDef"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CFunDef"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CDeclarationSpecifier) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CDeclarator)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CDeclaration) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CStatement) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCDecl [CDeclarationSpecifier a] [(Maybe (CDeclarator a), Maybe (CInitializer a), Maybe (CExpression a))] aCStaticAssert (CExpression a) (CStringLiteral a) aFunctor CDeclarationDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CDeclDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CDeclarationDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CDeclaration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CDeclaration t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CDeclaration t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CDeclaration a) = D1 ('MetaData "CDeclaration"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CDeclarationSpecifier a]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Maybe (CDeclarator a), Maybe (CInitializer a), Maybe (CExpression a))]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CStaticAssert"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStringLiteral a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTA tag to determine wheter we refer to a struct or union, see CStructUnion.
Eq CStructTagDefined in language-c-0.9.3 · Language.C.Syntax.ASTData CStructTagDefined in language-c-0.9.3 · Language.C.Syntax.ASTShow CStructTagDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric CStructTagDefined in language-c-0.9.3 · Language.C.Syntax.ASTNFData CStructTagDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CStructTagDefined in language-c-0.9.3 · Language.C.Prettytype Rep CStructTag = D1 ('MetaData "CStructTag"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CStructTag"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CUnionTag"
'PrefixI 'False) U1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCStruct CStructTag (Maybe Ident) (Maybe [CDeclaration a]) [CAttribute a] aFunctor CStructureUnionDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CStructUnionDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CStructureUnionDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CStructureUnionDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CStructureUnion a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CStructureUnion a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CStructureUnion a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CStructureUnion a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CStructureUnion t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CStructureUnion t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CStructureUnion a) = D1 ('MetaData "CStructureUnion"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CStruct"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CStructTag) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [CDeclaration a])) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CAttribute a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CStructureUnion = D1 ('MetaData "CStructureUnion"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CStruct"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CStructTag) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Maybe :.: ([] :.: Rec1 CDeclaration)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CAttribute) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCEnum (Maybe Ident) (Maybe [(Ident, Maybe (CExpression a))]) [CAttribute a] aFunctor CEnumerationDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CEnumDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CEnumerationDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CEnumerationDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CEnumeration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CEnumeration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CEnumeration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CEnumeration a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CEnumeration t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CEnumeration t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CEnumeration a) = D1 ('MetaData "CEnumeration"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CEnum"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [(Ident, Maybe (CExpression a))]))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CAttribute a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CEnumeration = D1 ('MetaData "CEnumeration"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CEnum"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Maybe :.: ([] :.: (Tuple2 Ident :.: (Maybe :.: Rec1 CExpression))))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CAttribute) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC declaration specifiers and qualifiers
Declaration specifiers include at most one storage-class specifier (C99 6.7.1), type specifiers (6.7.2) and type qualifiers (6.7.3).
Separate the declaration specifiers
attribute of a declaration qualify declarations or declarators (but not types),
and are therefore separated as well.
C storage class specifier (and typedefs) (K&R A8.1, C99 6.7.1)
C type specifier (K&R A8.2, C99 6.7.2)
Type specifiers are either basic types such as char or int,
struct, union or enum specifiers or typedef names.
As a GNU extension, a typeof expression also is a type specifier.
returns True if the given typespec is a struct, union or enum definition
C type qualifiers (K&R A8.2, C99 6.7.3) and attributes.
const, volatile and restrict type qualifiers
Additionally, attribute annotations for declarations and declarators, and
function specifiers
C function specifiers (C99 6.7.4)
function specifiers inline and _Noreturn
C alignment specifiers (C99 6.7.5)
attribute annotations
Those are of the form CAttr attribute-name attribute-parameters,
and serve as generic properties of some syntax tree elements.
Functor CFunctionSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CFunSpecDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CFunctionSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CFunctionSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CFunctionSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CFunctionSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CFunctionSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CFunctionSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CFunctionSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CFunctionSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CFunctionSpecifier a) = D1 ('MetaData "CFunctionSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CInlineQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CNoreturnQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CFunctionSpecifier = D1 ('MetaData "CFunctionSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CInlineQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CNoreturnQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCStorageSpec (CStorageSpecifier a)storage-class specifier or typedef
CTypeSpec (CTypeSpecifier a)type name
CTypeQual (CTypeQualifier a)type qualifier
CFunSpec (CFunctionSpecifier a)function specifier
CAlignSpec (CAlignmentSpecifier a)alignment specifier
Functor CDeclarationSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CDeclSpecDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CDeclarationSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CDeclarationSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CDeclarationSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CDeclarationSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CDeclarationSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CDeclarationSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CDeclarationSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CDeclarationSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CDeclarationSpecifier a) = D1 ('MetaData "CDeclarationSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((C1 ('MetaCons "CStorageSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStorageSpecifier a))) :+: C1 ('MetaCons "CTypeSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CTypeSpecifier a)))) :+: (C1 ('MetaCons "CTypeQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CTypeQualifier a))) :+: (C1 ('MetaCons "CFunSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CFunctionSpecifier a))) :+: C1 ('MetaCons "CAlignSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CAlignmentSpecifier a))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CDeclarationSpecifier = D1 ('MetaData "CDeclarationSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((C1 ('MetaCons "CStorageSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CStorageSpecifier)) :+: C1 ('MetaCons "CTypeSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CTypeSpecifier))) :+: (C1 ('MetaCons "CTypeQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CTypeQualifier)) :+: (C1 ('MetaCons "CFunSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CFunctionSpecifier)) :+: C1 ('MetaCons "CAlignSpec"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CAlignmentSpecifier)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTFunctor CStorageSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CStorageSpecDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CStorageSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CStorageSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTEq a => Eq (CStorageSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CStorageSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTOrd a => Ord (CStorageSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CStorageSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CStorageSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CStorageSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CStorageSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CStorageSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CStorageSpecifier a) = D1 ('MetaData "CStorageSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (((C1 ('MetaCons "CAuto"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CRegister"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CStatic"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CExtern"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: ((C1 ('MetaCons "CTypedef"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CThread"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CClKernel"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CClGlobal"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CClLocal"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CStorageSpecifier = D1 ('MetaData "CStorageSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (((C1 ('MetaCons "CAuto"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CRegister"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CStatic"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CExtern"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))) :+: ((C1 ('MetaCons "CTypedef"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CThread"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CClKernel"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: (C1 ('MetaCons "CClGlobal"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CClLocal"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCVoidType aCCharType aCShortType aCIntType aCLongType aCFloatType aCDoubleType aCSignedType aCUnsigType aCBoolType aCComplexType aCInt128Type aCUInt128Type aCFloatNType Int Bool aIEC 60227: width (32,64,128), extended flag
CSUType (CStructureUnion a) aStruct or Union specifier
CEnumType (CEnumeration a) aEnumeration specifier
CTypeDef Ident aTypedef name
CTypeOfExpr (CExpression a) atypeof(expr)CTypeOfType (CDeclaration a) atypeof(type)CAtomicType (CDeclaration a) a_Atomic(type)Functor CTypeSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CTypeSpecDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CTypeSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CTypeSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CTypeSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CTypeSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CTypeSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CTypeSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CTypeSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CTypeSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CTypeSpecifier a) = D1 ('MetaData "CTypeSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((((C1 ('MetaCons "CVoidType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CCharType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CShortType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CIntType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CLongType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))) :+: ((C1 ('MetaCons "CFloatType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CDoubleType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CSignedType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CUnsigType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CBoolType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))) :+: (((C1 ('MetaCons "CComplexType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CInt128Type"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CUInt128Type"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CFloatNType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CSUType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStructureUnion a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))) :+: ((C1 ('MetaCons "CEnumType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CEnumeration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CTypeDef"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CTypeOfExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CTypeOfType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CAtomicType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CTypeSpecifier = D1 ('MetaData "CTypeSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((((C1 ('MetaCons "CVoidType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CCharType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CShortType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: (C1 ('MetaCons "CIntType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CLongType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))) :+: ((C1 ('MetaCons "CFloatType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CDoubleType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CSignedType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: (C1 ('MetaCons "CUnsigType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CBoolType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))))) :+: (((C1 ('MetaCons "CComplexType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CInt128Type"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CUInt128Type"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: (C1 ('MetaCons "CFloatNType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: C1 ('MetaCons "CSUType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CStructureUnion) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))) :+: ((C1 ('MetaCons "CEnumType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CEnumeration) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CTypeDef"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CTypeOfExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CExpression) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: (C1 ('MetaCons "CTypeOfType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CDeclaration) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CAtomicType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CDeclaration) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCAlignAsType (CDeclaration a) a_Alignas(type)CAlignAsExpr (CExpression a) a_Alignas(expr)Functor CAlignmentSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CAlignSpecDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CAlignmentSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CAlignmentSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CAlignmentSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CAlignmentSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CAlignmentSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CAlignmentSpecifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CAlignmentSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CAlignmentSpecifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CAlignmentSpecifier a) = D1 ('MetaData "CAlignmentSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAlignAsType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CAlignAsExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CAlignmentSpecifier = D1 ('MetaData "CAlignmentSpecifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAlignAsType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CDeclaration) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CAlignAsExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CExpression) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))Defined in language-c-0.9.3 · Language.C.Syntax.ASTFunctor CTypeQualifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CTypeQualDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CTypeQualifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CTypeQualifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CTypeQualifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CTypeQualifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CTypeQualifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CTypeQualifier a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CTypeQualifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CTypeQualifier t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CTypeQualifier a) = D1 ('MetaData "CTypeQualifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (((C1 ('MetaCons "CConstQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CVolatQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CRestrQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CAtomicQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: ((C1 ('MetaCons "CAttrQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CAttribute a))) :+: C1 ('MetaCons "CNullableQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CNonnullQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CClRdOnlyQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CClWrOnlyQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CTypeQualifier = D1 ('MetaData "CTypeQualifier"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (((C1 ('MetaCons "CConstQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CVolatQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CRestrQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CAtomicQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))) :+: ((C1 ('MetaCons "CAttrQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CAttribute)) :+: C1 ('MetaCons "CNullableQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CNonnullQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: (C1 ('MetaCons "CClRdOnlyQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CClWrOnlyQual"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCAttr Ident [CExpression a] aFunctor CAttributeDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CAttrDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CAttributeDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CAttributeDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CAttribute a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CAttribute a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CAttribute a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CAttribute a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CAttribute t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CAttribute t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CAttribute a) = D1 ('MetaData "CAttribute"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAttr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CExpression a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CAttribute = D1 ('MetaData "CAttribute"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAttr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CExpression) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC declarator (K&R A8.5, C99 6.7.5) and abstract declarator (K&R A8.8, C99 6.7.6)
A declarator declares a single object, function, or type. It is always associated with a declaration (CDecl), which specifies the declaration's type and the additional storage qualifiers and attributes, which apply to the declared object.
A declarator is of the form CDeclr name? indirections asm-name? attrs _, where
name is the name of the declared object (missing for abstract declarators),
declquals is a set of additional declaration specifiers,
asm-name is the optional assembler name and attributes is a set of
attrs is a set of attribute annotations for the declared object.
indirections is a set of pointer, array and function declarators, which modify the type of the declared object as
described below. If the declaration specifies the non-derived type T,
and we have indirections = [D1, D2, ..., Dn] than the declared object has type
(D1 , whereindirect (D2 indirect ... (Dn indirect T)))
(CPtrDeclr attrs) is attributed pointer to Tindirect T
(CFunDeclr attrs) is attributed function returning Tindirect T
(CArrayDeclr attrs) is attributed array of elemements of type Tindirect T
Examples (simplified attributes):
x is an int
int x;
CDeclr "x" []x is a restrict pointer to a const pointer to int
const int * const * restrict x;
CDeclr "x" [CPtrDeclr [restrict], CPtrDeclr [const]]f is an function return a constant pointer to int
int* const f();
CDeclr "f" [CFunDeclr [],CPtrDeclr [const]]f is a constant pointer to a function returning int
int (* const f)(); ==>
CDeclr "f" [CPtrDeclr [const], CFunDeclr []]Derived declarators, see CDeclr
Indirections are qualified using type-qualifiers and generic attributes, and additionally
The size of an array is either a constant expression, variable length (*) or missing; in the last case, the type of the array is incomplete. The qualifier static is allowed for function arguments only, indicating that the supplied argument is an array of at least the given size.
New style parameter lists have the form Right (declarations, isVariadic), old style parameter lists have the
form Left (parameter-names)
Size of an array
CDeclr (Maybe Ident) [CDerivedDeclarator a] (Maybe (CStringLiteral a)) [CAttribute a] aFunctor CDeclaratorDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CDeclrDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CDeclaratorDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CDeclaratorDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CDeclarator t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CDeclarator t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CDeclarator a) = D1 ('MetaData "CDeclarator"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CDeclr"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CDerivedDeclarator a])) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CStringLiteral a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CAttribute a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CDeclarator = D1 ('MetaData "CDeclarator"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CDeclr"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CDerivedDeclarator)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Maybe :.: Rec1 CStringLiteral) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CAttribute) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCPtrDeclr [CTypeQualifier a] aPointer declarator CPtrDeclr tyquals declr
CArrDeclr [CTypeQualifier a] (CArraySize a) aArray declarator CArrDeclr declr tyquals size-expr?
CFunDeclr (Either [Ident] ([CDeclaration a], Bool)) [CAttribute a] aFunction declarator CFunDeclr declr (old-style-params | new-style-params) c-attrs
Functor CDerivedDeclaratorDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CDerivedDeclaratorDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CDerivedDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CDerivedDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CDerivedDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CDerivedDeclarator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CDerivedDeclarator t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CDerivedDeclarator t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CDerivedDeclarator a) = D1 ('MetaData "CDerivedDeclarator"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CPtrDeclr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CTypeQualifier a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CArrDeclr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CTypeQualifier a]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CArraySize a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CFunDeclr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either [Ident] ([CDeclaration a], Bool))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CAttribute a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNoArrSize BoolCUnknownSize isCompleteTypeCArrSize Bool (CExpression a)CArrSize isStatic exprFunctor CArraySizeDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CArrSizeDefined in language-c-0.9.3 · Language.C.PrettyGeneric1 CArraySizeDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CArraySize a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CArraySize a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CArraySize a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CArraySize a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CArraySize a) = D1 ('MetaData "CArraySize"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CNoArrSize"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: C1 ('MetaCons "CArrSize"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CArraySize = D1 ('MetaData "CArraySize"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CNoArrSize"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :+: C1 ('MetaCons "CArrSize"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CExpression)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC initialization (K&R A8.7, C99 6.7.8)
Initializers are either assignment expressions or initializer lists (surrounded in curly braces), whose elements are themselves initializers, paired with an optional list of designators.
Initializer List
The members of an initializer list are of the form (designator-list,initializer).
The designator-list specifies one member of the compound type which is initialized.
It is allowed to be empty - in this case the initializer refers to the
'next' member of the compound type (see C99 6.7.8).
Examples (simplified expressions and identifiers):
-- int x[3][4] = { [0][3] = 4, [2] = 5, 8 };
-- corresponds to the assignments
-- x[0][3] = 4; x[2][0] = 5; x[2][1] = 8;
let init1 = ([CArrDesig 0, CArrDesig 3], CInitExpr 4)
init2 = ([CArrDesig 2] , CInitExpr 5)
init3 = ([] , CInitExpr 8)
in CInitList [init1, init2, init3]-- struct { struct { int a[2]; int b[2]; int c[2]; } s; } x = { .s = { {2,3} , .c[0] = 1 } };
-- corresponds to the assignments
-- x.s.a[0] = 2; x.s.a[1] = 3; x.s.c[0] = 1;
let init_s_0 = CInitList [ ([], CInitExpr 2), ([], CInitExpr 3)]
init_s = CInitList [
([], init_s_0),
([CMemberDesig "c", CArrDesig 0], CInitExpr 1)
]
in CInitList [(CMemberDesig "s", init_s)]Designators
A designator specifies a member of an object, either an element or range of an array, or the named member of a struct / union.
CInitExpr (CExpression a) aassignment expression
CInitList (CInitializerList a) ainitialization list (see CInitList)
Functor CInitializerDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CInitDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CInitializerDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CInitializer a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CInitializer a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CInitializer a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CInitializer a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CInitializer t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CInitializer t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CInitializer a) = D1 ('MetaData "CInitializer"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CInitExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CInitList"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CInitializerList a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCArrDesig (CExpression a) aarray position designator
CMemberDesig Ident amember designator
CRangeDesig (CExpression a) (CExpression a) aarray range designator CRangeDesig from to _ (GNU C)
Functor CPartDesignatorDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CDesignatorDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CPartDesignatorDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CPartDesignator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CPartDesignator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CPartDesignator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CPartDesignator a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CPartDesignator t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CPartDesignator t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CPartDesignator a) = D1 ('MetaData "CPartDesignator"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CArrDesig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CMemberDesig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CRangeDesig"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC statement (K&R A9, C99 6.8)
C99 Block items
Things that may appear in compound statements: either statements, declarations or nested function definitions.
GNU Assembler statement
CAssemblyStatement type-qual? asm-expr out-ops in-ops clobbers _is an inline assembler statement.
The only type-qualifier (if any) allowed is volatile.
asm-expr is the actual assembler epxression (a string), out-ops and in-ops are the input
and output operands of the statement.
clobbers is a list of registers which are clobbered when executing the assembler statement
Assembler operand
CAsmOperand argName? constraintExpr arg specifies an operand for an assembler
statement.
CLabel Ident (CStatement a) [CAttribute a] aAn (attributed) label followed by a statement
CCase (CExpression a) (CStatement a) aA statement of the form case expr : stmt
CCases (CExpression a) (CExpression a) (CStatement a) aA case range of the form case lower ... upper : stmt
CDefault (CStatement a) aThe default case default : stmt
CExpr (Maybe (CExpression a)) aA simple statement, that is in C: evaluating an expression with side-effects and discarding the result.
CCompound [Ident] [CCompoundBlockItem a] acompound statement CCompound localLabels blockItems at
CIf (CExpression a) (CStatement a) (Maybe (CStatement a)) aconditional statement CIf ifExpr thenStmt maybeElseStmt at
CSwitch (CExpression a) (CStatement a) aswitch statement CSwitch selectorExpr switchStmt, where
switchStmt usually includes case, break and default
statements
CWhile (CExpression a) (CStatement a) Bool awhile or do-while statement CWhile guard stmt isDoWhile at
CFor (Either (Maybe (CExpression a)) (CDeclaration a)) (Maybe (CExpression a)) (Maybe (CExpression a)) (CStatement a) afor statement CFor init expr-2 expr-3 stmt, where init is
either a declaration or initializing expression
CGoto Ident agoto statement CGoto label
CGotoPtr (CExpression a) acomputed goto CGotoPtr labelExpr
CCont acontinue statement
CBreak abreak statement
CReturn (Maybe (CExpression a)) areturn statement CReturn returnExpr
CAsm (CAssemblyStatement a) aassembly statement
Functor CStatementDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CStatDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CStatementDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CStatement t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CStatement t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CStatement a) = D1 ('MetaData "CStatement"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((((C1 ('MetaCons "CLabel"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CAttribute a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CCase"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: (C1 ('MetaCons "CCases"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CDefault"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: ((C1 ('MetaCons "CExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CExpression a))) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CCompound"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Ident]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CCompoundBlockItem a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: (C1 ('MetaCons "CIf"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CStatement a))) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CSwitch"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))) :+: (((C1 ('MetaCons "CWhile"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CFor"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either (Maybe (CExpression a)) (CDeclaration a))) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CExpression a)))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CExpression a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))) :+: (C1 ('MetaCons "CGoto"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CGotoPtr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: ((C1 ('MetaCons "CCont"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CBreak"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CReturn"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CExpression a))) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CAsm"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CAssemblyStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCBlockStmt (CStatement a)A statement
CBlockDecl (CDeclaration a)A local declaration
CNestedFunDef (CFunctionDef a)A nested function (GNU C)
Functor CCompoundBlockItemDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CBlockItemDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CCompoundBlockItemDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CCompoundBlockItemDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CCompoundBlockItem a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CCompoundBlockItem a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CCompoundBlockItem a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CCompoundBlockItem a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CCompoundBlockItem t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CCompoundBlockItem t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CCompoundBlockItem a) = D1 ('MetaData "CCompoundBlockItem"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CBlockStmt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a))) :+: (C1 ('MetaCons "CBlockDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a))) :+: C1 ('MetaCons "CNestedFunDef"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CFunctionDef a)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CCompoundBlockItem = D1 ('MetaData "CCompoundBlockItem"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CBlockStmt"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CStatement)) :+: (C1 ('MetaCons "CBlockDecl"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CDeclaration)) :+: C1 ('MetaCons "CNestedFunDef"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CFunctionDef))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCAsmStmt (Maybe (CTypeQualifier a)) (CStringLiteral a) [CAssemblyOperand a] [CAssemblyOperand a] [CStringLiteral a] aFunctor CAssemblyStatementDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CAsmStmtDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CAssemblyStatementDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CAssemblyStatementDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CAssemblyStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CAssemblyStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CAssemblyStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CAssemblyStatement a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CAssemblyStatement t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CAssemblyStatement t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CAssemblyStatement a) = D1 ('MetaData "CAssemblyStatement"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAsmStmt"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CTypeQualifier a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStringLiteral a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CAssemblyOperand a]))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CAssemblyOperand a]) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CStringLiteral a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CAssemblyStatement = D1 ('MetaData "CAssemblyStatement"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAsmStmt"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Maybe :.: Rec1 CTypeQualifier) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CStringLiteral) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CAssemblyOperand))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CAssemblyOperand) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ([] :.: Rec1 CStringLiteral) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTCAsmOperand (Maybe Ident) (CStringLiteral a) (CExpression a) aFunctor CAssemblyOperandDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CAsmOperandDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CAssemblyOperandDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CAssemblyOperandDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CAssemblyOperand a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CAssemblyOperand a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CAssemblyOperand a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CAssemblyOperand a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CAssemblyOperand t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CAssemblyOperand t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CAssemblyOperand a) = D1 ('MetaData "CAssemblyOperand"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAsmOperand"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStringLiteral a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CAssemblyOperand = D1 ('MetaData "CAssemblyOperand"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CAsmOperand"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Ident)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CStringLiteral)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 CExpression) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC expression (K&R A7)
these can be arbitrary expression, as the argument of sizeof can be
arbitrary, even if appearing in a constant expression
GNU C extensions: alignof, __real, __imag, ({ stmt-expr }), && label and built-ins
CComma [CExpression a] aCAssign CAssignOp (CExpression a) (CExpression a) aCCond (CExpression a) (Maybe (CExpression a)) (CExpression a) aCBinary CBinaryOp (CExpression a) (CExpression a) aCCast (CDeclaration a) (CExpression a) aCUnary CUnaryOp (CExpression a) aCSizeofExpr (CExpression a) aCSizeofType (CDeclaration a) aCAlignofExpr (CExpression a) aCAlignofType (CDeclaration a) aCComplexReal (CExpression a) aCComplexImag (CExpression a) aCIndex (CExpression a) (CExpression a) aCCall (CExpression a) [CExpression a] aCMember (CExpression a) Ident Bool aCVar Ident aCConst (CConstant a)integer, character, floating point and string constants
CCompoundLit (CDeclaration a) (CInitializerList a) aC99 compound literal
CGenericSelection (CExpression a) [(Maybe (CDeclaration a), CExpression a)] aC11 generic selection
CStatExpr (CStatement a) aGNU C compound statement as expr
CLabAddrExpr Ident aGNU C address of label
CBuiltinExpr (CBuiltinThing a)builtin expressions, see CBuiltin
Functor CExpressionDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CExprDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CExpressionDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CExpression a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CExpression a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CExpression a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CExpression a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CExpression t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CExpression t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CExpression a) = D1 ('MetaData "CExpression"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((((C1 ('MetaCons "CComma"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CExpression a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CAssign"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CAssignOp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: (C1 ('MetaCons "CCond"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CExpression a)))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CBinary"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CBinaryOp) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a))) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CCast"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))) :+: ((C1 ('MetaCons "CUnary"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CUnaryOp) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CSizeofExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CSizeofType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: (C1 ('MetaCons "CAlignofExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CAlignofType"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CComplexReal"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))))) :+: (((C1 ('MetaCons "CComplexImag"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CIndex"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: (C1 ('MetaCons "CCall"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CExpression a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CMember"
'PrefixI 'False) ((S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CVar"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))) :+: ((C1 ('MetaCons "CConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CConstant a))) :+: (C1 ('MetaCons "CCompoundLit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CInitializerList a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CGenericSelection"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Maybe (CDeclaration a), CExpression a)]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))) :+: (C1 ('MetaCons "CStatExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CStatement a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: (C1 ('MetaCons "CLabAddrExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CBuiltinExpr"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CBuiltinThing a))))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC assignment operators (K&R A7.17)
Eq CAssignOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsData CAssignOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsOrd CAssignOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsShow CAssignOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsGeneric CAssignOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsNFData CAssignOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsPretty CAssignOpDefined in language-c-0.9.3 · Language.C.Prettytype Rep CAssignOp = D1 ('MetaData "CAssignOp"
"Language.C.Syntax.Ops"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (((C1 ('MetaCons "CAssignOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CMulAssOp"
'PrefixI 'False) U1) :+: (C1 ('MetaCons "CDivAssOp"
'PrefixI 'False) U1 :+: (C1 ('MetaCons "CRmdAssOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CAddAssOp"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons "CSubAssOp"
'PrefixI 'False) U1 :+: (C1 ('MetaCons "CShlAssOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CShrAssOp"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons "CAndAssOp"
'PrefixI 'False) U1 :+: (C1 ('MetaCons "CXorAssOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "COrAssOp"
'PrefixI 'False) U1))))Defined in language-c-0.9.3 · Language.C.Syntax.OpsC binary operators (K&R A7.6-15)
Eq CBinaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsData CBinaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsOrd CBinaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsShow CBinaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsGeneric CBinaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsNFData CBinaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsPretty CBinaryOpDefined in language-c-0.9.3 · Language.C.Prettytype Rep CBinaryOp = D1 ('MetaData "CBinaryOp"
"Language.C.Syntax.Ops"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((((C1 ('MetaCons "CMulOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CDivOp"
'PrefixI 'False) U1) :+: (C1 ('MetaCons "CRmdOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CAddOp"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons "CSubOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CShlOp"
'PrefixI 'False) U1) :+: (C1 ('MetaCons "CShrOp"
'PrefixI 'False) U1 :+: (C1 ('MetaCons "CLeOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CGrOp"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons "CLeqOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CGeqOp"
'PrefixI 'False) U1) :+: (C1 ('MetaCons "CEqOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CNeqOp"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons "CAndOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CXorOp"
'PrefixI 'False) U1) :+: (C1 ('MetaCons "COrOp"
'PrefixI 'False) U1 :+: (C1 ('MetaCons "CLndOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CLorOp"
'PrefixI 'False) U1)))))Defined in language-c-0.9.3 · Language.C.Syntax.OpsC unary operator (K&R A7.3-4)
CPreIncOpprefix increment operator
CPreDecOpprefix decrement operator
CPostIncOppostfix increment operator
CPostDecOppostfix decrement operator
CAdrOpaddress operator
CIndOpindirection operator
CPlusOpprefix plus
CMinOpprefix minus
CCompOpone's complement
CNegOplogical negation
Eq CUnaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsData CUnaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsOrd CUnaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsShow CUnaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsGeneric CUnaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsNFData CUnaryOpDefined in language-c-0.9.3 · Language.C.Syntax.OpsPretty CUnaryOpDefined in language-c-0.9.3 · Language.C.Prettytype Rep CUnaryOp = D1 ('MetaData "CUnaryOp"
"Language.C.Syntax.Ops"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (((C1 ('MetaCons "CPreIncOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CPreDecOp"
'PrefixI 'False) U1) :+: (C1 ('MetaCons "CPostIncOp"
'PrefixI 'False) U1 :+: (C1 ('MetaCons "CPostDecOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CAdrOp"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons "CIndOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CPlusOp"
'PrefixI 'False) U1) :+: (C1 ('MetaCons "CMinOp"
'PrefixI 'False) U1 :+: (C1 ('MetaCons "CCompOp"
'PrefixI 'False) U1 :+: C1 ('MetaCons "CNegOp"
'PrefixI 'False) U1))))Defined in language-c-0.9.3 · Language.C.Syntax.OpsGNU Builtins, which cannot be typed in C99
CBuiltinVaArg (CExpression a) (CDeclaration a) a(expr, type)CBuiltinOffsetOf (CDeclaration a) [CPartDesignator a] a(type, designator-list)CBuiltinTypesCompatible (CDeclaration a) (CDeclaration a) a(type,type)CBuiltinConvertVector (CExpression a) (CDeclaration a) a(expr, type)CBuiltinBitCast (CDeclaration a) (CExpression a) a(type, expr)Functor CBuiltinThingDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CBuiltinDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CBuiltinThingDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CBuiltinThing a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CBuiltinThing a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CBuiltinThing a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CBuiltinThing a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CBuiltinThing t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CBuiltinThing t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CBuiltinThing a) = D1 ('MetaData "CBuiltinThing"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((C1 ('MetaCons "CBuiltinVaArg"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CBuiltinOffsetOf"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CPartDesignator a]) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: (C1 ('MetaCons "CBuiltinTypesCompatible"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CBuiltinConvertVector"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: C1 ('MetaCons "CBuiltinBitCast"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CDeclaration a)) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CExpression a)) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTC constant (K&R A2.5 & A7.2)
Attributed string literals
Lift a string literal to a C constant
Functor CConstantDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CConstDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CConstantDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CConstantDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CConstant a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CConstant a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CConstant a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CConstant a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CConstant t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CConstant t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CConstant a) = D1 ('MetaData "CConstant"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((C1 ('MetaCons "CIntConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CInteger) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CCharConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CChar) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) :+: (C1 ('MetaCons "CFloatConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CFloat) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "CStrConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CString) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CConstant = D1 ('MetaData "CConstant"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) ((C1 ('MetaCons "CIntConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CInteger) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CCharConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CChar) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) :+: (C1 ('MetaCons "CFloatConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CFloat) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1) :+: C1 ('MetaCons "CStrConst"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CString) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTFunctor CStringLiteralDefined in language-c-0.9.3 · Language.C.Syntax.ASTPretty CStrLitDefined in language-c-0.9.3 · Language.C.PrettyAnnotated CStringLiteralDefined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric1 CStringLiteralDefined in language-c-0.9.3 · Language.C.Syntax.ASTData a => Data (CStringLiteral a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTShow a => Show (CStringLiteral a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTGeneric (CStringLiteral a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTNFData a => NFData (CStringLiteral a)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => CNode (CStringLiteral t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTCNode t1 => Pos (CStringLiteral t1)Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep (CStringLiteral a) = D1 ('MetaData "CStringLiteral"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CStrLit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CString) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))Defined in language-c-0.9.3 · Language.C.Syntax.ASTtype Rep1 CStringLiteral = D1 ('MetaData "CStringLiteral"
"Language.C.Syntax.AST"
"language-c-0.9.3-1R0ug4QGHoOAJ44VHsaTbU"
'False) (C1 ('MetaCons "CStrLit"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CString) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))Defined in language-c-0.9.3 · Language.C.Syntax.ASTAll AST nodes are annotated. Inspired by the Annotated
class of Niklas Broberg's haskell-src-exts package.
In principle, we could have Copointed superclass instead
of ann, for the price of another dependency.
annotation :: ast a -> aget the annotation of an AST node
amap :: (a -> a) -> ast a -> ast achange the annotation (non-recursively) of an AST node. Use fmap for recursively modifying the annotation.
Annotated CAlignmentSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CAssemblyOperandDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CAssemblyStatementDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CAttributeDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CBuiltinThingDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CCompoundBlockItemDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CConstantDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CDeclarationDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CDeclarationSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CDeclaratorDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CDerivedDeclaratorDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CEnumerationDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CExpressionDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CExternalDeclarationDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CFunctionDefDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CFunctionSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CInitializerDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CPartDesignatorDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CStatementDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CStorageSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CStringLiteralDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CStructureUnionDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CTranslationUnitDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CTypeQualifierDefined in language-c-0.9.3 · Language.C.Syntax.ASTAnnotated CTypeSpecifierDefined in language-c-0.9.3 · Language.C.Syntax.AST