[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]  


10. Вызов Bison

Обычный способ вызова Bison следующий:

bison вх_файл

Здесь вх_файл -- имя файла грамматики, обычно заканчивающееся `.y'. Имя файла анализатора получается заменой `.y' на `.tab.c'. Так, `bison foo.y' даст `foo.tab.c', а `bison hack/foo.y' -- `hack/foo.tab.c'. Также возможно, если вы в своём файле грамматики пишете код на C++, а не на C, назвать его `foo.ypp' или `foo.y++'. Тогда выходные файлы будут иметь расширение, аналогичное расширению входного (соответственно `foo.tab.cpp' и `foo.tab.c++'). Эта возможность влияет на все параметры, обрабатывающие имена файлов, такие как `-o' или `-d'.

Например:

bison -d вх_файл.yxx

создаст `вх_файл.tab.cxx' и `вх_файл.tab.hxx', а

bison -d вх_файл.y -o вых_файл.c++

создаст `вых_файл.c++' и `вых_файл.h++'.

10.1 Параметры Bison

Bison поддерживает как традиционные однобуквенные параметры, так и длинные мнемонические имена параметров. Длинные имена параметров помечаются `--' вместо `-'. Сокращение имён параметров допустимо до такой длины, пока они остаются уникальными. Если длинный параметр принимает аргумент, как, например, `--file-prefix', соедините имя параметра и аргумент знаком `='.

Вот список параметров, которые можно использовать с Bison, в алфавитном порядке коротких параметров. Далее следует перекрёстный указатель в алфавитном порядке длинных параметров.

Режимы работы:

-h
--help
Вывести обзор параметров командной строки Bison и завершить работу.
-V
--version
Вывести версию Bison и завершить работу.
-y
--yacc
--fixed-output-files
Эквивалентно `-o y.tab.c'. Выходной файл анализатора называется `y.tab.c', другие выходные файлы: `y.output' и `y.tab.h'. Назначение этого параметра в имитации соглашений по именованию выходных файлов Yacc. Так, следующий скрипт shell может заменить Yacc:
bison -y $*

Подстройка анализатора:

-S файл
--skeleton=файл
Задать используемый скелет. Вероятно, вам не понадобится использовать этот параметр, если вы не разработчик Bison.
-t
--debug
В файле анализатора определить макрос YYDEBUG равным 1, если он ещё не определён, так что средства отладки будут скомпилированы. См. раздел 9. Отладка вашего анализатора.
--locations
Как будто было задано %locations. См. раздел 4.7.8 Обзор объявлений Bison.
-p префикс
--name-prefix=префикс
Как будто было задано %name-prefix="префикс". См. раздел 4.7.8 Обзор объявлений Bison.
-l
--no-lines
Не помещать в файл анализатора команд препроцессора #line. Обычно Bison помещает их в файл анализатора, так что компилятор и отладчики C будут связывать ошибки с вашим исходным файлом, файлом грамматики. Этот параметр заставить их связывать ошибки с файлом анализатора, рассматривая его как самостоятельный независимый исходный файл.
-n
--no-parser
Как будто было задано %no-parser. См. раздел 4.7.8 Обзор объявлений Bison.
-k
--token-table
Как будто было задано %token-table. См. раздел 4.7.8 Обзор объявлений Bison.

Регулирование вывода:

-d
--defines
Как будто было задано %defines, т.е. записывает дополнительный выходной файл, содержащий макроопределения имён типов лексем, определённых в грамматике, и типа семантических значений YYSTYPE как несколько объявлений переменных extern. См. раздел 4.7.8 Обзор объявлений Bison.
--defines=файл_определений
То же, что и предыдущий, но записывает в файл файл_определений.
-b префикс_файла
--file-prefix=префикс
Как будто было задано %file-prefix, т.е. задаёт префикс имён всех выходных файлов Bison. См. раздел 4.7.8 Обзор объявлений Bison.
-v
--verbose
Как будто было задано %verbose, т.е. записывает дополнительный выходной файл, содержащий подробное описание грамматики и анализатора. См. раздел 4.7.8 Обзор объявлений Bison.
-o имя_файла
--output=имя_файла
Именем файла анализатора будет имя_файла. Имена других выходных файлов получаются из имя_файла как описано для параметров `-v' и `-d'.
-g
Вывести определение VCG автомата LALR(1)-грамматики, вычисленного Bison. Если файл грамматики называется `foo.y', выходной файл VCG будет `foo.vcg'.
--graph=файл_графа
Поведение --graph то же, что и `-g'. Единственное различие в том, что у него есть необязательный аргумент -- имя выходного файла графа.

10.2 Переменные среды

Вот список переменных среды, оказывающих влияние на работу Bison.

`BISON_SIMPLE'
`BISON_HAIRY'
Многие анализаторы, генерируемые Bison, дословно копируются из файла `bison.simple'. Если Bison не может найти этот файл или если вы хотите указать Bison использовать другую его копию, установка переменной среды BISON_SIMPLE на путь к файлу заставит Bison использовать эту копию. Когда используется объявление `%semantic_parser', Bison копирует анализатор из файла `bison.hairy'. Расположение этого файла также может быть задано или переопределено аналогичным образом, переменной среды BISON_HAIRY.

10.3 Перекрёстный список параметров

Здесь приведён список параметров в алфавитном порядке длинных параметров, чтобы помочь вам найти соответствующий короткий параметр.

10.4 Ограничения на расширения под DOS

В системах DOS/Windows 9X возможность использования расширений имён выходных файлов, таких как `.tab.c', зависит от используемой файловой системы. Простая файловая система DOS содержит ограничение на длину имени файла, не допускает использование определённого множества незаконных литер и не допускает более одной точки в имени файла.

Порт bison DJGPP определяет во время выполнения, доступны ли длинные имена файлов (ДИФ). Поддержка ДИФ будет доступны в сеансе DOS под Windows 9X и последующих версий. Для Windows NT 4.0 для правильной поддержки ДИФ в сеансе DOS нужен специальный драйвер (`ntlfn09b.zip' или более поздний, доступный на любом зеркале simtelnet в каталоге /v2misc). Если поддержка ДИФ доступна, порт bison DJGPP будет использовать для выходных файлов стандартные расширения имён файлов POSIX. Если поддержка ДИФ недоступна, этот порт будет использовать расширения имён файлов для DOS.

В этой таблице указаны используемые расширения:

расширени ДИФ (Win9X) расширение КИФ (просто DOS)
`.tab.c' `_tab.c'
`.tab.h' `_tab.h'
`.tab.cpp' `_tab.cpp'
`.tab.hpp' `_tab.hpp'
`.output' `.out'
`.stype.h' `.sth'
`.guard.c' `.guc'

10.5 Вызов Bison под VMS

Синтаксис командной строки Bison под VMS является вариацией обычного синтаксиса команды Bison адаптированной для соответствия соглашениям VMS.

Чтобы найти VMS-эквивалент параметра Bison, возьмите длинную форму параметра, подставьте `/' вместо начального `--', `_' -- вместо каждого `-' в имени длинного параметра. Например, такой вызов под VMS:

bison /debug/name_prefix=bar foo.y

соответствует следующей команде под POSIX:

bison --debug --name-prefix=bar foo.y

Файловая система VMS не допускает такие имена файлов, как `foo.tab.c'. В вышеприведённом примере выходной файл будет называться `foo_tab.c'.


[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]