
2 Jan
2009
2 Jan
'09
8:21 p.m.
Erik de Castro Lopo schrieb:
Erik de Castro Lopo wrote:
binaryOp :: String -> (SourcePos -> a -> a -> a) -> E.Assoc -> E.Operator Char st a binaryOp name con assoc = E.Infix (reservedOp name >> getPosition >>= return . con) assoc
Replacing reservedOp above with:
reservedOpNf :: String -> CharParser st () reservedOpNf name = try (reservedOp name >> notFollowedBy (oneOf "|&="))
fixed the problem.
Hi Erik, There is an easy, better solution, modifying the lexer:
lexer = makeTokenParser $ emptyDef { L.reservedOpNames = words "&& || & | ^" } reservedOp = P.reservedOp lexer identifier = P.identifier lexer ...
I'd try to avoid 'try', if possible. benedikt