haskell-src-exts-1.18.2: Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer

Portabilityportable
Stabilitystable
MaintainerNiklas Broberg, d00nibro@chalmers.se
Safe HaskellSafe-Inferred

Language.Haskell.Exts.SrcLoc

Description

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

Synopsis

Documentation

data SrcLoc

A single position in the source.

Constructors

SrcLoc 

Fields

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

Instances

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

data SrcSpan

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

Constructors

SrcSpan 

Fields

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)

Returns srcSpanStartLine and srcSpanStartColumn in a pair.

srcSpanEnd :: SrcSpan -> (Int, Int)

Returns srcSpanEndLine and srcSpanEndColumn in a pair.

mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan

Combine two locations in the source to denote a span.

mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan

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

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

spanSize :: SrcSpan -> (Int, Int)

data Loc a

An entity located in the source.

Constructors

Loc 

Fields

loc :: SrcSpan
 
unLoc :: a
 

Instances

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

noInfoSpan :: SrcSpan -> SrcSpanInfo

Generate a SrcSpanInfo with no positional information for entities.

noSrcSpan :: SrcSpanInfo

A bogus SrcSpanInfo, the location is noLoc. `noSrcSpan = noInfoSpan (mkSrcSpan noLoc noLoc)`

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

Generate a SrcSpanInfo with the supplied positional information for entities.

combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo

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

combSpanMaybe :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo

Like '(+?)', but it also concatenates the srcInfoPoints.

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

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

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

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

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

Add more positional information for entities of a span.

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

Merge two SrcSpans and lift them to a SrcInfoSpan with no positional information for entities.

class SrcInfo si where

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

Methods

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

fromSrcInfo :: SrcSpanInfo -> si

getPointLoc :: si -> SrcLoc

fileName :: si -> String

startLine :: si -> Int

startColumn :: si -> Int