parsing - How to build Parser in Haskell -


  data Expr = ExprNum double - constant | Express String - Variables ExprAdd Expr Expr | ExprSub Expr Expr | ExprNeg Expr - Single '-' operator | Xpram Xp Express | Find ExprDiv Expr Expr Show  

This is my defined user data type. I want to handle arithmetic expressions such as (2 + 3 * 4 - x) buildExpression using the above data type without using the parser. What can i do

Please help me. It should handle operator precedence.

After the

suppose that we want to create a addsub level parser. We have to say that (returning the right value to the actual ignore and just focusing on the raw paras) want to do

  addsub MULDIV => & Gt; & Gt; & Gt; "+" oneof MULDIV   

This does not really work. But we can become the left factor and

  = addsub MULDIV> & Gt; Addsub 'addsub' = $ oneof many "+ -" & gt; & Gt; MULDIV  to  

where we have a parser for the value of MULDIV is just multiplication and division which you can write in a similar way.

That is, instead of using grammar

  = addsub addsub (+ -) MULDIV | MULDIV  > 

We use a bit more complex, but actually usable by Parsec:

  addedub = MULDIV addsub 'addsub = (+ -) MULDIV addsub '| Nothing.  

Which certainly we can refactor the latter in a many which gives us a list of expressions that we must add. Then you do whatever you want to do that form, como (add a1 (add A2 (a3 pairs))) .


Comments