| language-c-0.3.1.1: Analysis and generation of C code | Source code | Contents | Index
Language.C.Data |
Portability | ghc
Stability | experimental
Maintainer | benedikt.huber@gmail.com
Contents
Input stream Identifiers Unqiue names Source code positions Syntax tree nodes Extensible errors
Description
Common data types for Language.C: Identifiers, unique names, source code locations, ast node attributes and extensible errors.
Synopsis
module Language.C.Data.InputStream
data SUERef
= AnonymousRef Name
| NamedRef Ident
isAnonymousRef :: SUERef -> Bool
data Ident
mkIdent :: Position -> String -> Name -> Ident
identToString :: Ident -> String
internalIdent :: String -> Ident
isInternalIdent :: Ident -> Bool
builtinIdent :: String -> Ident
newtype Name = Name {
nameId :: Int
}
newNameSupply :: [Name]
data Position = Position String !Int !Int
class Pos a where
posOf :: a -> Position
initPos :: FilePath -> Position
posFile :: Position -> String
posRow :: Position -> Int
posColumn :: Position -> Int
nopos :: Position
builtinPos :: Position
internalPos :: Position
isSourcePos :: Position -> Bool
isBuiltinPos :: Position -> Bool
isInternalPos :: Position -> Bool
data NodeInfo
= OnlyPos Position
| NodeInfo Position Name
class CNode a where
nodeInfo :: a -> NodeInfo
fileOfNode :: CNode a => a -> FilePath
posOfNode :: NodeInfo -> Position
nameOfNode :: NodeInfo -> Maybe Name
internalNode :: NodeInfo
mkNodeInfoOnlyPos :: Position -> NodeInfo
mkNodeInfo :: Position -> Name -> NodeInfo
module Language.C.Data.Error
Input stream
module Language.C.Data.InputStream
Identifiers
data SUERef | Source
References uniquely determining a struct, union or enum type. Those are either identified by an string identifier, or by a unique name (anonymous types).
Constructors
AnonymousRef Name |
NamedRef Ident |
Instances
Eq SUERef
Data SUERef
Ord SUERef
Show SUERef
Typeable SUERef
Pretty SUERef
isAnonymousRef :: SUERef -> Bool | Source
Return true if the struct/union/enum reference is anonymous.
data Ident | Source
C identifiers
Instances
Eq Ident
Data Ident
Ord Ident
Show Ident
Typeable Ident
Pos Ident
CNode Ident
Pretty Ident
mkIdent :: Position -> String -> Name -> Ident | Source
build an identifier from a string. only minimal error checking, e.g., the characters of the identifier are not checked for being alphanumerical only; the correct lexis of the identifier should be ensured by the caller, e.g., the scanner. for reasons of simplicity the complete lexeme is hashed.
identToString :: Ident -> String | Source
string of an identifier
internalIdent :: String -> Ident | Source
returns an internal identifier (has internal position and no unique name)
isInternalIdent :: Ident -> Bool | Source
return `True` if the given identifier is internal
builtinIdent :: String -> Ident | Source
returns a builtin identifier (has builtin position and no unique name)
Unqiue names
newtype Name | Source
Name is a unique identifier
Constructors
Name |
nameId :: Int |
Instances
Enum Name
Eq Name
Data Name
Ord Name
Read Name
Show Name
Ix Name
Typeable Name
newNameSupply :: [Name] | Source
return an infinite stream of `Name`s starting with `nameId` 0
Source code positions
data Position | Source
uniform representation of source file positions; the order of the arguments is important as it leads to the desired ordering of source positions
Constructors
Position String !Int !Int |
Instances
Eq Position
Data Position
Ord Position
Read Position
Show Position
Typeable Position
class Pos a where | Source
class of type which aggregate a source code location
Methods
posOf :: a -> Position | Source
Instances
Pos NodeInfo
Pos Ident
Pos CStrLit
Pos CConst
Pos CBuiltin
Pos CExpr
Pos CAttr
Pos CDesignator
Pos CInit
Pos CEnum
Pos CStructUnion
Pos CTypeQual
Pos CTypeSpec
Pos CStorageSpec
Pos CDeclSpec
Pos CBlockItem
Pos CAsmOperand
Pos CAsmStmt
Pos CStat
Pos CDerivedDeclr
Pos CDeclr
Pos CDecl
Pos CFunDef
Pos CExtDecl
Pos CTranslUnit
Pos CToken
Pos Attr
Pos Enumerator
Pos EnumType
Pos CompType
Pos EnumTypeRef
Pos CompTypeRef
Pos TypeDefRef
Pos TypeDef
Pos MemberDecl
Pos ParamDecl
Pos FunDef
Pos ObjDef
Pos Decl
Pos DeclEvent
Pos IdentDecl
Pos TagDef
Pos a => Pos ([] a)
Pos a => Pos (Reversed a)
Pos (Located a)
initPos :: FilePath -> Position | Source
initialize a Position to the start of the translation unit starting in the given file
posFile :: Position -> String | Source
get the source file of the specified position. Fails unless `isSourcePos pos`.
posRow :: Position -> Int | Source
get the line number of the specified position. Fails unless `isSourcePos pos`
posColumn :: Position -> Int | Source
get the column of the specified position. Fails unless `isSourcePos pos`
nopos :: Position | Source
no position (for unknown position information)
builtinPos :: Position | Source
position attached to built-in objects
internalPos :: Position | Source
position used for internal errors
isSourcePos :: Position -> Bool | Source
returns `True` if the given position refers to an actual source file
isBuiltinPos :: Position -> Bool | Source
returns `True` if the given position refers to a builtin definition
isInternalPos :: Position -> Bool | Source
returns `True` if the given position is internal
Syntax tree nodes
data NodeInfo | Source
Parsed entity attribute
Constructors
OnlyPos Position |
NodeInfo Position Name |
Instances
Eq NodeInfo
Data NodeInfo
Ord NodeInfo
Read NodeInfo
Show NodeInfo
Typeable NodeInfo
Pos NodeInfo
CNode NodeInfo
class CNode a where | Source
a class for convenient access to the attributes of an attributed object
Methods
nodeInfo :: a -> NodeInfo | Source
Instances
CNode NodeInfo
CNode Ident
CNode CStrLit
CNode CConst
CNode CBuiltin
CNode CExpr
CNode CAttr
CNode CDesignator
CNode CInit
CNode CEnum
CNode CStructUnion
CNode CTypeQual
CNode CTypeSpec
CNode CStorageSpec
CNode CDeclSpec
CNode CBlockItem
CNode CAsmOperand
CNode CAsmStmt
CNode CStat
CNode CDerivedDeclr
CNode CDeclr
CNode CDecl
CNode CFunDef
CNode CExtDecl
CNode CTranslUnit
CNode Attr
CNode Enumerator
CNode EnumType
CNode CompType
CNode EnumTypeRef
CNode CompTypeRef
CNode TypeDefRef
CNode TypeDef
CNode MemberDecl
CNode ParamDecl
CNode FunDef
CNode ObjDef
CNode Decl
CNode DeclEvent
CNode IdentDecl
CNode TagDef
CNode TagFwdDecl
(CNode a, CNode b) => CNode (Either a b)
fileOfNode :: CNode a => a -> FilePath | Source
posOfNode :: NodeInfo -> Position | Source
nameOfNode :: NodeInfo -> Maybe Name | Source
internalNode :: NodeInfo | Source
mkNodeInfoOnlyPos :: Position -> NodeInfo | Source
Given only a source position, create a new attribute identifier
mkNodeInfo :: Position -> Name -> NodeInfo | Source
Given a source position and a unique name, create a new attribute identifier
Extensible errors
module Language.C.Data.Error
Produced by Haddock version 2.4.2