Файл xbcomp/parser.y
требует ряда (очень полезных) расширений бизонов, поэтому он не может быть обработан всеми вариантами yacc.
btyacc
не поддерживает бизоновсовместимые объявления чистого парсера.(У него есть другой, не полностью совместимый механизм, который реализует ту же функцию.) Таким образом, он завершается ошибкой в первом экземпляре одного из этих объявлений.
Должно быть возможно использовать byacc
, но не версия, которая доступна в репозитории пакетов Ubuntu.Хотя история изменений репозитория пакетов Ubuntu, по-видимому, предполагает, что целью было включить опцию сборки, которая допускает %destructor
, фактический двоичный файл, в настоящее время доступный в репозитории byacc
, был собран без этой опции.(Ему также несколько лет, и я думаю, что было бы полезно использовать более новую версию.) Я сообщил об этом как ошибка панели запуска 1776270 вместе с предложением о возможном исправлении.
Я уверен, что вы сможете собрать программное обеспечение, используя Gnu Bison, который доступен в виде пакета Ubuntu bison
.Поскольку это самая популярная версия yacc, установленная на машинах разработчика, сбой сборки с bison
, вероятно, был бы замечен давно.
Если вы предпочитаете использовать byacc
,по какой-либо причине вам придется скачать и собрать его самостоятельно.Вы можете получить самую последнюю версию со byacc страницы Томаса Дики , а затем собрать ее обычной процедурой: распаковать, сконфигурировать, сделать, сделать установить.Когда я проверял это, я использовал следующую строку конфигурации:
./configure --enable-btyacc --program-prefix=b --prefix=/usr
Обязательна только первая опция
* --program-prefix=b Install it as `byacc` rather than `yacc`
* --enable-btyacc Necessary for %destructor support
* --prefix=/usr Install it in /usr/bin and /usr/man. The default
is /usr/local/bin and /usr/local/man, which failed on
my Ubuntu install because of a missing -D option in the
install command in the Makefile.