Safe Haskell | None |
---|
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,
parseLaTeX
returns aLaTeX
value. * 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
parseLaTeXFile :: FilePath -> IO (Either ParseError LaTeX)Source
Read a file and parse it as LaTeX
.
latexParser :: Parser LaTeXSource
The LaTeX
parser.
latexBlockParser :: Parser LaTeXSource
Parser of a single LaTeX
constructor, no appending blocks.
Parsing errors
data ParseError
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 String
The 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
SysUnExpect
message is automatically generated by thesatisfy
combinator. The argument is the unexpected input. - A
UnExpect
message is generated by theunexpected
combinator. The argument describes the unexpected item. - A
Expect
message is generated by the<?>
combinator. The argument describes the expected item. - A
Message
message is generated by thefail
combinator. The argument is some general parser message.
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.