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