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