YACC(1) 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.