Joel Reymont wrote:
I'm trying to parse NumExpr > NumExpr (example) which should return a logical expression while parsing numeric terms. I can't figure out how to make buildExpressionParser do this for me since it takes the type of the term parser given to it. If I supply a parser for numeric terms then I cannot return a logical expression.
[...]
Note that I do not want to put all expressions into the same Expr type since it makes generating valid random ASTs with QuickCheck impossible.

As you probably suspect, one single use of buildExpressionParser cannot accomplish it. It is equivalent to the problem of homogeneous lists.

However, you can make two uses of buildExpressionParser, one for numeric expressions and the other for logical expressions. Mutual reference is no problem since, in all practical uses, even with just one single buildExpressionParser you already have the term parser call its own buildExpressionParser; now you just have one term parser call the other's buildExpressionParser. Sharing the same token parser is perfectly alright.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to