language-c-0.4.7: Analysis and generation of C code

Copyright(c) [1995..1999] Manuel M. T. Chakravarty (c) 2008 Benedikt Huber
Safe HaskellNone



This module provides the notion of identifiers in C, speed up using hashing. Identifiers are associated optionally associated with a NodeInfo, i.e. with a unique Name and a source location (Position). The ordering relation on identifiers is based on the hash and does not follow the lexical order.



data Ident Source

C identifiers


Ident String !Int NodeInfo 

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).

isAnonymousRef :: SUERef -> Bool Source

Return true if the struct/union/enum reference is anonymous.

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.

builtinIdent :: String -> Ident Source

returns a builtin identifier (has builtin position and no unique name)

internalIdent :: String -> Ident Source

returns an internal identifier (has internal position and no unique name)

internalIdentAt :: Position -> String -> Ident Source

return an internal identifier with position info

isInternalIdent :: Ident -> Bool Source

return True if the given identifier is internal

identToString :: Ident -> String Source

string of an identifier

dumpIdent :: Ident -> String Source

dump the identifier string and its positions for debugging purposes