Я изо всех сил пытаюсь следовать трассировкам PegJS, особенно чтобы понять, как движок парсера работает в тестировании на совпадения.
Я понимаю основы оператора трассировки, например. соответствующая текстовая часть, прохождение правила с ошибками и имя функции, как показано ниже.
4:1-4:1 rule.fail table_or_sub_sub
Однако, что сбивает с толку, так это то, что происходит, когда правило не выполняется и выполняется проверка следующего условия.
Я обнаружил, что обратная трассировка (https://github.com/okaxaki/pegjs-backtrace) полезна, но в некоторых случаях она не точна, т. Е. Она не отображает все вызванные функции. Это было проверено на стандартном трассировщике. Я также пробовал https://www.npmjs.com/package/better-peg-tracer но это занимает слишком много времени и слишком многословно.
В целом, было бы здорово иметь руководство, в котором указано:
- Рекомендации по чтению трасс и ошибкам отладки
- Объяснение движка Peg заключается в том, что он сопоставляет правила с грамматикой, чтобы было легче отслеживать след.