Yacc: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Нет описания правки |
Gromolyak (обсуждение | вклад) мНет описания правки Метки: с мобильного устройства через мобильное приложение |
||
Строка 2:
'''yacc''' — [[компьютерная программа]], служащая стандартным генератором [[синтаксический анализатор|синтаксических анализаторов (парсеров)]] в [[Unix]]-системах. Название является [[акроним]]ом «Yet Another Compiler Compiler» («ещё один компилятор компиляторов»). Yacc генерирует парсер на основе аналитической грамматики, описанной в нотации [[Форма Бэкуса-Наура|BNF]] (форма Бэкуса-Наура) или контекстно-свободной грамматики. На выходе yacc выдаётся код парсера на [[Си (язык программирования)|языке программирования Си]].
Yacc был разработан Стефеном Джонсоном (Stephen C. Johnson) в [[AT&T]] для операционной системы [[Unix]]. Позже были написаны совместимые версии программы, такие как Berkeley Yacc, [[GNU bison]], MKS yacc и Abraxas yacc (обновлённый вариант AT&T-версии с открытым исходным кодом также вошёл в проект [[OpenSolaris]] от [[Sun Microsystems|Sun]]). Каждый вариант предлагал незначительные улучшения и дополнительные возможности по сравнению с оригиналом, но концепция осталась той же. Yacc также был переписан на других языках, включая [[Java]], [[C Sharp|C#]], [[Pascal]], [[Ада (язык программирования)|Ada]], [[Ratfor]], [[EFL]], [[ML]], [[Limbo]], [[Erlang]], [[Go]] и т. д.
Поскольку парсер, генерируемый с помощью yacc, требует использования [[лексический анализатор|лексического анализатора]], то часто он используется совместно с генератором лексических анализаторов, в большинстве случаев это [[lex]] либо [[GNU flex|flex]]. Стандарт [[IEEE]] [[POSIX]] P1003.2 определяет как функциональность, так и требования для lex и yacc.
|