Какой предпочтительный способ поднять ошибки (ParseError
) в Parsec? Я получил код внутри парсера, который выполняет проверку, и если проверка завершилась неудачей, необходимо вернуть ParseError
(т. Е. Left ParseError
при запуске parse
).Raise ParseError в Haskell/Parsec
6
A
ответ
5
Для этого можно использовать Text.ParserCombinators.Parsec.Prim.unexpected
и Control.Monad.fail
. Оба принимают аргумент String
, обозначающий сообщение об ошибке, и возвращают (в данном случае) значение типа GenParser tok st a
.
Подробнее см. Text.ParserCombinators.Parsec.Error
, в частности Message
. Там вы можете прочитать, какую функцию использовать в этом случае (хотя оба означают ошибку синтаксического анализа, они семантически немного отличаются).
Смежные вопросы
- 1. @SuppressLit (({ «ParseError», «ParseError»})
- 2. pysd library ParseError
- 3. $ .getJSON ParseError
- 4. ParseError в Android Volley
- 5. ParseError в Yesod.Core.Class.Yesod
- 6. ParseError: «Недопустимое определение определения
- 7. Raise Ошибок
- 8. Raise TypeError в классе
- 9. Raise NSError в RubyMotion
- 10. raise «NullPointerException» в Ruby
- 11. менее ParseError: Отсутствует закрытие «)»
- 12. ParseError: вложенная форма объявляется
- 13. ParseError и неправильные координаты
- 14. JQuery getJSON - Аякс parseerror
- 15. Ajax POST запрос, parseerror
- 16. МЕНЬШЕ ParseError: Непризнанный вход
- 17. В чем разница между `raise 'foo" и `raise Exception.new (" foo ")`?
- 18. Почему я получаю ParseError?
- 19. pycparser ParseError с ЬурейиМи
- 20. ParseError: «Недопустимое определение определения»
- 21. AJAX Returning ParseError
- 22. JQuery AJAX JSON parseerror
- 23. Json parseerror & неожиданный токен
- 24. Получить «ParseError» с Scrapy
- 25. Raise unhandlable exception в Python
- 26. Raise Http404 в шаблоне url
- 27. C# raise Событие в Task.WhenAll()
- 28. ParseError в Ajax Query в Firefox
- 29. ASP.Net, jQuery, Ajax и parseError
- 30. PHP Manual JSON Encode - parseError
Можете ли вы подробно рассказать о том, как их объединить с парсерами? например, когда имеет такой синтаксический анализатор: 'p = someparser <|> fail" error "' вещь, когда someparser не удалось выполнить его сообщение об ошибке, не исчезает, вместо этого добавляется строка «error». – niceman