Macaulay2 » Documentation
Packages » Parsing :: Parsing
next | previous | forward | backward | up | index | toc

Parsing -- a framework for building parsers

Description

Parsing is a package the provides a framework for building parsers. It introduces Parser, a type of function that parses a sequence of tokens, and Analyzer, a type of function that accepts input for the parser in its original form and separates it into a stream of tokens. A parser can be combined with an analyzer: see Parser : Analyzer, to produce a complete system for accepting input and parsing it.

See the package Classic for a good example of the use of this framework.

Menu

Author

Version

This documentation describes version 1.0 of Parsing.

Citation

If you have used this package in your research, please cite it as follows:

@misc{ParsingSource,
  title = {{Parsing: a framework for creating recursive descent parsers. Version~1.0}},
  author = {Daniel R. Grayson},
  howpublished = {A \emph{Macaulay2} package available at
    \url{https://github.com/Macaulay2/M2/tree/master/M2/Macaulay2/packages}}
}

Exports

  • Types
    • Analyzer -- the class of all lexical analyzers
    • Parser -- the class of all parsers
  • Functions and commands
    • andP -- parser conjunction
    • charAnalyzer -- a lexical analyzer that provides characters from a string one at a time
    • constParser -- produce a parser that accepts a fixed string, one character at a time
    • deadParser -- a parser which accepts no tokens and is not in a terminal state
    • futureParser -- forward reference to a parser not defined yet
    • letterParser -- a parser that accepts a single letter and returns it
    • NNParser -- a parser that accepts (and returns) a natural number, one character at a time
    • nonspaceAnalyzer -- a lexical analyzer that provides non-white-space characters from a string one at a time
    • nullParser -- a terminal parser that returns the value nil
    • optionalSignParser -- a parser that accepts an optional plus sign or minus sign
    • optP -- making a parser optional
    • orP -- parsing alternatives
    • QQParser -- a parser that accepts (and returns) a rational number, one character at a time
    • terminalParser -- produce a parser in a terminal state
    • ZZParser -- a parser that accepts (and returns) an integer, one character at a time
  • Methods
    • * Parser -- repetition of a parser
    • + Parser -- repetition of a parser at least once
    • Parser @ Parser -- see andP -- parser conjunction
    • Parser @ String -- see andP -- parser conjunction
    • String @ Parser -- see andP -- parser conjunction
    • Function % Parser -- transform the value returned by a parser
    • Parser | Parser -- see orP -- parsing alternatives
    • Parser | String -- see orP -- parsing alternatives
    • String | Parser -- see orP -- parsing alternatives
    • Parser : Analyzer -- combine a parser with a lexical analyzer to make a complete system
  • Symbols
    • nil -- a symbol a parser may return to indicate acceptance of the empty string of tokens

For the programmer

The object Parsing is a package, defined in Parsing.m2.


The source of this document is in Parsing.m2:184:0.