Safe Haskell | None |
---|---|

Language | Haskell98 |

The parser doesn't know about operators and parses everything as normal
function application. This module contains the functions that parses the
operators properly. For a stand-alone implementation of this see
`src/prototyping/mixfix/old`

.

It also contains the function that puts parenthesis back given the precedence of the context.

# Documentation

parseApplication :: [Expr] -> ScopeM Expr Source

Parse a list of expressions into an application.

parseModuleApplication :: Expr -> ScopeM (QName, [NamedArg Expr]) Source

Parse an expression into a module application (an identifier plus a list of arguments).

parseLHS :: Name -> Pattern -> ScopeM LHSCore Source

Parses a left-hand side, and makes sure that it defined the expected name. TODO: check the arities of constructors. There is a possible ambiguity with postfix constructors: Assume _ * is a constructor. Then 'true *' can be parsed as either the intended _* applied to true, or as true applied to a variable *. If we check arities this problem won't appear.

parsePattern :: Pattern -> ScopeM Pattern Source

Parses a pattern. TODO: check the arities of constructors. There is a possible ambiguity with postfix constructors: Assume _ * is a constructor. Then 'true *' can be parsed as either the intended _* applied to true, or as true applied to a variable *. If we check arities this problem won't appear.