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