HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulelanguage-c-0.9.3Haskell2010

Language.C.Analysis.SemRep

This module contains definitions for representing C translation units. In contrast to Language.C.Syntax.AST, the representation tries to express the semantics of of a translation unit.

  • 40 types
  • 3 classes
  • 26 values
  • Packagelanguage-c-0.9.3
  • Exports69
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceSemRep.hs

Sums of tags and identifiers

10 declarations
datadata TagDef
#

Composite type definitions (tags)

Instances6Data, Show, CNode, Pos, Pretty, HasSUERef
  • Data TagDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show TagDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode TagDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos TagDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty TagDefDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • HasSUERef TagDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
classclass Declaration n where
#

All datatypes aggregating a declaration are instances of Declaration

Methods

  • getVarDecl :: n -> VarDecl

    get the name, type and declaration attributes of a declaration or definition

Instances9Declaration, …
valuedeclIdent :: Declaration n => n -> Ident
#

get the variable identifier of a declaration (only safe if the the declaration is known to have a name)

datadata IdentDecl
#

identifiers, typedefs and enumeration constants (namespace sum)

Constructors

Instances6Data, Show, CNode, Pos, Pretty, Declaration
  • Data IdentDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show IdentDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode IdentDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos IdentDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty IdentDeclDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • Declaration IdentDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep

splitIdentDecls includeAllDecls splits a map of object, function and enumerator declarations and definitions into one map holding declarations, and three maps for object definitions, enumerator definitions and function definitions. If includeAllDecls is True all declarations are present in the first map, otherwise only those where no corresponding definition is available.

Global definitions

4 declarations

Events for visitors

1 declaration
datadata DeclEvent
#

Declaration events

Those events are reported to callbacks, which are executed during the traversal.

Constructors

Instances2CNode, Pos
  • CNode DeclEventDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos DeclEventDefined in language-c-0.9.3 · Language.C.Analysis.SemRep

Declarations and definitions

9 declarations
datadata Decl
#

Declarations, which aren't definitions

Constructors

Instances6Data, Show, CNode, Pos, Pretty, Declaration
  • Data DeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show DeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode DeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos DeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty DeclDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • Declaration DeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
datadata ObjDef
#

Object Definitions

An object definition is a declaration together with an initializer.

If the initializer is missing, it is a tentative definition, i.e. a definition which might be overriden later on.

Instances6Data, Show, CNode, Pos, Pretty, Declaration
  • Data ObjDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show ObjDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode ObjDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos ObjDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty ObjDefDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • Declaration ObjDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
datadata FunDef
#

Function definitions

A function definition is a declaration together with a statement (the function body).

Instances6Data, Show, CNode, Pos, Pretty, Declaration
  • Data FunDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show FunDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode FunDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos FunDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty FunDefDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • Declaration FunDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
datadata ParamDecl
#
Instances6Data, Show, CNode, Pos, Pretty, Declaration
  • Data ParamDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show ParamDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode ParamDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos ParamDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty ParamDeclDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • Declaration ParamDeclDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
datadata MemberDecl
#

Struct/Union member declaration

Constructors

Instances6Data, Show, CNode, Pos, Pretty, Declaration
datadata TypeDef
#

typedef definitions.

The identifier is a new name for the given type.

Instances5Data, Show, CNode, Pos, Pretty
  • Data TypeDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show TypeDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode TypeDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos TypeDefDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty TypeDefDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan

Declaration attributes

12 declarations
datadata DeclAttrs
#

Declaration attributes of the form DeclAttrs isInlineFunction storage linkage attrs

They specify the storage and linkage of a declared object.

Constructors

Instances3Data, Show, Pretty
  • Data DeclAttrsDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show DeclAttrsDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty DeclAttrsDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
datadata FunctionAttrs
#
Instances5Eq, Data, Ord, Show, Pretty
datadata Storage
#

Storage duration and linkage of a variable

Constructors

Instances5Eq, Data, Ord, Show, Pretty
  • Eq StorageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Data StorageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Ord StorageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show StorageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty StorageDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
datadata Linkage
#

Linkage: Either no linkage, internal to the translation unit or external

Instances5Eq, Data, Ord, Show, Pretty
  • Eq LinkageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Data LinkageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Ord LinkageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show LinkageDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty LinkageDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan

Types

21 declarations
datadata Type
#
Instances3Data, Show, Pretty
  • Data TypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show TypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty TypeDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
datadata FunType
#

Function types are of the form FunType return-type params isVariadic.

If the parameter types aren't yet known, the function has type FunTypeIncomplete type attrs.

Instances2Data, Show
  • Data FunTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show FunTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
datadata ArraySize
#

An array type may either have unknown size or a specified array size, the latter either variable or constant. Furthermore, when used as a function parameters, the size may be qualified as static. In a function prototype, the size may be `Unspecified variable size' ([*]).

Constructors

Instances2Data, Show
  • Data ArraySizeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show ArraySizeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
classclass HasSUERef a where
#

accessor class : struct/union/enum names

Methods

Instances6HasSUERef
datadata CompTypeRef
#

composite type declarations

Instances7Data, Show, CNode, Pos, Pretty, HasCompTyKind, …
datadata CompType
#

Composite type (struct or union).

Instances7Data, Show, CNode, Pos, Pretty, HasCompTyKind, …
  • Data CompTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show CompTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode CompTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos CompTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty CompTypeDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • HasCompTyKind CompTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • HasSUERef CompTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
datadata CompTyKind
#

a tag to determine wheter we refer to a struct or union, see CompType.

Instances5Eq, Data, Ord, Show, Pretty
  • Eq CompTyKindDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Data CompTyKindDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Ord CompTyKindDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show CompTyKindDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty CompTyKindDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
datadata EnumTypeRef
#
Instances6Data, Show, CNode, Pos, Pretty, HasSUERef
datadata EnumType
#

Representation of C enumeration types

Constructors

Instances6Data, Show, CNode, Pos, Pretty, HasSUERef
  • Data EnumTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show EnumTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode EnumTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos EnumTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty EnumTypeDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • HasSUERef EnumTypeDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
datadata Enumerator
#

An Enumerator consists of an identifier, a constant expressions and the link to its type

Instances6Data, Show, CNode, Pos, Pretty, Declaration
datadata TypeQuals
#

Type qualifiers: constant, volatile and restrict

Instances5Eq, Data, Ord, Show, Pretty
  • Eq TypeQualsDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Data TypeQualsDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Ord TypeQualsDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show TypeQualsDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty TypeQualsDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan

Variable names

4 declarations
datadata VarName
#

VarName name assembler-name is a name of an declared object

Instances3Data, Show, Pretty
  • Data VarNameDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show VarNameDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty VarNameDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan

Attributes (STUB, not yet analyzed)

4 declarations
datadata Attr
#

attribute annotations

Those are of the form Attr attribute-name attribute-parameters, and serve as generic properties of some syntax tree elements.

Some examples:

  • labels can be attributed with unused to indicate that their not used

  • struct definitions can be attributed with packed to tell the compiler to use the most compact representation

  • declarations can be attributed with deprecated

  • function declarations can be attributes with noreturn to tell the compiler that the function will never return,

  • or with const to indicate that it is a pure function

TODO: ultimatively, we want to parse attributes and represent them in a typed way

Constructors

Instances6Data, Show, CNode, Pos, Pretty
  • Data AttrDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Show AttrDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • CNode AttrDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pos AttrDefined in language-c-0.9.3 · Language.C.Analysis.SemRep
  • Pretty AttrDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan
  • Pretty AttributesDefined in language-c-0.9.3 · Language.C.Analysis.Debug · orphan

Statements and Expressions (STUB, aliases to Syntax)

4 declarations
typetype Initializer = CInit
#

Initializer is currently an alias for CInit.

We're planning a normalized representation, but this depends on the implementation of constant expression evaluation