Обычный способ вызова 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++'.
Bison поддерживает как традиционные однобуквенные параметры, так и длинные мнемонические имена параметров. Длинные имена параметров помечаются `--' вместо `-'. Сокращение имён параметров допустимо до такой длины, пока они остаются уникальными. Если длинный параметр принимает аргумент, как, например, `--file-prefix', соедините имя параметра и аргумент знаком `='.
Вот список параметров, которые можно использовать с Bison, в алфавитном порядке коротких параметров. Далее следует перекрёстный указатель в алфавитном порядке длинных параметров.
Режимы работы:
-h
--help
-V
--version
-y
--yacc
--fixed-output-files
bison -y $*
Подстройка анализатора:
-S файл
--skeleton=файл
-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=имя_файла
-g
--graph=файл_графа
Вот список переменных среды, оказывающих влияние на работу Bison.
BISON_SIMPLE
на путь к файлу заставит Bison использовать эту
копию.
Когда используется объявление `%semantic_parser', Bison копирует
анализатор из файла `bison.hairy'. Расположение этого файла также может
быть задано или переопределено аналогичным образом, переменной среды
BISON_HAIRY
.
Здесь приведён список параметров в алфавитном порядке длинных параметров, чтобы помочь вам найти соответствующий короткий параметр.
В системах 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' |
Синтаксис командной строки 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'.