| haskell-src-exts-1.9.0: Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer | Source code | Contents | Index

Language.Haskell.Exts.SrcLoc

Portability | portable
Stability | stable
Maintainer | Niklas Broberg, d00nibro@chalmers.se

Description
This module defines various data types representing source location information, of varying degree of preciseness.
Synopsis

data SrcLoc = SrcLoc {

srcFilename :: String
srcLine :: Int
srcColumn :: Int

}

data SrcSpan = SrcSpan {

srcSpanFilename :: String
srcSpanStartLine :: Int
srcSpanStartColumn :: Int
srcSpanEndLine :: Int
srcSpanEndColumn :: Int

}

srcSpanStart :: SrcSpan -> (Int, Int)
srcSpanEnd :: SrcSpan -> (Int, Int)
mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan
isNullSpan :: SrcSpan -> Bool

data Loc a = Loc {

loc :: SrcSpan
unLoc :: a

}

data SrcSpanInfo = SrcSpanInfo {

srcInfoSpan :: SrcSpan
srcInfoPoints :: [SrcSpan]

}

noInfoSpan :: SrcSpan -> SrcSpanInfo
infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
(<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo
(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo
(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo
class SrcInfo si where

toSrcInfo :: SrcLoc -> [SrcSpan] -> SrcLoc -> si
fromSrcInfo :: SrcSpanInfo -> si
getPointLoc :: si -> SrcLoc
fileName :: si -> String
startLine :: si -> Int
startColumn :: si -> Int

Documentation

data SrcLoc | Source

A single position in the source.
Constructors

SrcLoc |

srcFilename :: String |
srcLine :: Int |
srcColumn :: Int |

Instances

Eq SrcLoc
Data SrcLoc
Ord SrcLoc
Show SrcLoc
Typeable SrcLoc
SrcInfo SrcLoc
Pretty SrcLoc

data SrcSpan | Source

A portion of the source, spanning one or more lines and zero or more columns.
Constructors

SrcSpan |

srcSpanFilename :: String |
srcSpanStartLine :: Int |
srcSpanStartColumn :: Int |
srcSpanEndLine :: Int |
srcSpanEndColumn :: Int |

Instances

Eq SrcSpan
Data SrcSpan
Ord SrcSpan
Show SrcSpan
Typeable SrcSpan
SrcInfo SrcSpan
Pretty SrcSpan

srcSpanStart :: SrcSpan -> (Int, Int) | Source

Returns `srcSpanStartLine` and `srcSpanStartColumn` in a pair.

srcSpanEnd :: SrcSpan -> (Int, Int) | Source

Returns `srcSpanEndLine` and `srcSpanEndColumn` in a pair.

mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan | Source

Combine two locations in the source to denote a span.

mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan | Source

Merge two source spans into a single span from the start of the first to the end of the second. Assumes that the two spans relate to the same source file.

isNullSpan :: SrcSpan -> Bool | Source

Test if a given span starts and ends at the same location.

data Loc a | Source

An entity located in the source.
Constructors

Loc |

loc :: SrcSpan |
unLoc :: a |

Instances

Eq a => Eq (Loc a)
Ord a => Ord (Loc a)
Show a => Show (Loc a)

data SrcSpanInfo | Source

A portion of the source, extended with information on the position of entities within the span.
Constructors

SrcSpanInfo |

srcInfoSpan :: SrcSpan |
srcInfoPoints :: [SrcSpan] |

Instances

Eq SrcSpanInfo
Data SrcSpanInfo
Ord SrcSpanInfo
Show SrcSpanInfo
Typeable SrcSpanInfo
SrcInfo SrcSpanInfo

noInfoSpan :: SrcSpan -> SrcSpanInfo | Source

Generate a `SrcSpanInfo` with no positional information for entities.

infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo | Source

Generate a `SrcSpanInfo` with the supplied positional information for entities.

combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo | Source

Combine two `SrcSpanInfo`s into one that spans the combined source area of the two arguments, leaving positional information blank.

(<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo | Source

Short name for `combSpanInfo`

(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo | Source

Optionally combine the first argument with the second, or return it unchanged if the second argument is `Nothing`.

(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo | Source

Optionally combine the second argument with the first, or return it unchanged if the first argument is `Nothing`.

(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo | Source

Add more positional information for entities of a span.

(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo | Source

Merge two `SrcSpan`s and lift them to a SrcInfoSpan with no positional information for entities.

class SrcInfo si where | Source

A class to work over all kinds of source location information.
Methods

toSrcInfo :: SrcLoc -> [SrcSpan] -> SrcLoc -> si | Source

fromSrcInfo :: SrcSpanInfo -> si | Source

getPointLoc :: si -> SrcLoc | Source

fileName :: si -> String | Source

startLine :: si -> Int | Source

startColumn :: si -> Int | Source

Instances

SrcInfo SrcSpanInfo
SrcInfo SrcSpan
SrcInfo SrcLoc

Produced by Haddock version 2.4.2