Language.Python.Common.SrcLocation

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

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

Contents

- Construction
- Modification
- Projection of components of a span

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
- 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
- class Span a where
  - getSpan :: a -> SrcSpan
- 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

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 sloc_filename :: !String sloc_row :: !Int sloc_column :: !Int
NoLocation |

Instances

Eq SrcLocation |
Data SrcLocation |
Ord SrcLocation |
Show SrcLocation |
Pretty SrcLocation |
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.
Fields span_filename :: !String span_row :: !Int span_start_column :: !Int span_end_column :: !Int
SpanMultiLine | A span which starts and ends on different lines.
Fields span_filename :: !String span_start_row :: !Int span_start_column :: !Int span_end_row :: !Int span_end_column :: !Int
SpanPoint | A span which is actually just one point in the file.
Fields span_filename :: !String span_row :: !Int span_column :: !Int
SpanEmpty | No span information.

Instances

Eq SrcSpan |
Data SrcSpan |
Ord SrcSpan |
Show SrcSpan |
Pretty SrcSpan |
Span SrcSpan |
Span AssignOpSpan |
Span OpSpan |
Span SliceSpan |
Span DictMappingPairSpan |
Span YieldArgSpan |
Span ExprSpan |
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 |

class Span a where

Types which have a span.

Minimal complete definition

Nothing

Methods

getSpan :: a -> SrcSpan

Instances

Span SrcSpan |
Span SrcLocation |
Span Token |
Span AssignOpSpan |
Span OpSpan |
Span SliceSpan |
Span DictMappingPairSpan |
Span YieldArgSpan |
Span ExprSpan |
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 |
Span a => Span [a] |
Span a => Span (Maybe a) |
(Span a, Span b) => Span (Either a b) |
(Span a, Span b) => Span (a, b) |

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.