Copyright | (c) 2009 Bernie Pope |
---|---|
License | BSD-style |
Maintainer | bjpop@csse.unimelb.edu.au |
Stability | experimental |
Portability | ghc |
Safe Haskell | Safe |
Language | Haskell98 |
Language.Python.Common.SrcLocation
Description
Source location information for the Python lexer and parser. This module provides single-point locations and spans, and conversions between them.
Synopsis
- data SrcLocation
- = Sloc {
- sloc_filename :: !String
- sloc_row :: !Int
- sloc_column :: !Int
- | NoLocation
- = Sloc {
- data SrcSpan
- = SpanCoLinear {
- span_filename :: !String
- span_row :: !Int
- span_start_column :: !Int
- span_end_column :: !Int
- | SpanMultiLine {
- span_filename :: !String
- span_start_row :: !Int
- span_start_column :: !Int
- span_end_row :: !Int
- span_end_column :: !Int
- | SpanPoint {
- span_filename :: !String
- span_row :: !Int
- span_column :: !Int
- | SpanEmpty
- = SpanCoLinear {
- class Span a where
- spanning :: (Span a, Span b) => a -> b -> SrcSpan
- mkSrcSpan :: SrcLocation -> SrcLocation -> SrcSpan
- combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan
- initialSrcLocation :: String -> SrcLocation
- spanStartPoint :: SrcSpan -> SrcSpan
- incColumn :: Int -> SrcLocation -> SrcLocation
- decColumn :: Int -> SrcLocation -> SrcLocation
- incLine :: Int -> SrcLocation -> SrcLocation
- incTab :: SrcLocation -> SrcLocation
- endCol :: SrcSpan -> Int
- endRow :: SrcSpan -> Int
- startCol :: SrcSpan -> Int
- startRow :: SrcSpan -> Int
Construction
data SrcLocation Source #
A location for a syntactic entity from the source code. The location is specified by its filename, and starting row and column.
Constructors
Sloc | |
Fields
| |
NoLocation |
Instances
Eq SrcLocation Source # | |
Defined in Language.Python.Common.SrcLocation | |
Data SrcLocation Source # | |
Defined in Language.Python.Common.SrcLocation Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcLocation -> c SrcLocation gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcLocation toConstr :: SrcLocation -> Constr dataTypeOf :: SrcLocation -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SrcLocation) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcLocation) gmapT :: (forall b. Data b => b -> b) -> SrcLocation -> SrcLocation gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcLocation -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcLocation -> r gmapQ :: (forall d. Data d => d -> u) -> SrcLocation -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcLocation -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcLocation -> m SrcLocation gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcLocation -> m SrcLocation gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcLocation -> m SrcLocation | |
Ord SrcLocation Source # | |
Defined in Language.Python.Common.SrcLocation Methods compare :: SrcLocation -> SrcLocation -> Ordering (<) :: SrcLocation -> SrcLocation -> Bool (<=) :: SrcLocation -> SrcLocation -> Bool (>) :: SrcLocation -> SrcLocation -> Bool (>=) :: SrcLocation -> SrcLocation -> Bool max :: SrcLocation -> SrcLocation -> SrcLocation min :: SrcLocation -> SrcLocation -> SrcLocation | |
Show SrcLocation Source # | |
Defined in Language.Python.Common.SrcLocation Methods showsPrec :: Int -> SrcLocation -> ShowS show :: SrcLocation -> String showList :: [SrcLocation] -> ShowS | |
Pretty SrcLocation Source # | |
Defined in Language.Python.Common.SrcLocation Methods pretty :: SrcLocation -> Doc Source # | |
Span SrcLocation Source # | |
Defined in Language.Python.Common.SrcLocation Methods getSpan :: SrcLocation -> SrcSpan Source # |
Source location spanning a contiguous section of a file.
Constructors
SpanCoLinear | A span which starts and ends on the same line. |
Fields
| |
SpanMultiLine | A span which starts and ends on different lines. |
Fields
| |
SpanPoint | A span which is actually just one point in the file. |
Fields
| |
SpanEmpty | No span information. |
Instances
Types which have a span.
Minimal complete definition
Nothing
Instances
spanning :: (Span a, Span b) => a -> b -> SrcSpan Source #
Create a new span which encloses two spanned things.
mkSrcSpan :: SrcLocation -> SrcLocation -> SrcSpan Source #
Make a span from two locations. Assumption: either the arguments are the same, or the left one preceeds the right one.
combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan Source #
Combines two SrcSpan
into one that spans at least all the characters
within both spans. Assumes the "file" part is the same in both inputs
initialSrcLocation :: String -> SrcLocation Source #
Construct the initial source location for a file.
spanStartPoint :: SrcSpan -> SrcSpan Source #
Make a point span from the start of a span
Modification
incColumn :: Int -> SrcLocation -> SrcLocation Source #
Increment the column of a location.
decColumn :: Int -> SrcLocation -> SrcLocation Source #
Decrement the column of a location, only if they are on the same row.
incLine :: Int -> SrcLocation -> SrcLocation Source #
Increment the line number (row) of a location by one.
incTab :: SrcLocation -> SrcLocation Source #
Increment the column of a location by one tab stop.