버클리 야크
Berkeley Yacc원저작자 | 로버트 코벳 |
---|---|
개발자 | 토머스 디키 |
초기 릴리즈 | 1989년 9월 2일, [1] | 전(
안정된 릴리스 | 20220128[2] / 2022년 1월 ; 전 28일) |
저장소 | |
기입처 | ANSI C89 |
운영 체제 | Unix와 같은 |
유형 | 파서 발생기 |
면허증. | 퍼블릭 도메인 |
웹 사이트 | invisible-island |
Berkeley Yacc(byacc)는 Yacc와 호환되도록 설계된 Unix 파서 제너레이터입니다.그것은 원래 Robert Corbett에 의해 쓰여졌고 [3]1989년에 출시되었습니다.AT&T Yacc보다 속도가 빨랐기 때문에 자유자재로 사용할 수 있는 라이선스 덕분에 [4]Yacc의 가장 인기 있는 버전이 되었다.ANSI C89로 작성되어 퍼블릭도메인 소프트웨어라는 장점이 있습니다.
GNU [5][6]Bison과 폭넓게 호환되는 방식으로 구현되는 재진입과 같은 Yacc에서 사용할 수 없는 기능이 포함되어 있습니다.
역사
1985년 Robert Corbett은 DeRemer와 Pennello의 [7]1982년 논문을 바탕으로 독창적인 LALR 파서 발생기를 개발했습니다.코벳은 1985년 [8][9]6월 버클리 캘리포니아 대학에서 받은 박사학위 연구의 일환으로 이 책을 썼다.원래 이름은 Byson이었고 Yacc와 호환되지 않았지만 나중에 Bison으로 이름이 바뀌어 GNU Bison의 기반이 되었습니다.
이후 1985년 코벳은 LALR 파서 제너레이터를 개발하여 야크 호환성을 갖게 하고 제우스라고 이름 붙였지만 [10]그 후 동물원이라고 이름을 바꿨다.Corbett은 Zoo의 소스 코드를 Usenet 뉴스 그룹에 공개했지만 1989년 9월 Corbett이 FTP [1]서버에 소스 코드를 넣는 것에 대해 comp.compilers 뉴스 그룹에 게시할 때까지 거의 눈치채지 못했습니다.그것의 이름을 바꾸는 것에 대한 논의가 있었고 1989년 10월에 버클리 야크로 [11]알려지게 되었다.
1995년 Chris Dodd는 AT&[14][15]T Yacc에 대한 유사한 수정을 기술한 Merrill의 1993년 논문에 기초하여 C++[12][13]와 같은 컨텍스트에 민감한 언어 해석을 지원하기 위해 BtYacc의 역추적 파생 모델인 BtYacc를 개발했습니다.역추적 및 의미 명확화 기능을 통해 애매한 문법에 대한 파서를 생성할 수 있습니다.해석되었지만 의미 정보에 의해 거부된 규칙을 롤백하여 파서가 다른 [16][17]규칙을 시도할 수 있습니다.그러나, 부작용의 무료 재판의 필요성과 교대제-축소 갈등의 [18]경직된 대처가 필요하다는 비판도 받고 있다.
1997년 Vadim Maslov는 BtYacc의 유지보수를 인수하여 회사에서 [19]개발한 COBOL 파서를 지원했습니다.1999년에는 마지막 3.0 릴리스가 C++로 변환되어 [20]C에서는 구현되지 않게 되었습니다.
2000년에 토마스 E.Dickkey는 버클리 Yacc를 OpenVMS로 포팅하여 VMS로의 주석 포팅을 용이하게 했습니다.다른 유지보수 업체를 찾지 못한 후 Dickkey는 2002년 [21]2월부터 버클리 Yacc를 유지하고 있습니다.중요한 업데이트는 K&R C에서 ANSI [21]C89로의 전환이었다.
2014년, Tom Shields는 BtYacc 백트랙을 Berkeley Yacc에 효과적으로 통합하고 [22]2014년 4월부터 Dickey 릴리즈에서 C(C++만 지원하는 것이 아니라)를 다시 지원합니다.
언어들
파서 생성기는 일반적으로 세 가지 언어를 취급합니다. 제너레이터가 구현되는 언어, 생성된 파서가 구현되는 언어 및 생성된 파서가 해석해야 하는 모든 것을 기술하는 메타 언어입니다.제4언어는 생성된 파서가 어떤 언어를 파싱하든 고려될 수 있지만 파서 생성기는 그러한 직접 처리를 하지 않고 생성된 파서가 이러한 처리를 하도록 하면서 주어진 기술에서 파서를 생성하는 데만 초점을 맞춘다.Yacc는 C로 작성되며 자체 Yacc 메타언어 설명에서 C로 파서를 생성합니다.이것은 Verkely Yacc의 동작 방식이기도 하지만(따라서 호환성), C 이외의 언어로 파서를 생성할 수 있도록 많은 파생 모델이 작성되었습니다.
Ray Lischner는 byacc 1.6에서 perl-byacc(pbyacc)를 개발하여 Perl에서도 파서를 생성할 수 있도록 하였습니다.나중에 Richard "Rick" Ohnemus는 패치를 byacc 1.6에서 byacc 1.[23]8로 이식했습니다.그 후 1996년 제이크 돈햄은 perl-yacc 1.8.2에서 p5yacc를 개발하여 생성된 Perl 파서가 Perl 5 클래스를 사용하도록 하였습니다.
1994년, Mike Klyn은 perl-yacc 1.8.2에서 tyacc를 개발하여 Tcl에서도[24] 파서를 생성할 수 있도록 하였습니다.
1997년 밥 제이미슨은 [25][26]byacc 1.8에서 BYACC/Java(나중에 BYACC/J 또는 byaccj로 불림)를 개발하여 Java에서도 파서를 생성할 수 있게 되었습니다.
2000년에 Bruce Bannsen은 BYACC/J의 Java 파서 기능을 perl-yacc에 통합하고 [27]Python에서 파서를 생성하는 기능을 추가했습니다.2013년 토마스 디커슨은 파이바이악으로 [28]간주하여 이를 더욱 개선하였다.
2003년에 Dave Bodenstab은 tyacc와 p5yacc를 Marge하여 FreeBSD(byacc 파생 모델)[29]로부터의 yacc의 4.8 릴리즈에서 PERL-TCL-YACC를 개발했습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b Corbett, Robert (September 2, 1989). "PD LALR(1) parser generator". Newsgroup: comp.compilers. Usenet: 1989Sep2.134244.1611@esegue.uucp. Retrieved 2021-09-17.
- ^ "Index of /archives/byacc". Retrieved 17 April 2022.
- ^ Doug Brown; John Levine; Tony Mason (October 1992), lex & yacc (2 ed.), O'Reilly Media
- ^ John Levine (August 2009), flex & bison, O'Reilly Media
- ^ "Berkeley Yacc". invisible-island.net. Archived from the original on 2020-10-19. Retrieved 2020-11-10.
...support for reentrant code, which has evolved in byacc to the point where it can be compared and tuned against bison.
- ^ "Berkeley Yacc Change log, see entry "2010-06-07 Andres.Meji"". 2010-06-07. Archived from the original on 2020-11-10. Retrieved 2020-11-10.
- ^ DeRemer, Frank; Pennello, Thomas (October 1982). "Efficient Computation of LALR(1) Look-Ahead Sets" (PDF). ACM Trans. Program. Lang. Syst. ACM. 4 (4): 615–649. doi:10.1145/69622.357187. ISSN 0164-0925. S2CID 52833742. Retrieved 2017-08-26.
- ^ Corbett, Robert (September 24, 1998). "Re: Anyone extended MAXTABLE in yacc parsers?". Newsgroup: comp.compilers. Usenet: 98-09-125@comp.compilers. Retrieved 2017-08-26.
- ^ Corbett, Robert Paul (June 1985). Static Semantics and Compiler Error Recovery (Ph.D.). University of California, Berkeley. DTIC ADA611756.
- ^ Corbett, Robert (September 6, 1989). "Name that PD parser generator". Newsgroup: comp.compilers. Usenet: 1989Sep6.152554.318@esegue.segue.boston.ma.us. Retrieved 2017-08-26.
- ^ Corbett, Robert (October 3, 1989). "Berkeley Yacc (new version)". Newsgroup: comp.compilers. Usenet: 1989Oct3.230634.1007@esegue.segue.boston.ma.us. Retrieved 2021-09-17.
- ^ Dodd, Chris (March 7, 1995). "BTYACC -- yacc with backtracking and inherited attributes". Newsgroup: comp.compilers. Usenet: 95-03-044@comp.compilers. Retrieved 2021-09-17.
- ^ "README.txt". BtYacc: BackTracking Yacc. Siber Systems. Retrieved 2020-05-14.
- ^ "README.BYACC". Backtracking yacc. GitHub. Retrieved 2020-05-14.
- ^ Merrill, Gary H. (August 1, 1993). "Parsing Non-LR(k) grammars with yacc". Software: Practice and Experience. 23 (8): 829–850. CiteSeerX 10.1.1.14.1958. doi:10.1002/spe.4380230803. ISSN 0038-0644. S2CID 14695500. Retrieved 2020-05-14.
- ^ "btyacc(1)". Debian stretch — Debian Manpages.
- ^ Dodd, Chris (13 February 2019). "ChrisDodd/btyacc". GitHub.
- ^ Thurston, Adrian D.; Cordy, James R. (2006). "A Backtracking LR Algorithm for Parsing Ambiguous Context-Dependent Languages" (PDF). In Erdogmus, Hakan; Stroulia, Eleni; Stewart, Darlene A. (eds.). Proceedings of the 2006 conference of the Centre for Advanced Studies on Collaborative Research, October 16–19, 2006, Toronto, Ontario, Canada. CASCON 2006. pp. 39–53. CiteSeerX 10.1.1.518.7094. doi:10.1145/1188966.1188972. Retrieved 2020-05-14.
- ^ Maslov, Vadim (October 8, 1997). "Version 1.1 of BtYacc (Backtracking Yacc) is available". Newsgroup: comp.compilers. Usenet: 97-10-039@comp.compilers. Retrieved 2021-09-17.
- ^ "BtYacc: BackTracking Yacc Parser Generator". Siber Systems. Retrieved 2020-05-18.
- ^ a b "BYACC - BERKELEY YACC". invisible-island.net. Archived from the original on 2002-04-06. Retrieved 2020-11-10.
- ^ "Release t20140407". ThomasDickey/byacc-snapshots. GitHub. Retrieved 2020-05-18.
- ^ "ACKNOWLEDGEMENTS". elfprince13/PyByacc. GitHub. 2013-01-14. Retrieved 2021-11-01.
- ^ "tyacc-0.9.README". pub/languages/tcl/ibp. ftp.funet.fi. Retrieved 2021-11-01.
- ^ "BYACC/Java Home Page". Bob Jamison. LinCom Innovations ASG. Archived from the original on 1998-12-05.
- ^ "master/src/skeleton.c". byacc/j. SourceForge. Retrieved 2021-10-28.
- ^ "Berkeley Yacc". SourceForge. Retrieved 2021-11-01.
- ^ "elfprince13/PyByacc". GitHub. 2013-01-14. Retrieved 2021-11-01.
- ^ "BYACC which produces Perl/Tcl parsers". Dave Bodenstab's Home Page. Archived from the original on 2021-05-01.