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
|
|||
|
|