[Haskell] Parsec operator issue
Adam Crume
adamcrume at hotmail.com
Tue Feb 16 17:10:37 EST 2010
I have a parser with a prefix "-" and an infix "=". When I try to
parse "x=-1", it fails. Does anyone know how to fix this?
I stripped my code down as much as possible. It parses "x=1" and
"-1", but fails for "x=-1".
import Text.Parsec
import qualified Text.Parsec.Expr as PE
import qualified Text.Parsec.Language as L
import qualified Text.Parsec.Token as T
lexer = T.makeTokenParser L.emptyDef {T.reservedOpNames = ["=", "-"]}
reservedOp = T.reservedOp lexer
integer = T.integer lexer >> return ""
symbol = T.identifier lexer
expression = PE.buildExpressionParser table (integer <|> symbol)
where
table = [ [ PE.Prefix (reservedOp "-" >> return (\x-> "")) ],
[ PE.Infix (reservedOp "=" >> return (\x-> \y->""))
PE.AssocRight ] ]
input = do
e <- expression
eof
return e
testParse s = case (parse input "(unknown)" s) of
Left f -> putStrLn $ s ++ "\n" ++ show f
Right f -> putStrLn s
main = do
testParse "x=1"
testParse "-1"
testParse "x=-1"
_________________________________________________________________
Hotmail: Free, trusted and rich email service.
http://clk.atdmt.com/GBL/go/201469228/direct/01/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell/attachments/20100216/70336145/attachment.html
More information about the Haskell
mailing list