Я помогаю расширить свой собственный фирменный язык в моей компании на двадцать один год. Это большой, полный язык Тьюринга. Перевод его в другой режим грамматики (например, Antlr) не является вариантом (я не могу это решить).
По большей части расширение грамматики прошло гладко. Но каждый раз через некоторое время я получаю сокращение уменьшения или смену сокращения, которое
- трудно устранить
- иногда просто не имеет смысла (для моего слабого мозга)
После многих мучительных взглядов на файлы y.output и экспериментальных рефакторингов грамматики я обычно получал туда, куда хотел. Иногда мне приходилось делать неудовлетворительные компромиссы.
Итак, есть ли какие-либо инструменты, которые могут всасывать грамматику yacc, которые улучшают просмотр, экспериментируют и позволяют отлаживать изменения?
Если я добавлю производство, я бы хотел увидеть больше, чем "атомарное производство, которое используется везде" (думаю, идентификатор) "конфликтует с правилом foo" (да, есть больше информации, s/r, r/r, чем это, но я думаю, что вы получите мой дрейф). Было бы неплохо иметь некоторый намек на взаимодействие, не полагаясь на мою мыслящую шапку и пытаясь представить себе стек символов и машину состояний.
Обновление: Думаю, я должен уточнить. Мы используем Berkeley Yacc. Я тестировал, используя недавнюю версию Bison. Для вывода я скомпилировал грамматику с параметром -report = itemset.
Моя цель с этой должности - искать внешние инструменты, которые дополняют средства отладки грамматики, которые отправляются с yacc. Сегодня это больно с набором по умолчанию. Помогите мне найти лучшие интерактивные инструменты, например те, которые вы можете использовать с Antlr.