как получить контекст ожидания неудач в бодрости духа ци? - PullRequest
0 голосов
/ 03 января 2019

Я использую Boost Spirit v1.67.

Я хочу, чтобы синтаксический анализатор предоставлял точные коды ошибок, то есть контекстные сообщения об ошибках относительно того, где произошла ошибка.

Например,

  1. InvalidNumber - число больше 2 147 483 647 для int_
  2. InvalidSequence - недопустимая последовательность символов AB, ожидающая BA.

Опции, я думаю, будут работать, но нужно будет посоветовать, как это сделать-

  1. генерирует пользовательские исключения из on_error и перехватывает их после метода разбора
  2. используйте on_error для отслеживания точного сбоя, а затем сохраните код ошибки в некоторой переменной, которая будет доступна позже.
  3. принимает бит недопустимых данных в анализаторе только для того, чтобы пометить его после запуска анализатора при проверках после обработки. (например, принять длинное int вместо int и пометить как ошибку при пост-обработке, если число больше max_int).
...