language-python-0.5.4: Parsing and pretty printing of Python code.

Copyright(c) 2009 Bernie Pope
LicenseBSD-style
Maintainerbjpop@csse.unimelb.edu.au
Stabilityexperimental
Portabilityghc
Safe HaskellSafe
LanguageHaskell98

Language.Python.Common.SrcLocation

Contents

Description

Source location information for the Python lexer and parser. This module provides single-point locations and spans, and conversions between them.

Synopsis

Construction

data SrcLocation #

A location for a syntactic entity from the source code. The location is specified by its filename, and starting row and column.

Constructors

Sloc 
NoLocation 

Instances

Eq SrcLocation # 
Data 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 :: (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 # 
Show SrcLocation # 
Pretty SrcLocation # 

Methods

pretty :: SrcLocation -> Doc #

Span SrcLocation # 

data SrcSpan #

Source location spanning a contiguous section of a file.

Constructors

SpanCoLinear

A span which starts and ends on the same line.

SpanMultiLine

A span which starts and ends on different lines.

SpanPoint

A span which is actually just one point in the file.

SpanEmpty

No span information.

Instances

Eq SrcSpan # 

Methods

(==) :: SrcSpan -> SrcSpan -> Bool #

(/=) :: SrcSpan -> SrcSpan -> Bool #

Data SrcSpan # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcSpan -> c SrcSpan #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcSpan #

toConstr :: SrcSpan -> Constr #

dataTypeOf :: SrcSpan -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SrcSpan) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcSpan) #

gmapT :: (forall b. Data b => b -> b) -> SrcSpan -> SrcSpan #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcSpan -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcSpan -> r #

gmapQ :: (forall d. Data d => d -> u) -> SrcSpan -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcSpan -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcSpan -> m SrcSpan #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcSpan -> m SrcSpan #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcSpan -> m SrcSpan #

Ord SrcSpan # 
Show SrcSpan # 
Pretty SrcSpan # 

Methods

pretty :: SrcSpan -> Doc #

Span SrcSpan # 

Methods

getSpan :: SrcSpan -> SrcSpan #

Span AssignOpSpan # 
Span OpSpan # 

Methods

getSpan :: OpSpan -> SrcSpan #

Span SliceSpan # 

Methods

getSpan :: SliceSpan -> SrcSpan #

Span DictMappingPairSpan # 
Span YieldArgSpan # 
Span ExprSpan # 

Methods

getSpan :: ExprSpan -> SrcSpan #

Span CompIterSpan # 
Span CompIfSpan # 
Span CompForSpan # 
Span ComprehensionExprSpan # 
Span ComprehensionSpan # 
Span ExceptClauseSpan # 
Span HandlerSpan # 
Span ArgumentSpan # 
Span ParamTupleSpan # 
Span ParameterSpan # 
Span DecoratorSpan # 
Span StatementSpan # 
Span ImportRelativeSpan # 
Span FromItemsSpan # 
Span FromItemSpan # 
Span ImportItemSpan # 
Span IdentSpan # 

Methods

getSpan :: IdentSpan -> SrcSpan #

class Span a where #

Types which have a span.

Methods

getSpan :: a -> SrcSpan #

Instances

Span SrcSpan # 

Methods

getSpan :: SrcSpan -> SrcSpan #

Span SrcLocation # 
Span Token # 

Methods

getSpan :: Token -> SrcSpan #

Span AssignOpSpan # 
Span OpSpan # 

Methods

getSpan :: OpSpan -> SrcSpan #

Span SliceSpan # 

Methods

getSpan :: SliceSpan -> SrcSpan #

Span DictMappingPairSpan # 
Span YieldArgSpan # 
Span ExprSpan # 

Methods

getSpan :: ExprSpan -> SrcSpan #

Span CompIterSpan # 
Span CompIfSpan # 
Span CompForSpan # 
Span ComprehensionExprSpan # 
Span ComprehensionSpan # 
Span ExceptClauseSpan # 
Span HandlerSpan # 
Span ArgumentSpan # 
Span ParamTupleSpan # 
Span ParameterSpan # 
Span DecoratorSpan # 
Span StatementSpan # 
Span ImportRelativeSpan # 
Span FromItemsSpan # 
Span FromItemSpan # 
Span ImportItemSpan # 
Span IdentSpan # 

Methods

getSpan :: IdentSpan -> SrcSpan #

Span a => Span [a] # 

Methods

getSpan :: [a] -> SrcSpan #

Span a => Span (Maybe a) # 

Methods

getSpan :: Maybe a -> SrcSpan #

(Span a, Span b) => Span (Either a b) # 

Methods

getSpan :: Either a b -> SrcSpan #

(Span a, Span b) => Span (a, b) # 

Methods

getSpan :: (a, b) -> SrcSpan #

spanning :: (Span a, Span b) => a -> b -> SrcSpan #

Create a new span which encloses two spanned things.

mkSrcSpan :: SrcLocation -> SrcLocation -> SrcSpan #

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 #

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 #

Construct the initial source location for a file.

spanStartPoint :: SrcSpan -> SrcSpan #

Make a point span from the start of a span

Modification

incColumn :: Int -> SrcLocation -> SrcLocation #

Increment the column of a location.

decColumn :: Int -> SrcLocation -> SrcLocation #

Decrement the column of a location, only if they are on the same row.

incLine :: Int -> SrcLocation -> SrcLocation #

Increment the line number (row) of a location by one.

incTab :: SrcLocation -> SrcLocation #

Increment the column of a location by one tab stop.

endCol :: SrcSpan -> Int #

Get the column of the end of a span.

Projection of components of a span

endRow :: SrcSpan -> Int #

Get the row of the end of a span.

startCol :: SrcSpan -> Int #

Get the column of the start of a span.

startRow :: SrcSpan -> Int #

Get the row of the start of a span.