Yacc: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м r2.7.3) (робот добавил: vi:Yacc
Нет описания правки
Строка 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]] и т. д.
 
Поскольку парсер, генерируемый с помощью yacc, требует использования [[лексический анализатор|лексического анализатора]], то часто он используется совместно с генератором лексических анализаторов, в большинстве случаев это [[lex]] либо [[GNU flex|flex]]. Стандарт [[IEEE]] [[POSIX]] P1003.2 определяет как функциональность так и требования для lex и yacc.