Yacc
-
Обзор Yacc
- Yacc — это генератор синтаксического анализатора для Unix, разработанный Стивеном Си. Джонсоном.
- Он генерирует синтаксический анализатор LALR на основе формальной грамматики в нотации Бэкуса-Наура.
- Yacc является стандартной утилитой для BSD и AT&T Unix, а в Linux дистрибутивах на основе GNU его заменяет Bison.
-
История и разработка
- Стивен К. Джонсон разработал Yacc в начале 1970-х для вставки оператора exclusive or в компилятор языка B.
- Эл Ахо направил Джонсона к работе Дональда Кнута по синтаксическому анализу LR, что послужило основой для Yacc.
- Yacc был написан на языке программирования B, но позже был переписан на C Аланом Снайдером.
- Он появился в Unix версии 3 и был опубликован в 1975 году.
- Джонсон использовал Yacc для создания переносимого компилятора C, а Бьярне Страуструп использовал его для реализации Cfront.
-
Описание и использование
- Входные данные для Yacc — это грамматика с фрагментами кода на C, связанными с правилами.
- Результатом является синтаксический анализатор, который выполняет действия C, связанные с правилами.
- Для полного синтаксического анализа требуется внешний лексический анализатор.
- Стандарт IEEE POSIX P1003.2 определяет требования для Lex и Yacc.
-
Влияние и развитие
- Yacc и подобные программы были популярны и использовались для реализации различных языков программирования.
- Berkeley Yacc стал более популярным, чем AT&T Yacc, благодаря производительности и отсутствию ограничений.
- Yacc был переписан для многих языков программирования, включая OCaml, Ada, Pascal и другие.
-
Рекомендации и внешние ссылки
- В статье есть ссылки на руководства по использованию Yacc для различных Unix-систем и на игровую среду для изучения и тестирования синтаксиса.
Полный текст статьи: