YACC(1)
НАЗВАНИЕ
yacc - еще один компилятор компиляторов
СИНТАКСИС
yacc [-v] [-d] [-l] [-t] грамматика
ОПИСАНИЕ
Команда yacc преобразует контекстно-свободную грамматику в набор таблиц для простого LR(1)-разбора. Грамматика может содержать неоднозначности; чтобы их преодолеть, используются заданные правила предшествования.
Выходной файл y.tab.c преобразуется C-компилятором в
программу yyparse, которую нужно скомпоновать с программой лексического анализа yylex, а также с подпрограммой main и подпрограммой обработки ошибок yyerror.
Эти подпрограммы должны быть предоставлены пользователем; при порождении лексических анализаторов полезен
lex(1).
Допустимые опции:
-v | Сгенерировать файл y.output, который содержит описание таблиц разбора с указанием конфликтных ситуаций, вызванных неоднозначностями грамматики.
|
---|
-d | Сгенерировать файл y.tab.h, который содержит определения #define, связывающие заданные пользователем "имена лексем" с назначенными программой yacc
"кодами лексем", что позволяет использовать коды
лексем в исходных файлах, отличных от y.tab.c.
|
---|
-l | Не вставлять в программу y.tab.c операторы #line.
Рекомендуется использовать только после того, как
грамматика и другие компоненты полностью отлажены.
|
---|
-t | При помощи средств условной компиляции в программу
y.tab.c всегда вставляются отладочные операторы,
однако по умолчанию компилятор их пропускает. Если
указана опция -t, то при отсутствии других указаний отладочные операторы будут скомпилированы. Вне
зависимости от использования опции -t компиляцией
отладочных операторов управляет переменная препроцессора YYDEBUG. Если YYDEBUG имеет ненулевое значение, отладочные операторы компилируются; при нулевом значении они пропускаются. Когда программа
сформирована без отладочного кода, ее размер меньше и скорость выполнения несколько выше.
|
---|
ФАЙЛЫ
y.output
y.tab.c
y.tab.h Определение кодов лексем.
yacc.tmp Временный файл.
yacc.debug Временный файл.
yacc.acts Временный файл.
/usr/lib/yaccpar Прототип алгоритма разбора для
C-программ.
СМ. ТАКЖЕ
lex(1).
ДИАГНОСТИКА
В стандартный протокол направляется информация о числе
конфликтных ситуаций типа "свертка-свертка" и "перенос-свертка"; более подробные сообщения содержатся в
файле y.output. Аналогичным образом сообщается о продукциях, недостижимых из начального символа грамматики.
ОГРАНИЧЕНИЯ
Так как имена файлов фиксированы, в данном каталоге в
каждый момент времени может быть активным только один
процесс yacc