[Haskell-beginners] prefix instead of infix
Daniel Fischer
daniel.is.fischer at web.de
Sun Jan 10 15:14:15 EST 2010
Am Sonntag 10 Januar 2010 20:33:40 schrieb John Moore:
> Hi,
> Can anyone explain how to turn the code from infix to Prefix. I want
> to include a let statement below. I not sure of how prefix works.
Can you elaborate? I don't understand what it is you want to do.
Do you want to parse expressions in prefix notation (aka Polish notation),
such as +(3,4) (or, more Lispy, (+ 3 4))?
That'd be simple, but you wouldn't use buldExpressionParser for that (in
Polish notation, neither associativity nor precedence have a meaning).
Or do you want to add a parser for let-expressions to expr?
>
> expr :: Parser Expr
> expr = buildExpressionParser table factor
> <?> "expression"
> table :: [[Operator Char st Expr]]
> table = [[op "*" Mul AssocLeft, op "/" Div AssocLeft]
> ,[op "+" Add AssocLeft, op "-" Sub AssocLeft]
> ]
> where
> op s f assoc
> = Infix (do{ string s; return f}) assoc
> factor :: Parser Expr
> factor = do{ char '('
> ; x <- expr
> ; char ')'
> ; return x
> }
> <|> number
> <?> "simple expression"
> number :: Parser Expr
> number = do{ ds <- many1 alphaNum
> ; return (Val $ read ds)
> }
>
> John
More information about the Beginners
mailing list