Copyright | (c) 2008 Benedikt Huber |
---|---|
License | BSD-style |
Maintainer | benedikt.huber@gmail.com |
Stability | experimental |
Portability | ghc |
Safe Haskell | None |
Language | Haskell98 |
Common data types for Language.C: Identifiers, unique names, source code locations, ast node attributes and extensible errors.
- module Language.C.Data.InputStream
- data SUERef
- 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 {}
- newNameSupply :: [Name]
- data Position
- class Pos a where
- initPos :: FilePath -> Position
- nopos :: Position
- builtinPos :: Position
- internalPos :: Position
- isSourcePos :: Position -> Bool
- isBuiltinPos :: Position -> Bool
- isInternalPos :: Position -> Bool
- data NodeInfo
- class CNode a where
- fileOfNode :: CNode a => a -> Maybe FilePath
- posOfNode :: NodeInfo -> Position
- nameOfNode :: NodeInfo -> Maybe Name
- undefNode :: NodeInfo
- mkNodeInfoOnlyPos :: Position -> NodeInfo
- mkNodeInfo :: Position -> Name -> NodeInfo
- internalNode :: NodeInfo
- module Language.C.Data.Error
Input stream
module Language.C.Data.InputStream
Identifiers
References uniquely determining a struct, union or enum type. Those are either identified by an string identifier, or by a unique name (anonymous types).
isAnonymousRef :: SUERef -> Bool Source
Return true if the struct/union/enum reference is anonymous.
C identifiers
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
Name is a unique identifier
newNameSupply :: [Name] Source
return an infinite stream of Name
s starting with nameId
0
Source code positions
uniform representation of source file positions
class of type which aggregate a source code location
initPos :: FilePath -> Position Source
initialize a Position to the start of the translation unit starting in the given file
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
Parsed entity attribute
a class for convenient access to the attributes of an attributed object
fileOfNode :: CNode a => a -> Maybe FilePath Source
nameOfNode :: NodeInfo -> Maybe Name Source
mkNodeInfoOnlyPos :: Position -> NodeInfo Source
| Given only a source position, create a new node attribute
mkNodeInfo :: Position -> Name -> NodeInfo Source
Given a source position and a unique name, create a new attribute identifier
internalNode :: NodeInfo Source
Deprecated: use undefNode instead
Extensible errors
module Language.C.Data.Error