[содержание] [назад] [пред] [вверх] [след] [вперед]
обычный способ вызова 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
-
вывести обзор параметров командной строки 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'. единственное различие в том,
что у него есть необязательный аргумент -- имя выходного файла графа.
вот список переменных среды, оказывающих влияние на работу bison.
- `bison_simple'
-
- `bison_hairy'
-
многие анализаторы, генерируемые bison, дословно копируются из файла
`bison.simple'. если bison не может найти этот файл или если вы
хотите указать 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'.
[содержание] [назад] [пред] [вверх] [след] [вперед]
|