Это команда yaccplan9, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
yacc - еще один компилятор-компилятор
СИНТАКСИС
Yacc [ вариант ... ] грамматика
ОПИСАНИЕ
Yacc преобразует контекстно-свободную грамматику и код перевода в набор таблиц для
LR(1) парсер и переводчик. Грамматика может быть неоднозначной; указанные правила приоритета
используется для устранения двусмысленности.
Выходной файл, y.tab.c, должен быть скомпилирован компилятором C для создания программы This
программа должна быть загружена с функцией лексического анализатора, yylex (недействительно) (часто генерируется
закон(1)), с main (int аргк, колесница * argv []) программа, и с помощью процедуры обработки ошибок,
yyerror (символ *).
Варианты
-o выходной Прямой вывод в указанный файл вместо y.tab.c.
-Dn Создать файл у.отладка, содержащие диагностические сообщения. Чтобы включить их в
синтаксический анализатор, скомпилируйте его с символом препроцессора yydebug определенный. Количество
диагностический вывод парсера регулируется значением n. Значение 0 сообщает
ошибки; 1 сообщает о сокращениях; более высокие значения (до 4) включают больше информации
о переходах между состояниями.
-v Создать файл у.выход, содержащий описание таблиц синтаксического анализа и
конфликты, возникающие из-за двусмысленности в грамматике.
-d Создать файл y.tab.h, содержащий #define заявления, которые связывают Yacc-назначенный
"коды токенов" с объявленными пользователем "именами токенов". Включите его в исходные файлы
кроме y.tab.c чтобы дать доступ к кодам токенов.
-s стебель Измените префикс имен файлов y.tab.c, y.tab.h, у.отладкакачества у.выход в
стебель.
-S Напишите парсер, который использует Stdio вместо Распечатать процедуры в libc.
-l Отключите директивы #line в сгенерированном парсере.
-a Создайте синтаксический анализатор, который принимает аргумент типа Yyarg и передает этот аргумент.
при каждом вызове функции лексического анализатора yylex. Yyarg содержит для каждого экземпляра
state и один видимый пользователем член, arg, типа void *.
Спецификация Yacc сама по себе такая же, как и версия UNIX, описанная в
ссылки, указанные ниже. Кроме -D вариант, основными существенными отличиями являются:
Интерфейс к среде C по умолчанию через , а не
; -S опция отменяет это.
Парсер принимает вводимый текст UTF (см. UTF(7)), что имеет несколько эффектов.
Во-первых, возвращаемое значение yylex () больше не вписывается в короткие; во-вторых, стартовый
значение для нетерминалов теперь 0xE000, а не 257.
Сгенерированный парсер может быть рекурсивным: действия могут вызывать yyparse, например, чтобы
реализовать своего рода #включают заявление в переводчике.
Наконец, некоторые недокументированные внутренние механизмы парсера были изменены, что
может повлиять на программы, которые слишком много знают о его структуре.
Используйте yaccplan9 онлайн с помощью сервисов onworks.net