@@ -119,7 +119,7 @@ singleLineComment :: MonadicParsing m => m ()
119singleLineComment = (string "--" *>
119singleLineComment = (string "--" *>
120 many (satisfy (not . isEol)) *>
120 many (satisfy (not . isEol)) *>
121 eol *> pure ())
121 eol *> pure ())
122− <?> "single-line comment"
122+ <?> ""
124{- | Consumes a multi-line comment
124{- | Consumes a multi-line comment
@@ -321,10 +321,17 @@ opChars = ":!#$%&*+./<=>?@\\^|-~"
321operatorLetter :: MonadicParsing m => m Char
321operatorLetter :: MonadicParsing m => m Char
322operatorLetter = oneOf opChars
322operatorLetter = oneOf opChars
325+commentMarkers :: [String]
326+commentMarkers = [ "--", "|||" ]
328+invalidOperators :: [String]
329+invalidOperators = [":", "=>", "->", "<-", "=", "?=", "|", "**", "==>", "\\"]
324-- | Parses an operator
331-- | Parses an operator
325operator :: MonadicParsing m => m String
332operator :: MonadicParsing m => m String
326operator = do op <- token . some $ operatorLetter
333operator = do op <- token . some $ operatorLetter
327− when (op `elem` [":", "=>", "->", "<-", "=", "?=", "|"]) $
334+ when (op `elem` (invalidOperators ++ commentMarkers)) $
328 fail $ op ++ " is not a valid operator"
335 fail $ op ++ " is not a valid operator"
329 return op
336 return op