4
私はハスケルのような言葉のための未完成のパーサーでParsecで遊んでいます。このParsecエラーから "expecting letter or digit"を取り除くにはどうしたらいいですか?
エラーメッセージが表示されない場合でも、正常に動作しているようです。
- 入力:
"foo (bar"
- エラー:私はそれだけで
expecting operand or ")"
を印刷するために得ることができますどのようexpecting letter or digit, operand or ")"
?私は<?>
を追加しようとしましたが、動作させることができません。私は、目的の動作を取得する方法を考え出し
separator = skipMany1 space
<?> ""
identifier :: Parser String
identifier = (:) <$> letter <*> many alphaNum
<?> "identifier"
number :: Parser String
number = many1 digit
<?> "numeric literal"
primitiveExpr :: Parser String
primitiveExpr = (identifier
<|> number)
<?> "primitive expression"
expr :: Parser()
expr = do identifier
spaces <?> ""
sepBy operand separator
return()
parenExpr :: Parser String
parenExpr = do char '('
expr
char ')'
return "foo"
<?> "parenthesized expression"
operand = parenExpr <|> primitiveExpr
<?> "operand"