 | language-c-0.3.1.1: Analysis and generation of C code | Contents | Index |
|
Language.C.Data | Portability | ghc | Stability | experimental | Maintainer | benedikt.huber@gmail.com |
|
|
|
|
|
Description |
Common data types for Language.C: Identifiers, unique names, source code locations,
ast node attributes and extensible errors.
|
|
Synopsis |
|
|
|
|
Input stream
|
|
module Language.C.Data.InputStream |
|
Identifiers
|
|
data SUERef |
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 | | Instances | |
|
|
isAnonymousRef :: SUERef -> Bool |
Return true if the struct/union/enum reference is anonymous.
|
|
data Ident |
C identifiers
| Instances | |
|
|
mkIdent :: Position -> String -> Name -> Ident |
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 |
string of an identifier
|
|
internalIdent :: String -> Ident |
returns an internal identifier (has internal position and no unique name)
|
|
isInternalIdent :: Ident -> Bool |
return True if the given identifier is internal
|
|
builtinIdent :: String -> Ident |
returns a builtin identifier (has builtin position and no unique name)
|
|
Unqiue names
|
|
newtype Name |
Name is a unique identifier
| Constructors | | Instances | |
|
|
newNameSupply :: [Name] |
return an infinite stream of Names starting with nameId 0
|
|
Source code positions
|
|
data Position |
uniform representation of source file positions; the order of the arguments
is important as it leads to the desired ordering of source positions
| Constructors | | Instances | |
|
|
class Pos a where |
class of type which aggregate a source code location
| | Methods | | | Instances | |
|
|
initPos :: FilePath -> Position |
initialize a Position to the start of the translation unit starting in the given file
|
|
posFile :: Position -> String |
get the source file of the specified position. Fails unless isSourcePos pos.
|
|
posRow :: Position -> Int |
get the line number of the specified position. Fails unless isSourcePos pos
|
|
posColumn :: Position -> Int |
get the column of the specified position. Fails unless isSourcePos pos
|
|
nopos :: Position |
no position (for unknown position information)
|
|
builtinPos :: Position |
position attached to built-in objects
|
|
internalPos :: Position |
position used for internal errors
|
|
isSourcePos :: Position -> Bool |
returns True if the given position refers to an actual source file
|
|
isBuiltinPos :: Position -> Bool |
returns True if the given position refers to a builtin definition
|
|
isInternalPos :: Position -> Bool |
returns True if the given position is internal
|
|
Syntax tree nodes
|
|
data NodeInfo |
Parsed entity attribute
| Constructors | | Instances | |
|
|
class CNode a where |
a class for convenient access to the attributes of an attributed object
| | Methods | | | Instances | |
|
|
fileOfNode :: CNode a => a -> FilePath |
|
posOfNode :: NodeInfo -> Position |
|
nameOfNode :: NodeInfo -> Maybe Name |
|
internalNode :: NodeInfo |
|
mkNodeInfoOnlyPos :: Position -> NodeInfo |
Given only a source position, create a new attribute identifier
|
|
mkNodeInfo :: Position -> Name -> NodeInfo |
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.7.2 |