Беркли Якк - Berkeley Yacc

Беркли Якк
Оригинальный автор (ы)Роберт Корбетт
Разработчики)Томас Дики
изначальный выпуск2 сентября 1989 г.; 31 год назад (1989-09-02)[1]
Стабильный выпуск
20200330/30 марта 2020 г.; 8 месяцев назад (2020-03-30)
Репозиторий Отредактируйте это в Викиданных
Написано вANSI C89
Операционная системаUnix-подобный
ТипГенератор парсеров
Лицензиявсеобщее достояние
Интернет сайтостров-невидимка.сеть/ byacc/ Отредактируйте это в Викиданных

Беркли Якк (byacc) это Unix генератор парсеров разработан, чтобы быть совместимым с Yacc. Первоначально он был написан Робертом Корбеттом и выпущен в 1989 году.[2] Из-за своей либеральной лицензии и того, что он был быстрее, чем AT&T Yacc, он быстро стал самой популярной версией Yacc.[3] У него есть преимущества написания на ANSI C89 и быть всеобщее достояние программного обеспечения.

Он содержит функции, недоступные в Yacc, такие как повторный вход, который реализован способом, который в целом совместим с GNU Bison.[4][5]

История

В 1985 году Роберт Корбетт разработал оригинальный Генератор парсера LALR основан на статье Де Ремера и Пеннелло 1982 года.[6] Корбетт написал это как часть своего исследования, направленного на докторскую степень. он получил от Калифорнийский университет в Беркли в июне 1985 г.[7][8] Первоначально он назывался Байсон и несовместим с Yacc но впоследствии он был переименован в Bison и стал основой GNU Bison.

Позже, в 1985 году, Корбетт создал еще один Yacc-совместимый генератор парсеров LALR, первоначально названный Zeus, но впоследствии переименованный в Zoo.[9] Корбетт опубликовал исходный код Zoo в Группа новостей Usenet но в основном это оставалось незамеченным до тех пор, пока в сентябре 1989 года Корбетт не опубликовал в группе новостей comp.compilers о размещении исходного кода на FTP сервер.[1] Была дискуссия о переименовании его, и к октябрю 1989 года он стал известен как Berkeley Yacc (byacc).[10]

В 1995 году Крис Додд разработал BtYacc, возврат производная от Berkeley Yacc для поддержки синтаксического анализа контекстно-зависимые языки подобно C ++,[11][12] основан на статье Merrill 1993 года, описывающей аналогичные модификации AT&T Yacc.[13][14] Это предлагает возврат и семантическое устранение неоднозначности для синтаксического анализа неоднозначная грамматика. Правило, проанализированное, но отклоненное семантической информацией, можно откатить, чтобы синтаксический анализатор мог попробовать другое правило.[15][16] Тем не менее, его также критиковали за необходимость пробных действий без побочных эффектов и за негибкое управление конфликтами смены-сокращения.[17]

В 1997 году Вадим Маслов взял на себя обслуживание BtYacc для поддержки КОБОЛ парсер, разработанный его компанией.[18] К 1999 году последняя версия 3.0 была преобразована в C ++, больше не поддерживает C.[19]

В 2000 году Томас Э. Дики портировал Беркли Якка на VMS чтобы облегчить перенос банка в VMS. Не сумев найти другого сопровождающего, Дики поддерживает Berkeley Yacc с февраля 2002 года.[20] Значительным обновлением стала конверсия из K&R C к ANSI C89.[20]

В 2014 году Том Шилдс интегрировал отслеживание BtYacc в Berkeley Yacc, эффективно включив BtYacc и снова поддерживая C (вместо только C ++) в выпусках Dickey с апреля 2014 года.[21]

Смотрите также

  • GNU Bison - еще одна бесплатная замена для Yacc, написанная тем же автором, что и Berkeley Yacc.

Рекомендации

  1. ^ а б Корбетт, Роберт (2 сентября 1989 г.). "Генератор парсера PD LALR (1)". Группа новостейcomp.compilers. Usenet:  [email protected]. Получено 2017-08-26.
  2. ^ Дуг Браун; Джон Левин; Тони Мейсон (октябрь 1992 г.), lex & yacc (2-е изд.), O'Reilly Media
  3. ^ Джон Левин (август 2009 г.), Flex & Bison, O'Reilly Media
  4. ^ "Беркли Якк". invisible-island.net. В архиве из оригинала на 2020-10-19. Получено 2020-11-10. ... поддержка реентерабельного кода, который в byacc развился до такой степени, что его можно сравнивать и настраивать с bison.
  5. ^ "Журнал изменений Berkeley Yacc, см. Запись" 2010-06-07 Andres.Meji"". 2010-06-07. В архиве с оригинала на 2020-11-10. Получено 2020-11-10.
  6. ^ ДеРемер, Франк; Пеннелло, Томас (октябрь 1982 г.). «Эффективное вычисление LALR (1) Look-Ahead Sets» (PDF). ACM Trans. Программа. Lang. Syst. ACM. 4 (4): 615–649. Дои:10.1145/69622.357187. ISSN  0164-0925. Получено 2017-08-26.
  7. ^ Корбетт, Роберт (24 сентября 1998 г.). "Re: Кто-нибудь расширял MAXTABLE в парсерах yacc?". Группа новостейcomp.compilers. Usenet:  [email protected]. Получено 2017-08-26.
  8. ^ Корбетт, Роберт Пол (июнь 1985 г.). Статическая семантика и восстановление ошибок компилятора (Кандидат наук.). Калифорнийский университет в Беркли. DTIC ADA611756.
  9. ^ Корбетт, Роберт (6 сентября 1989 г.). "Назовите этот генератор парсера PD". Группа новостейcomp.compilers. Usenet:  [email protected]. Получено 2017-08-26.
  10. ^ Корбетт, Роберт (3 октября 1989 г.). "Беркли Як (новая версия)". Группа новостейcomp.compilers. Usenet:  [email protected]. Получено 2017-08-26.
  11. ^ Додд, Крис (7 марта 1995 г.). "BTYACC - yacc с возвратом и унаследованными атрибутами". Группа новостейcomp.compilers. Usenet:  [email protected]. Получено 2020-05-18.
  12. ^ "README.txt". BtYacc: BackTracking Yacc. Сибирские Системы. Получено 2020-05-14.
  13. ^ "README.BYACC". Возврат yacc. GitHub. Получено 2020-05-14.
  14. ^ Меррилл, Гэри Х. (1 августа 1993 г.). "Анализ не-LR (k) грамматик с помощью yacc". Софтв. Практик. Опыт. 23 (8): 829–850. CiteSeerX  10.1.1.14.1958. Дои:10.1002 / spe.4380230803. ISSN  0038-0644. Получено 2020-05-14.
  15. ^ "btyacc (1)". Debian stretch - Debian Manpages.
  16. ^ Додд, Крис (13 февраля 2019 г.). "ChrisDodd / btyacc". GitHub.
  17. ^ Терстон, Адриан Д .; Корди, Джеймс Р. (2006). «Алгоритм обратного отслеживания LR для анализа неоднозначных контекстно-зависимых языков» (PDF). В Эрдогмусе, Хакане; Струля, Элени; Стюарт, Дарлин А. (ред.). Материалы конференции 2006 г. Центра перспективных исследований в области совместных исследований, 16-19 октября 2006 г., Торонто, Онтарио, Канада. CASCON 2006. С. 39–53. CiteSeerX  10.1.1.518.7094. Дои:10.1145/1188966.1188972. Получено 2020-05-14.
  18. ^ Маслов, Вадим (8 октября 1997 г.). "Доступна версия 1.1 BtYacc (Backtracking Yacc)". Группа новостейcomp.compilers. Usenet:  [email protected]. Получено 2020-05-18.
  19. ^ "BtYacc: Генератор парсера Yacc BackTracking". Сибирские Системы. Получено 2020-05-18.
  20. ^ а б «BYACC - БЕРКЛИ ЯКЦ». invisible-island.net. В архиве из оригинала от 06.04.2002. Получено 2020-11-10.
  21. ^ "Выпуск t20140407". ThomasDickey / byacc-снимки. GitHub. Получено 2020-05-18.

внешняя ссылка