| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Text.LaTeX.Base.Parser
Description
The LaTeX parser.
Use parseLaTeX to parse a Text containing LaTeX code.
If the Text is in a file, you may want to use parseLaTeXFile.
Use this module together with Text.LaTeX.Base.Syntax to perform
analysis and transformations of LaTeX code. The parser (parseLaTeX)
is related with the renderer (render) by the following property:
If t :: Text is a syntactically valid LaTeX block, then:
fmap render (parseLaTeX t) == Right t
This property says two things:
- Given a valid LaTeX input,
parseLaTeXreturns aLaTeXvalue. - If the parsed value is again rendered, you get the initial input.
In other words, parseLaTeX is a partial function defined over the
set of valid LaTeX files, and render is its left inverse.
- parseLaTeX :: Text -> Either ParseError LaTeX
- parseLaTeXFile :: FilePath -> IO (Either ParseError LaTeX)
- latexParser :: Parser LaTeX
- latexBlockParser :: Parser LaTeX
- data ParseError :: *
- errorPos :: ParseError -> SourcePos
- errorMessages :: ParseError -> [Message]
- data Message :: *
- messageString :: Message -> String
- data SourcePos :: *
- sourceLine :: SourcePos -> Line
- sourceColumn :: SourcePos -> Column
- sourceName :: SourcePos -> SourceName
The parser
parseLaTeX :: Text -> Either ParseError LaTeX Source
parseLaTeXFile :: FilePath -> IO (Either ParseError LaTeX) Source
Read a file and parse it as LaTeX.
latexParser :: Parser LaTeX Source
The LaTeX parser.
latexBlockParser :: Parser LaTeX Source
Parser of a single LaTeX constructor, no appending blocks.
Parsing errors
data ParseError :: *
The abstract data type ParseError represents parse errors. It
provides the source position (SourcePos) of the error
and a list of error messages (Message). A ParseError
can be returned by the function parse. ParseError is an
instance of the Show and Eq classes.
Instances
errorPos :: ParseError -> SourcePos
Extracts the source position from the parse error
errorMessages :: ParseError -> [Message]
Extracts the list of error messages from the parse error
Error messages
data Message :: *
This abstract data type represents parse error messages. There are four kinds of messages:
data Message = SysUnExpect String
| UnExpect String
| Expect String
| Message StringThe fine distinction between different kinds of parse errors allows the system to generate quite good error messages for the user. It also allows error messages that are formatted in different languages. Each kind of message is generated by different combinators:
A
SysUnExpectmessage is automatically generated by thesatisfycombinator. The argument is the unexpected input.
messageString :: Message -> String
Extract the message string from an error message
Source positions
data SourcePos :: *
sourceLine :: SourcePos -> Line
Extracts the line number from a source position.
sourceColumn :: SourcePos -> Column
Extracts the column number from a source position.
sourceName :: SourcePos -> SourceName
Extracts the name of the source from a source position.