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

Copyright(c) [1995..2000] Manuel M. T. Chakravarty [2008..2009] Benedikt Huber
LicenseBSD-style
Maintainerbenedikt.huber@gmail.com
Stabilityexperimental
Portabilityghc
Safe HaskellNone
LanguageHaskell98

Language.C.Data.Position

Description

Source code position

Synopsis

Documentation

data Position Source

uniform representation of source file positions

position :: Int -> String -> Int -> Int -> Position Source

position absoluteOffset fileName lineNumber columnNumber initializes a Position using the given arguments

type PosLength = (Position, Int) Source

Position and length of a token

posFile :: Position -> String Source

source file

posRow :: Position -> Int Source

row (line) in the original file. Affected by #LINE pragmas.

posColumn :: Position -> Int Source

Deprecated: column number information is inaccurate in presence of macros - do not rely on it.

column in the preprocessed file. Inaccurate w.r.t. to the original file in the presence of preprocessor macros.

posOffset :: Position -> Int Source

absolute offset in the preprocessed file

initPos :: FilePath -> Position Source

initialize a Position to the start of the translation unit starting in the given file

isSourcePos :: Position -> Bool Source

returns True if the given position refers to an actual source file

nopos :: Position Source

no position (for unknown position information)

isNoPos :: Position -> Bool Source

returns True if the there is no position information available

builtinPos :: Position Source

position attached to built-in objects

isBuiltinPos :: Position -> Bool Source

returns True if the given position refers to a builtin definition

internalPos :: Position Source

position used for internal errors

isInternalPos :: Position -> Bool Source

returns True if the given position is internal

incPos :: Position -> Int -> Position Source

advance column

retPos :: Position -> Position Source

advance to next line

adjustPos :: FilePath -> Int -> Position -> Position Source

adjust position: change file and line number, reseting column to 1. This is usually used for #LINE pragmas. The absolute offset is not changed - this can be done by adjustPos newFile line . incPos (length pragma).

incOffset :: Position -> Int -> Position Source

advance just the offset

class Pos a where Source

class of type which aggregate a source code location

Methods

posOf :: a -> Position Source