Monadic parsers take a string and return an abstract syntax tree (along with the unused part of the string).
There would typically be many parsers each able to match a particular part of the syntax.
A monadic parser has the type: String -> (String,ast) where 'ast' is the abstract syntax tree returned by the parser. |
An error is indicated by an empty list.
Ambiguous grammars can return multiple results.
Monadic parsers can be combined in parallel or series.
monadic parsers in series |
Parser Monad
We can introduce a functor which takes any type and turns it into a list of that type. | |
We can draw this as an endo-functor. |
Parser - Natural Transformations
The unit transform creates a single valued list | |
The natural way to create a mult transform is a transform which flatterns a list of lists into a flat list. |