srcloc-0.4.1: Data types for managing source code locations.

Copyright(c) Harvard University 2006-2011 (c) Geoffrey Mainland 2011-2014
LicenseBSD-style
MaintainerGeoffrey Mainland <mainland@cs.drexel.edu>
Safe HaskellSafe-Inferred
LanguageHaskell98

Data.Loc

Description

 

Synopsis

Documentation

data Pos Source

Position type.

Constructors

Pos !String !Int !Int !Int

Source file name, line, column, and character offset

posFile :: Pos -> String Source

Position file.

posLine :: Pos -> Int Source

Position line.

posCol :: Pos -> Int Source

Position column.

posCoff :: Pos -> Int Source

Position character offset.

data Loc Source

Location type, consisting of a beginning position and an end position.

Constructors

NoLoc 
Loc !Pos !Pos

Beginning and end positions

locStart :: Loc -> Loc Source

Starting position of the location.

locEnd :: Loc -> Loc Source

Ending position of the location.

(<-->) :: (Located a, Located b) => a -> b -> Loc infixl 6 Source

Merge the locations of two Located values.

newtype SrcLoc Source

Source location type. Source location are all equal, which allows AST nodes to be compared modulo location information.

Constructors

SrcLoc Loc 

srclocOf :: Located a => a -> SrcLoc Source

The SrcLoc of a Located value.

srcspan :: (Located a, Located b) => a -> b -> SrcLoc infixl 6 Source

A SrcLoc with (minimal) span that includes two Located values.

class IsLocation a where Source

Locations

Minimal complete definition

fromLoc

Methods

fromLoc :: Loc -> a Source

fromPos :: Pos -> a Source

noLoc :: IsLocation a => a Source

No location.

class Located a where Source

Located values have a location.

Minimal complete definition

locOf

Methods

locOf :: a -> Loc Source

locOfList :: [a] -> Loc Source

Instances

class Relocatable a where Source

Values that can be relocated

Methods

reloc :: Loc -> a -> a Source

Instances

data L a Source

An 'L a' is an a with an associated Loc, but this location is ignored when performing comparisons.

Constructors

L Loc a 

Instances

Eq x => Eq (L x) 
Ord x => Ord (L x) 
Show x => Show (L x) 
Relocatable (L a) 
Located (L a) 

unLoc :: L a -> a Source