+++ /dev/null
-\r
-\r
-\r
- The History of PCCTS\r
-\r
- The Purdue Compiler-Construction Tool Set\r
-\r
-\r
- Terence Parr\r
- Parr Research Corporation\r
- Minneapolis, Minnesota\r
- and\r
- University of Minnesota\r
- Army High Performance Computing Research Center\r
-\r
- [Updated 8-7-94]\r
-\r
-\r
- The PCCTS project began as a parser-generator project for a gra-\r
-duate course at Purdue University in the Fall of 1988 taught by Hank\r
-Dietz- translator-writing systems. Under the guidance of Professor\r
-Dietz, the parser generator, ANTLR (originally called YUCC), continued\r
-after the termination of the course and eventually became the subject\r
-of Terence Parr's Master's thesis. Originally, lexical analysis was\r
-performed via ALX which was soon replaced by Will Cohen's DLG in the\r
-Fall of 1989 (DFA-based lexical-analyzer generator, also an offshoot\r
-of the graduate translation course).\r
-\r
- The alpha version of ANTLR was totally rewritten resulting in\r
-1.00B. Version 1.00B was released via an internet newsgroup\r
-(comp.compilers) posting in February of 1990 and quickly gathered a\r
-large following. 1.00B generated only LL(1) parsers, but allowed the\r
-merged description of lexical and syntactic analysis. It had rudimen-\r
-tary attribute handling similar to that of YACC and did not incor-\r
-porate rule parameters or return values; downward inheritance was very\r
-awkward. 1.00B-generated parsers terminated upon the first syntax\r
-error. Lexical classes (modes) were not allowed and DLG did not have\r
-an interactive mode.\r
-\r
- Upon starting his Ph.D. at Purdue in the Fall of 1990, Terence\r
-Parr began the second total rewrite of ANTLR. The method by which\r
-grammars may be practically analyzed to generate LL(k) lookahead\r
-information was discovered in August of 1990 just before his return.\r
-Version 1.00 incorporated this algorithm and included the AST mechan-\r
-ism, lexical classes, error classes, and automatic error recovery;\r
-code quality and portability were higher. In February of 1992 1.00\r
-was released via an article in SIGPLAN Notices. Peter Dahl, Ph.D.\r
-candidate, and Professor Matt O'Keefe (both at the University of Min-\r
-nesota) tested this version extensively. Dana Hoggatt (Micro Data\r
-Base Systems, Inc.) came up with the idea of error grouping (strings\r
-attached to non-terminals) and tested 1.00 heavily.\r
-\r
- Version 1.06 was released in December 1992 and represented a\r
-large feature enhancement over 1.00. For example, rudimentary seman-\r
-tic predicates were introduced, error messages were significantly\r
-improved for k>1 lookahead and ANTLR parsers could indicate that loo-\r
-kahead fetches were to occur only when necessary for the parse\r
-\r
-\r
-\r
- Page 1\r
-\f\r
- PCCTS\r
-\r
-\r
-(normally, the lookahead "pipe" was constantly full). Russell Quong\r
-joined the project in the Spring of 1992 to aid in the semantic predi-\r
-cate design. Beginning and advanced tutorials were created and\r
-released as well. A makefile generator was included that sets up\r
-dependencies and such correctly for ANTLR and DLG. Very few 1.00\r
-incompatibilities were introduced (1.00 was quite different from 1.00B\r
-in some areas).\r
-\r
- 1.10 was released on August 31, 1993 and incorporated bug fixes,\r
-a few feature enhancements and a major new capability - an arbitrary\r
-lookahead operator (syntactic predicate), (alpha)?beta. This feature\r
-was co-designed with Professor Russell Quong also at Purdue. To sup-\r
-port infinite lookahead, a preprocessor flag, ZZINF_LOOK, was created\r
-that forced the ANTLR() macro to tokenize all input prior to parsing.\r
-Hence, at any moment, an action or predicate can see the entire input\r
-sentence. The predicate mechanism of 1.06 was extended to allow mul-\r
-tiple predicates to be hoisted; the syntactic context of a predicate\r
-was also moved along with the predicate.\r
-\r
- In February of 1994, SORCERER (a simple tree-parser generator)\r
-was released. This tool allows the user to parse child-sibling trees\r
-by specifying a grammar rather than building a recursive-descent tree\r
-walker by hand. Work towards a library of tree transformations is\r
-underway. Aaron Sawdey at The University of Minnesota became a second\r
-author of SORCERER after the initial release.\r
-\r
- On April 1, 1994, PCCTS 1.20 was released. This was the first\r
-version to actively support C++ output. It also included important\r
-fixes regarding semantic predicates and (..)+ subrules. This version\r
-also introduced token classes, the "not" operator, and token ranges.\r
-\r
- On June 19, 1994, SORCERER 1.00B9 was released. Gary Funck of\r
-Intrepid Technology joined the SORCERER team and provided very valu-\r
-able suggestions regarding the "transform" mode of SORCERER.\r
-\r
- On August 8, 1994, PCCTS 1.21 was released. It mainly cleaned up\r
-the C++ output and included a number of bug fixes.\r
-\r
- From the 1.21 release forward, the maintenance and support of all\r
-PCCTS tools will be primarily provided by Parr Research Corporation,\r
-Minneapolis MN---an organization founded on the principles of excel-\r
-lence in research and integrity in business; we are devoted to provid-\r
-ing really cool software tools. Please see file PCCTS.FUTURE for more\r
-information. All PCCTS tools currently in the public domain will con-\r
-tinue to be in the public domain.\r
-\r
- Looking towards the future, a graphical user-interface is in the\r
-design phase. This would allow users to view the syntax diagram\r
-representation of their grammars and would highlight nondeterministic\r
-productions. Parsing can be traced graphically as well. This system\r
-will be built using a multiplatform window library. We also antici-\r
-pate the introduction of a sophisticated error handling mechanism\r
-called "parser exception handling" in a near future release.\r
-\r
-\r
-\r
-\r
- Page 2\r
-\f\r
- PCCTS\r
-\r
-\r
- Currently, PCCTS is used at over 1000 known academic, government,\r
-and commercial sites in 37 countries. Of course, the true number of\r
-users is unknown due to the large number of ftp sites.\r
- Credits\r
-\r
-_____________________________________________________________________________\r
-_____________________________________________________________________________\r
-|ANTLR 1.00A Terence Parr Hank Dietz |\r
-|ALX Terence Parr Hank Dietz |\r
-|ANTLR 1.00B Terence Parr Hank Dietz, Will Cohen |\r
-|DLG 1.00B Will Cohen Terence Parr, Hank Dietz |\r
-|NFA Relabelling Will Cohen |\r
-|LL(k) analysis Terence Parr Hank Dietz |\r
-|ANTLR 1.00 Terence Parr Hank Dietz, Will Cohen |\r
-|DLG 1.00 Will Cohen Terence Parr, Hank Dietz |\r
-|ANTLR 1.06 Terence Parr Will Cohen, Russell Quong, Hank Dietz|\r
-|DLG 1.06 Will Cohen Terence Parr, Hank Dietz |\r
-|ANTLR 1.10 Terence Parr Will Cohen, Russell Quong |\r
-|ANTLR 1.20 Terence Parr Will Cohen, Russell Quong |\r
-|ANTLR 1.21 Terence Parr Russell Quong |\r
-|DLG 1.10 Will Cohen Terence Parr |\r
-|DLG 1.20 Will Cohen Terence Parr |\r
-|DLG 1.21 Terence Parr |\r
-|Semantic predicates Terence Parr Russell Quonq |\r
-|Syntactic predicates Terence Parr Russell Quonq |\r
-|SORCERER 1.00A Terence Parr |\r
-|SORCERER 1.00B Terence Parr Aaron Sawdey |\r
-|SORCERER 1.00B9 Terence Parr Aaron Sawdey, Gary Funck |\r
-|___________________________________________________________________________|\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
- Page 3\r
-\f\r