Define a position datatype for giving locations in error messages.
Position type
Source positions contain a filename, line, column, and an inclusion point, which is itself another source position, recursively.
Constructors of a new position
posInNewCxt :: String -> Maybe Posn -> PosnSource
posInNewCxt name pos
creates a new source position from an old one.
It is used when opening a new file (e.g. a DTD inclusion), to denote
the start of the file name
, but retain the stacked information that
it was included from the old pos
.
Strictifier
Just used to strictify the internal values of a position, to avoid space leaks.
Modifiers
white :: Char -> Posn -> PosnSource
Add the given whitespace char to the given position.
Precondition: white c | isSpace c = True
Accessors
posnFilename :: Posn -> FilePathSource
posnColumn :: Posn -> IntSource