Кіріспе
Parser generator
Yacc (Yet Another Compiler Compiler) – Стивен К. Джонсон әзірлеген Unix операциялық жүйесі үшін компьютерлік бағдарлама. Бұл алдын ала қарап тұрып, солдан оңға, ең оң жақтан туынды (LALR) талдаушы генераторы, формальды грамматика негізінде LALR талдаушысын (көздік кодтың синтаксистік мағынасын түсінуге тырысатын компилятордың бөлігі) жасайды. Грамматика Backus–Naur түріне (BNF) ұқсас белгілеумен жазылады. Yacc BSD және AT&T Unix жүйелерінде стандартты құрал ретінде келтіріледі. GNU негізіндегі Linux дистрибутивтерінде Yacc-қа толық үйлесімді Bison құралы бар.
Тарих
1970-ші жылдардың басында Bell Labs / AT&T компьютер ғалымы Стивен К. Джонсон Yacc-ті жасады, себебі ол B тілі компиляторына екіұшты немесе операторды қосуды қалаған (McIlroy-дың TMG компиляторы арқылы жасалған). Yacc компиляторына әсер етті. Yacc бастапқыда B бағдарламалау тілінде жазылған, бірақ көп ұзамай Алан Снайдер оны C тіліне қайта жазды. Ол Version 3 Unix-тің құрамына енді, ал Yacc-тің толық сипаттамасы 1975 жылы жарияланды. Джонсон Yacc-ті Portable C компиляторын жасау үшін пайдаланды. Тілдің формалды спецификациясы үшін қолайсыз деп тапқанмен, Строструп C++-тың алғашқы іске асырылымы – Cfront-ті іске асыру үшін Yacc-ті қолданды. 2008 жылғы сұхбатында Джонсон "Yacc-тің Unix және C-нің таралуына қосқан үлесімен ең мақтанамын" деді.
Yacc was originally written in the B programming language, but was soon rewritten in C by Alan Snyder. It appeared as part of Version 3 Unix, and a full description of Yacc was published in 1975. Johnson used Yacc to create the Portable C Compiler. While finding it unsuitable for a formal specification of the language, Stroustrup did proceed to use Yacc to implement Cfront, the first implementation of C++. In a 2008 interview, Johnson reflected that "the contribution Yacc made to the spread of Unix and C is what I'm proudest of".
Әсері
Yacc және оған ұқсас бағдарламалар (көбінесе қайта іске асырылғандары) өте танымал болды. Yacc өзі көптеген Unix жүйелерінде әдепкі талдау генераторы ретінде қолжетімді болған, бірақ кейіннен Berkeley Yacc, GNU Bison, MKS Yacc және Abraxas PCYACC сияқты, көбінесе үйлесімді жаңа бағдарламалармен алмастырылды. Бастапқы AT&T Yacc-тың жаңартылған нұсқасы Sun компаниясының OpenSolaris жобасының бір бөлігі ретінде қосылған. Әрқайсысы бастапқы Yacc-қа қарағанда шағын жақсартулар мен қосымша мүмкіндіктер ұсынады, бірақ түсінік пен негізгі синтаксис өзгеріссіз қалды. Yacc сонымен қатар Bell Laboratories лицензиясы бойынша Charles River Data Systems компаниясының UNOS операциялық жүйесі үшін қолжетімді бірнеше UNIX құралдарының бірі болды. Yacc-пен алғаш рет іске асырылған тілдердің қатарында AWK, C++, eqn және Pic бар. Yacc Unix жүйесінде Portable C Compiler-ді, сондай-ақ FORTRAN 77, Ratfor, APL, bc, m4 сияқты бағдарламалау тілдері үшін талдаушыларды (parsers) іске асыру үшін де қолданылды. Yacc басқа тілдер үшін де қайта жазылды, оның ішінде OCaml, Ratfor, ML, Ada, Pascal, Java, Python, Ruby, Go, Common Lisp және Erlang. Berkeley Yacc: Berkeley-дің Yacc нұсқасы өнімділігі мен қайта пайдалану шектеулерінің болмауы себепті AT&T Yacc-тан тез арада танымал болды. LALR талдаушысы: Yacc-тегі негізгі талдау алгоритмі талдаушыларды жасады. Bison: Yacc-тың GNU нұсқасы. Lex (және Flex лексикалық анализаторы), Yacc (және Bison) екеуімен де жиі қолданылатын токендік талдаушы. BNF – контекстсіз грамматиканы білдіруге қолданылатын метасинтаксис: яғни, контекстсіз тілдерді сипаттаудың формалды тәсілі. PLY (Python Lex Yacc) – Lex және Yacc-тың Python-дағы балама нұсқасы.