megaparsec-4.4.0: Monadic parser combinators

Copyright© 2015–2016 Megaparsec contributors © 2007 Paolo Martini © 1999–2001 Daan Leijen
LicenseFreeBSD
MaintainerMark Karpov <markkarpov@opmbx.org>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Text.Megaparsec.Pos

Description

Textual source position.

Synopsis

Documentation

data SourcePos Source

The abstract data type SourcePos represents source positions. It contains the name of the source (i.e. file name), a line number and a column number. SourcePos is an instance of the Show, Eq and Ord class.

sourceName :: SourcePos -> String Source

Extract the name of the source from a source position.

sourceLine :: SourcePos -> Int Source

Extract the line number from a source position.

sourceColumn :: SourcePos -> Int Source

Extract the column number from a source position.

data InvalidTextualPosition Source

This exception is thrown when some action on SourcePos is performed that would make column number or line number inside this data structure non-positive.

The InvalidTextualPosition structure includes in order:

  • name of file
  • line number (possibly non-positive value)
  • column number (possibly non-positive value)

newPos Source

Arguments

:: String

File name

-> Int

Line number, minimum is 1

-> Int

Column number, minimum is 1

-> SourcePos 

Create a new SourcePos with the given source name, line number and column number.

If line number of column number is not positive, InvalidTextualPosition will be thrown.

initialPos :: String -> SourcePos Source

Create a new SourcePos with the given source name, and line number and column number set to 1, the upper left.

incSourceLine :: SourcePos -> Int -> SourcePos Source

Increment the line number of a source position. If resulting line number is not positive, InvalidTextualPosition will be thrown.

incSourceColumn :: SourcePos -> Int -> SourcePos Source

Increment the column number of a source position. If resulting column number is not positive, InvalidTextualPosition will be thrown.

setSourceName :: SourcePos -> String -> SourcePos Source

Set the name of the source.

setSourceLine :: SourcePos -> Int -> SourcePos Source

Set the line number of a source position. If the line number is not positive, InvalidTextualPosition will be thrown.

setSourceColumn :: SourcePos -> Int -> SourcePos Source

Set the column number of a source position. If the line number is not positive, InvalidTextualPosition will be thrown.

updatePosChar Source

Arguments

:: Int

Tab width

-> SourcePos

Initial position

-> Char

Character at the position

-> SourcePos 

Update a source position given a character. The first argument specifies tab width. If the character is a newline ('\n') the line number is incremented by 1. If the character is a tab ('\t') the column number is incremented to the nearest tab position, i.e. column + width - ((column - 1) `rem` width). In all other cases, the column is incremented by 1.

If given tab width is not positive, defaultTabWidth will be used.

updatePosString Source

Arguments

:: Int

Tab width

-> SourcePos

Initial position

-> String

String to process

-> SourcePos 

The expression updatePosString pos s updates the source position pos by calling updatePosChar on every character in s, i.e.

updatePosString width = foldl (updatePosChar width)

defaultTabWidth :: Int Source

Value of tab width used by default. This is used as fall-back by updatePosChar and possibly in other cases. Always prefer this constant when you want to refer to default tab width because actual value may change in future. Current value is 8.