category: text manipulation


Description:
These languages have very high-level features for manipulating text.


Language:
BNF (yacc)
Package:
? jaccl ?
Version:
?
Parts:
parser generator
Author:
Dave Jones <djones@megatest.uucp>
Location:
?
Description:
a LR(1) parser generator
Updated:
September 8th, 1989

Language:
BNF (yacc), Ada
Package:
aflex-ayacc
Version:
1.2a
Parts:
parser generator (Ada), scanner generator (Ada)
Author:
IRUS (Irvine Research Unit in Software)
Location:
ftp://liege.ics.uci.edu/pub/irus/aflex-ayacc_1.2a.tar.Z
Description:
Lex and Yacc equivalents that produce Ada output
Announcements:
irus-software-request@ics.uci.edu
Contact:
irus-software-request@ics.uci.edu
Updated:
January 6th, 1993

Language:
? attribute grammar ?
Package:
Alpha
Version:
pre-release
Parts:
semantic-analysis generator?, documentation(german)
Author:
Andreas Koschinsky <koschins@cs.tu-berlin.de>
Location:
from author
Description:
I have written a compiler generator. The generator is called Alpha and uses attribute grammars as specification calculus. Alpha is the result of a thesis at Technische Universitaet Berlin. I am looking for someone who would like to test and use Alpha. Alpha generates compilers from a compiler specification. This specification describes a compiler in terminology of attribute grammars. Parser and Scanner are generated by means of Bison and Flex. Alpha generates an ASE-evaluator (Jazayeri and Walter). The documentation is in german since it is a thesis at a german university.
Updated:
Febuary 16th, 1993

Language:
BNF (??)
Package:
ATS (Attribute Translation System)
Version:
?
Parts:
?
Author:
? University of Saskatchewan ?
Location:
?
Description:
generates table-driven LL(1) parsers with full insert-only error recovery. It also handles full left-attribute semantic handling, which is a dream compared to using YACC's parser actions.
Status:
?
Contact:
? (suggested: Dave Bocking <bocking@cs.usask.ca>)
Updated:
November 29th, 1988

Language:
Snobol4
Package:
beta2
Version:
0.91
Parts:
compiler(->C)
Author:
Phil Budne <phil@cs.bu.edu>
Location:
ftp://cs.arizona.edu/snobol4/budne/beta2.tar.Z
Description:
An implementation of Ralph Griswold's SNOBOL 4, a classic early language design specialized for text and string manipulation that (among other things) influenced UNIX rexexp syntax. See also Icon. This compiler is implemented as macro programs in SIL (SNOBOL Implementation Language); this is a SIL implementation plus macros with C as the target language.
Features:
  • supports loading of C library functions on BSD systems
Contact:
snobol4@arizona.edu
Ports:
various UNIX flavors, including 'generic' and 'POSIX' APIs
Updated:
June 24th, 1986

Language:
BNF (yacc)
Package:
bison
Version:
1.22
Parts:
parser generator, documentation
Author:
Robert Corbett and Richard Stallman
Location:
ftp://gatekeeper.dec.com/bison-1.16.tar.Z or any other GNU archive site
Description:
?
Bugs:
bug-gnu-utils@prep.ai.mit.edu
Restriction:
!! will apply the GNU General Public License to *your* code !!
Ports:
unix, atari, ?
Updated:
September 14th, 1993

Language:
BNF (yacc), Lex
Package:
Bison++ and Flex++
Version:
1.21-8 (bison), 2.3.8-7 (flex), 5 (flex++bison++misc)
Parts:
translator, documentation, postscript, examples, DOS binary
Author:
Alain Coetmeur <coetmeur@icdc.fr>
Location:
cse.unl.edu in ~ftp/pub/nandy/c++/tools/LATEST/*
europe:
ftp://ftp.th-darmstadt.de/pub/programming/languages/C++/tools/flex++bison++/LATEST/
Description:
A retargeting of bison-1 and flex 2.3 to C++, able to generate classes. As with Bison and Flex, these two tools are independent but designed for mutual compatibility. The version numbering has been changed for consistency with Flex and Bison, so versions of flex3.0.x and bison2.x of this package are are actually earlier versions, not later. Examples are provided to help in getting started.
Conformance:
Mostly compatible with flex2.3 and bison 1 in C, apart from the ability to generate classes.
Features:
Almost all symbol names can be redefined, parsers can be shared in C and C++ in the same headers... very extensible... flex++ support IOSTREAM and STDIO in C++.
Bugs:
Contact coetmeur@icdc.fr (current author and maintainer).
Restriction:
GNU License for bison++. Same as flex for flex++.
Ports:
SUNOS4, DOS, and same ports as Flex/Bison, Windows NT (tested)
Portability:
Larger memory model required on DOS (DOS binary supplied).
Status:
active, supported, might not support flex 2.4
Discussion:
coetmeur@icdc.fr, news: comp.compiler, or comp.lang.c++
Help:
coetmeur@icdc.fr, news: comp.compiler, or comp.lang.c++ for substantial problems.
Support:
see help, no commercial support. (volunteer ?)
Announcements:
mail list locally maintained by coetmeur@icdc.fr, news: comp.compiler comp.lang.c++
Updated:
Febuary 7th, 1994

Language:
BNF (yacc)
Package:
bison-A2.3
Version:
2.3 (corresponds to gnu bison 1.22)
Parts:
parser generator, C-parser, C++parser, documentation
Author:
Fred Hansen <wjh+@cmu.edu>
Location:
ftp://ftp.andrew.cmu.edu/pub/AUIS/bison/bison-A2.2.tar.gz also in contrib/andrew on the XV11R6 distribution in directories overhead/bison, overhead/mkparser (but not the C++ version of the parser)
Description:
This is the standard gnu bison with a number of improvments: license-free parsers for C and C++, only one external symbol for each grammar, permits multiple grammars per application, better error reports on the grammar.
Conformance:
grammars are the same as bison and yacc; but run-time errors are handled differently, so semantic rules must be changed
Features:
tokens in the grammar can be expressed as ">=" instead of GE
Bugs:
send bugs to info-andrew-bugs@andrew.cmu.edu
Restriction:
none (unless you use the native gnu-bison parser)
Ports:
has been tested on most Unix platforms
Portability:
generation of names for temp files is system dependent.
Discussion:
info-andrew@andrew.cmu.edu (mirrored to comp.soft-sys.andrew)
Support:
supported by the Andrew Consortium
Contributions:
your organization is invited to join the Andrew Consortium info-andrew-request@andrew.cmu.edu
Updated:
May 9th, 1994

Language:
BNF (yacc)
Package:
byacc (Berkeley Yacc)
Version:
1.9
Parts:
parser generator
Author:
Robert Corbett <Robert.Corbett@eng.sun.com>
Location:
ftp://vangogh.CS.Berkeley.EDU/pub/byacc.tar.1.9.Z
Description:
probably the best yacc variant around. Previously known as Zoo, and before that, as Zeus.
Updated:
Febuary 22nd, 1993

Language:
ANSI C, K&R C
Package:
CDG - C Documentation Generator
Version:
1.3
Parts:
documentation, document generator (all in one file)
Author:
Peter Knoppers <P.Knoppers@ct.tudelft.nl>
Location:
http://cardit.et.tudelft.nl/~knop/cdg13.tar.gz (Anonymous ftp not supported; use your WWW-browser and save it in a file.)
Description:
Cdg reads a set of C-source files and generates a two-column listing of those sources where all lines are numbered. After the listing part comes a three-column cross-reference table which gives for each identifier a list of line-numbers where this identifier occurs in the source listing part.

This format resembles the format that John Lions used in "Source Code and Commentary on UNIX level 6".

Conformance:
Should operate on all K&R and ANSI C programs. There are some restrictions on the placement of matching #ifdef, #else and #endif directives, or else the way an identifier is used may be incorrectly determined.
Features:
+
Non-C sources can be included in the output
-
Non-C sources will not be cross-referenced
+
Long lines are folded in the output and marked as such
+
Customizable footer for copyright or other messages
+
Cross reference list distinguishes definition versus use of an identifier
+
Possibility to exclude certain identifiers
+
Can save a list of all identifiers with linenumbers
+
Identifiers can be included or excluded from the cross- reference listing depending on their use
+
PostScript output can be generated for A4 or US Letter size paper, on the non-PostScript printers only A4 is supported.
Bugs:
None known (except the restriction mentioned under "conformance").
Restriction:
GNU conditions
Requires:
Unix, ANSI-C compiler (preferably gcc) (to build it), sort(1), PostScript printer, or HP DeskJet 500 or LaserJet printer, or GhostScript plus almost any popular printer.
Ports:
Linux
Portability:
Little experience at this time, should be quite portable.
Status:
Works fine for the author...
Discussion:
Email the author.
Help:
Email the author.
Support:
Email the author.
Announcements:
http://cardit.et.tudelft.nl/~knop/index.html#cdg
Updated:
May 4 1999

Language:
COCOL (EBNF variant)
Package:
COCO/R
Version:
1.39 (Modula, Pascal, Oberon)
Parts:
parser generator(LL(1))
Author:
Hanspeter Moessenboeck <moessenboeck@ssw.uni-linz.ac.at> Port to Modula-2 done by Marc Brandis, Christof Brass and Pat Terry <cspt@cs.ru.ac.za> Port to Turbo Pascal done by Pat Terry and Volker Pohlers <pohlers@escher.hrz.fh-stralsund.de>
Location:
ftp://ftp.inf.ethz.ch:/pub/software/Coco ftp://ftp.psg.com:/pub/modula-2/coco ftp://cs.ru.ac.za:/pub/coco ftp://ftp.fit.qut.edu.au:/pub/coco
Description:
Coco/R generates recursive descent parsers and their associated scanners from attributed grammars. Coco/R can bootstrap itself to generate its own driver, parser, scanner, and semantic evaluator from the attributed grammar CR.ATG. This grammar thus serves as an an example of how to write compiler descriptions for Coco. There are also other simpler examples showing its use.
Reference:
_A compiler generator for microcomputers_, by Rechenberg and Moessenboeck (Prentice Hall, 1989, 0-13-155136-1)
Bugs:
MS-DOS related versions: Pat Terry <cspt@cs.ru.ac.za> Other: Hanspeter Moessenboeck <moessenboeck@ssw.uni-linz.ac.at>
Requires:
Oberon, Modula-2, or Turbo Pascal
Ports:
MS-DOS: TopSpeed Modula-2; FST 2.0; FST 3.1 - 3.5; StonyBrook QuickMod 2.2; Logitech 3.03; Turbo Pascal. Macintosh: Apple MacMeth. Unix/Linux/FreeBSD: Mocka, Gardens Point.
Status:
Oberon version is freely available. Modula-2 version is free to academic sites; commercial use requires a license
Updated:
November 1st, 1995

Language:
COCOL (EBNF variant)
Package:
Coco/R for C
Version:
1.05
Author:
Francisco Arzu <farzu@uvg.edu.gt>
Location:
ftp://cs.ru.ac.za:/pub/coco/cocorc05.zip
Description:
This is a C version of Professor Moessenboeck's Coco/R. Coco/R generates recursive descent parsers and their associated scanners from attributed grammars. Semantic attributes and semantic actions are a dream compared to YACC's and Lex's ones. There are many examples showing its use, including itself (it can bootstrap itself to generate its own driver, parser, scanner, and semantic evaluator from the attributed grammar CR.ATG) and a simple C like language which uses Iburg to generate intel 80x86 assemble language.
Parts:
parser generator(LL(1)), scanner generator, documentation,
Examples
Bugs:
Francisco Arzu <farzu@uvg.edu.gt>
Requires:
Standard C compiler
Ports:
Many UNIX systems(Linux, UnixWare, SunOS, IBM AIX, HP-UX, etc) MS-DOS and OS/2
Restrictions:
Next release will be under the GNU General Public License
Updated:
November 1st, 1995

Language:
BNF (Yacc like description languages)
Package:
Compiler Construction Tool Set (aka COCOM or Russian Armoury)
Version:
0.9
Parts:
  • Ammunition: reusable packages
  • Sprut : internal representation description translator (C, C++)
  • Nona : code selector description translator (C, C++)
  • Oka : pipeline hazards description translator (C,C++) and basic block scheduler (C, C++)
  • Shilka : keywords description translator (C, C++) for for fast recognizing keywords
  • Msta : syntax description translator (now only C) for description of parsers and scanners (LR(k), LALR(k)). documentation, examples
Author:
Vladimir N. Makarov <vmakarov@usa.net>
Location:
http://www.geocities.com/SiliconValley/Lab/4557
Description:
A set of compiler building tools.
Ports:
Unix, Linux
Portability:
very high (GNU configure)
Status:
COCOM is actively developed
Support:
Vladimir N. Makarov <vmakarov@usa.net>
Contact:
Vladimir N. Makarov <vmakarov@usa.net>
Updated:
January 5th, 1998

Language:
Ml4 (extended EBNF)
Package:
Depot4
Version:
1.6
Parts:
translator generator (->Java), documentation, examples
Author:
Juergen Lampe <lampe@math.tu-dresden.de>
Location:
ftp ftp.math.tu-dresden.de/Depot4/
Description:
Depot4 generates recursive descent parsers and translators.

Ml4 is a true extension of N.Wirth's EBNF. It features a unique translation=20 centred description, which makes it especially useful for people not educated in compiler construction.

The Ml4 translator can bootstrap itself, thus serving as an example.

Although translators are generated in a certain host language, their description is totally independent from this. Depot4 is intended for domain specific language implementation.

Reference:
"An Extensible Translator-Generator for Use in Branch

Software Construction", J. Comp. and Inform. 2, 1 (1996), pp. 1057-1067 "A Generator for Dynamically Extensible Translators" in

Proc. of JMLC'97 Joint Modular Languages Conference (Linz, 1997), pp. 75-87. "A tool for syntax directed software design" J. of Systems

Architecture 43 (1997), pp. 199-202.

Features:
  • easy to capture recursive translator description
  • rule based modularization (simplifies test)
  • monitor/trace tools
  • unbounded lookahead possible
  • interface to other software
  • extensible
  • convenient standard user interface
Bugs:
lampe@math.tu-dresden.de
Requires:
Java Virtual Machine supporting JDK 1.0.2
Portability:
no futher restrictions
Status:
active
Help:
online manual at http://www.math.tu-dresden.de/wir/staff/lampe/Dp4Doc/UM.html
Support:
lampe@math.tu-dresden.de
Updated:
1997/06

Language:
Ml4 (extended EBNF)
Package:
Depot4/Oberon
Version:
1.6
Parts:
translator generator (->Oberon), documentation, examples
Author:
Juergen Lampe <lampe@math.tu-dresden.de>
Location:
ftp ftp.math.tu-dresden.de/Depot4/
Description:
A Oberon version of Depot4 Accepts exactly the same language as Depot4/Java, cross translation, i.e. generation of translators in Java (and vice versa) possible
Reference:
"An Oberon-Based Implementation Tool" in "Advances in Modular Languages" P. Schulthess (ed), Universit=8Atsverl., Ulm, 1994, ISBN 3-89559-220-X, pp. 303-312.
Requires:
ETHZ Oberon V4
Ports:
Oberon/F resp. Component Pascal ETHZ Oberon System3 possible
Help:
online manual at http://www.math.tu-dresden.de/wir/staff/lampe/Dp4Doc/UM.html
Support:
lampe@math.tu-dresden.de
Updated:
1997/06

Language:
EAG (Extended Affix Grammar)
Package:
EAG
Version:
first public release
Parts:
recognizer generator, transduccer generator, translator generator, editor generator, documentation
Author:
Marc Seutter <marcs@cs.kun.nl>
Location:
ftp://hades.cs.kun.nl/pub/eag/*
Description:
The Extended Affix Grammar formalism, or EAG for short, is a formalism for describing both the context free and the context sensitive syntax of languages. EAG is a member of the family of two-level grammars. They are very closely related to two-level van Wijngaarden grammars. The EAG compiler will generate either a recognizer or a transducer or a translator or a syntax directed editor for a language described in the EAG formalism.
Updated:
September 14th, 1993

Language:
BNF
Package:
Eli
Version:
4.1.0
Parts:
scanner generator (regular expressions->C, C++), parser generator (LALR->C, C++), attribute evaluator generator (LIDO->C, C++), definition table generator (PDL->C, C++), tree pattern-matcher generator (OIL->C, C++), pattern-based text generator (PTG->C, C++), unparser generator (Idem), command-line processing generator (CLP->C, C++), literate programming (FunnelWeb), integrated high-level debugger (Noosa), library with solutions for common tasks (ModLib), online and printable documentation
Author:
William Waite <waite@cs.colorado.edu>
Basim Kadhim <kadhim@cs.colorado.edu>
Uwe Kastens <uwe@uni-paderborn.de>
Matthias Jung <mjung@uni-paderborn.de>
Peter Pfahler <peter@uni-paderborn.de>
Anthony Sloane <tony@cs.jcu.edu.au>
Location:
http://www.cs.colorado.edu/~eliuser http://www.uni-paderborn.de/project-hp/eli.html http://www.cs.jcu.edu.au/~tony/eli.html
Description:
Eli is a fully integrated environment for the automatic generation of processors of structured text. It transparently utilises off-the-shelf tools and libraries with specialized language processors to generate complete processors quickly and reliably.

It simplifies the development of new special-purpose languages, implementation of existing languages on new hardware and extension of the constructs and features of existing languages.

Bugs:
<elibugs@cs.colorado.edu>
Restriction:
Eli is under the Free Software Foundation's General Public License. Code generated by Eli has no restrictions except that the dynamic memory allocation module (obstack) is covered by FSF's Library General Public License.
Requires:
High-level debugging requires Tcl/Tk (at least versions 7.6/4.2).
Ports:
SunOS (4.1.2, 5.4, 5.5), OSF1 (V3.0, V4.0), Linux (2.0.30 ELF), IRIX (5.3, 6.3), HP-UX (A.09.05)
Portability:
Portable to most Unix systems using FSF's autoconf support.
Status:
active, supported
Discussion:
<eli@cs.colorado.edu> (join at <eli-request@cs.colorado.edu>)
Help:
<elibugs@cs.colorado.edu>
Announcements:
comp.compilers, <eli@cs.colorado.edu>
Contact:
<compiler@cs.colorado.edu> <compiler@uni-paderborn.de> <tony@cs.jcu.edu.au>
Updated:
October 6th, 1997

Language:
EBNF
Package:
ETO
Version:
test version
Parts:
parser, postscript document, examples
Author:
Lin Li <china@bernina.ethz.ch>
Location:
FTP://fi.ethz.ch/pub/ETO/eto-09.*
Description:
ETO is an object oriented universal syntax checker. It takes an EBNF specification for a language and then uses it on an input file to check its syntax.
Updated:
June 3rd, 1994

Language:
lex
Package:
flex
Version:
2.5.2
Parts:
scanner generator
Author:
Vern Paxson <vern@ee.lbl.gov>
Location:
ftp://ftp.ee.lbl.gov/flex-2.5.2.tar.Z or from a GNU archive site
Description:
A POSIX-compliant "lex" scanner generator.
Bugs:
vern@ee.lbl.gov or bug-gnu-utils@prep.ai.mit.edu
Updated:
April 28th, 1995

Language:
BNF (??)
Package:
FMQ
Version:
?
Parts:
paser generator w/error corrector generator
Author:
Jon Mauney
Location:
ftp://csczar.ncsu.edu
Description:
?
Status:
?
Contact:
?
Updated:
March 31st, 1990

Language:
BNF (Extended), BNF (yacc)
Package:
GMD Toolbox for Compiler Construction (aka Cocktail)
Version:
9209
Parts:
lalr: parser generator (LALR(1) -> C, Modula-2), ell : parser generator (LL(1) -> C, Modula-2), rex : scanner generator (-> C, Modula-2), bnf : translator (Extended BNF -> BNF), y2l : translator (BNF (yacc) -> Extended BNF), ast : abstract syntax tree generator, ag : attribute-evaluator generator, puma: transformation of abstract syntax tree using pattern-matching

documentation, examples

Author:
Josef Grosch <grosch@cocolab.sub.com> and others
Location:
ftp://ftp.gmd.de/gmd/cocktail ftp://ftp.rus.uni-stuttgart.de/pub/unix/programming/compilerbau ftp://ftp.th-darmstadt.de/pub/programming/languages/compiler-compiler/cocktail ftp://src.doc.ic.ac.uk/languages/tools/gmd ftp://gatekeeper.dec.com/.3/plan/gmd
os/2:
ftp.eb.ele.tue.nl/pub/src/cocktail/dos-os2.zoo
Description:
A huge set of compiler building tools.
Requires:
(MS-DOS and MS-Windows only) DJ Delorie's DOS extender (go32) (OS/2 only) emx programming environment for OS/2
Ports:
Unix, Linux, MS-DOS, MS-Windows, OS/2
Portability:
very high
Status:
version 9209 is unsupported, Cocktail is actively developed, versions 9401 and higher are commercial
Discussion:
subscribe to Cocktail using listserv@eb.ele.tue.nl
Support:
Josef Grosch <grosch@cocolab.sub.com>
Contact:
Josef Grosch <grosch@cocolab.sub.com>
os/2:
Willem Jan Withagen <wjw@eb.ele.tue.nl>
Updated:
October 1st, 1992

Language:
ABC
Package:
Grammar analysis tools
Version:
1
Parts:
analysis tools, samples, documentation
Author:
Steven Pemberton <Steven.Pemberton@cwi.nl>
Location:
ftp://ftp.cwi.nl/pub/abc/examples/grammar/* or http://www.cwi.nl/~steven/abc/examples/grammar
Description:
Grammar analysis program written in ABC (q.v.) for answering such questions as "what are the start symbols of all rules", "what symbols can follow this symbol", "which rules are left recursive", and so on. Includes a grammar of ISO Pascal.
Reference:
Ftp://archive includes an article explaining the package.
Ports:
unix, MSDOS, atari, mac
Contact:
Steven.Pemberton@cwi.nl
Updated:
July 5th, 1993

Language:
BNF (Extended, actually a regular right part grammar)
Package:
Gray
Version:
4
Parts:
parser generator, documentation, examples
Author:
Martin Anton Ertl <anton@mips.complang.tuwien.ac.at>
How to get:
ftp://server.complang.tuwien.ac.at/pub/forth/gray4.tar.gz ftp://server.complang.tuwien.ac.at/pub/forth/gray4.zip
Description:
Gray is a parser generator written in Forth. It takes grammars in an extended BNF and produces executable Forth code for recursive descent parsers.
Restrictions:
Copyleft
Requires:
ANS Forth
Conformance:
ANS Forth with some environmental dependences (see README)
Status:
supported
Ports:
Several ANS Forth Systems; mail author for old versions running on Tile.
Updated:
August 8th, 1994

Language:
BNF (variant), Icon
Package:
Ibpag2 (Icon-Based Parser Generation System 2)
Version:
1.2
Parts:
parser generator (Icon, SLR(1))
Author:
Richard L. Goerwitz <goer@midway.uchicago.edu>
Location:
comp.sources.misc volume 44
Description:
Ibpag2 is a parser generator for Icon. It does most of what you would expect. Latest version can handle both SLR(1) and even GLR (Tomita) grammars.
Ports:
unix
Portability:
? (Unix dependencies?)
Updated:
September 25th, 1994

Language:
BURS ?
Package:
Iburg
Version:
?
Parts:
parser generator?
Author:
Christopher W. Fraser <cwf@research.att.com>, David R. Hanson <drh@princeton.edu>, Todd A. Proebsting <todd@cs.arizona.edu>
Location:
ftp://ftp.cs.princeton.edu/pub/iburg.tar.Z
Description:
Iburg is a program that generates a fast tree parser. It is compatible with Burg. Both programs accept a cost-augmented tree grammar and emit a C program that discovers an optimal parse of trees in the language described by the grammar. They have been used to construct fast optimal instruction selectors for use in code generation. Burg uses BURS; Iburg's matchers do dynamic programming at compile time.
Updated:
Febuary 10th, 1993

Language:
Icon
Package:
icon
Version:
8.8 (8.7, 8.5, 8.0 depending on platform)
Parts:
interpreter, compiler (some platforms), library (v8.8)
Author:
Ralph Griswold <ralph@CS.ARIZONA.EDU>
Location:
ftp://cs.arizona.edu/icon/* MS-DOS version: ftp://bellcore.com/norman/iconexe.zip
Description:
Icon is a high-level, general purpose programming language that contains many features for processing nonnumeric data, particularly for textual material consisting of string of characters. Some features are reminiscent of SNOBOL, which Griswold had previously designed.
-
no packages, one name-space
-
no exceptions
+
object oriented features
+
records, sets, lists, strings, tables
+
unlimited line length
-
unix interface is primitive
+
co-expressions
Reference:
"The Icon Programming Language", Ralph E. Griswold and Madge T. Griswold, Prentice Hall, seond edition, 1990.

"The Implementation of the Icon Programming Language", Ralph E. Griswold and Madge T. Griswold, Princeton University Press 1986

Ports:
Amiga, Atari, CMS, Macintosh, Macintosh/MPW, MSDOS, MVS, OS/2, Unix (most variants), VMS, Acorn
Discussion:
comp.lang.icon
Contact:
icon-project@cs.arizona.edu mengarini@delphi.com for MS-DOS version
Updated:
August 21st, 1992

Language:
BNF variant, Python
Package:
kwParsing ?
Version:
?
Parts:
parser generator
Author:
Aaron Watters <aaron@vienna.njit.edu>
Location:
ftp://ftp.markv.com/pub/python/kwParsing.*
Description:
A parser generator written in Python for Python. This package may be appropriate for experimental translators, code generators, interpreters, or compilers; for instructinal purposes; among other possibility. The documentation gives a brief introduction to the conventions and basic ideas of parsing.
Updated:
September 24th, 1994

Language:
BNF
Package:
lalr.ss - An LALR(1) parser generator
Version:
0.9
Parts:
parser generator (->Scheme)
Author:
Mark Johnson <mj@cs.brown.edu>
Location:
ftp://the/new/lalr.shar Scheme Repository
Description:
A LALR(1) parser generator in and for Scheme.
Requires:
Scheme
Updated:
May 24th, 1993

Language:
BNF (yacc), Lex
Package:
Lex/Yacc for Turbo Pascal uploaded
Version:
?
Parts:
parser generator, scanner generator, documentation?
Author:
?
Location:
ftp://iecc.com/pub/file/lyprg.zip.
Description:
Lex and Yacc retargeted to Pascal.
Contact:
? dpoole@hydrogen.oscs.montana.edu (David Poole)
Updated:
July 2nd, 1993

Language:
BNF (??)
Package:
LLGen
Version:
?
Parts:
parser generator
Author:
? Fischer and LeBlanc ?
Location:
? ftp://csczar.ncsu.edu ?
Description:
LL(1) parser generator
Conformance:
subset of FMQ
Reference:
"Crafting A Compiler", by Fischer and LeBlanc
Status:
?
Contact:
?
Updated:
March 31st, 1990

Language:
Perl (Practical Extraction and Report Language)
Package:
MacPerl
Version:
5.2.0r4
Author:
Matthias Neeracher <neeri@iis.ee.ethz.ch>
Location:
http://www.ptf.com/macperl
Description:
MacPerl offers (nearly) all the features of Perl plus oodles of Macintosh-specific functionality!
Ports:
Macintosh
Status:
actively developed
Discussion:
mac-perl-request@iis.ee.ethz.ch (majordomo list)
Updated:
20 April 1998

Language:
BNF (yacc), Standard ML
Package:
New SML-Yacc and SML-Lex
Version:
??
Parts:
??
Author:
Andrew Appel <appel@tyrolia.princeton.edu>
Location:
princeton.edu/pub/ml, files mlyacc94.tar.Z, lexgen94.tar.Z.
Description:
??
Updated:
May 23rd, 1994

Language:
BNF (yacc)
Package:
NewYacc
Version:
1.0
Parts:
parser generator, documenation
Author:
Jack Callahan <callahan@mimsy.cs.umd.edu>
Location:
ftp://flubber.cs.umd.edu/src/newyacc.1.0.*.Z
Description:
[someone want to fill it in? --ed]
Reference:
see Dec 89 CACM for a brief overview of NewYacc.
Updated:
Febuary 10th, 1992

Language:
attribute-grammar extension of Yacc and Lex
Package:
Ox
Version:
G1.01
Parts:
Yacc/Lex/C preprocessor, tutorial, reference manual, man page, examples, Ox-ready parsers (C, C++, Pascal, Ada, Fortran)
Author:
Kurt Bischoff <bischoff@cs.iastate.edu>
Location:
ftp://ftp.cs.iastate.edu/pub/ox/*
Description:
Ox generalizes the function of Yacc in the way that attribute grammars generalize context-free grammars. Ordinary Yacc and Lex specifications may be augmented with definitions of synthesized and inherited attributes written in C syntax. Ox checks these specifications for consistency and completeness, and generates from them a program that builds and decorates attributed parse trees. Ox accepts a most general class of attribute grammars. The user may specify postdecoration traversals for easy ordering of side effects such as code generation. Ox handles the tedious and error-prone details of writing code for parse-tree management, so its use eases problems of security and maintainability associated with that aspect of translator development. Ox is a preprocessor, and extends the syntax and semantics of Yacc, Lex, and C.
Reference:
Most compiler textbooks have descriptions of attribute grammars.
Features:
LALR(1), semantic-analyzer generation.
Bugs:
none known. Report bugs to ox-project@cs.iastate.edu.
Restriction:
Use of Ox is free. Ox-generated code is the property of the Ox user.
Ports:
Unix
Contact:
ox-request@cs.iastate.edu
Updated:
November 14th, 1993

Language:
BNF (Extended)
Package:
PCCTS (Purdue Compiler-Construction Tool Set)
Version:
1.33
Parts:
scanner generator, parser generator (pred-LL(k)), documentation, tutorial
Author:
Terence J. Parr <parrt@parr-research.com>, Will E. Cohen <cohenw@ecn.purdue.edu>, Henry G. Dietz <hankd@ecn.purdue.edu>, Russell W. Quong <quong@ecn.purdue.edu>
Location:
ftp://ftp.parr-research.com/pub/pccts/
uk:
ftp://src.doc.ic.ac.uk/computing/programming/languages/tools/pccts/
Description:
PCCTS is similar to a highly integrated version of YACC and LEX; where ANTLR (ANother Tool for Language Recognition) corresponds to YACC and DLG (DFA-based Lexical analyzer Generator) functions like LEX.

PCCTS grammars contain specifications for lexical and syntactic analysis with selective backtracking ("infinite lookahead"), semantic predicates, intermediate-form construction and sophisticated parser exception handling. Rules may employ Extended BNF (EBNF) grammar constructs and may define parameters, return values and local variables. Languages described in PCCTS are recognized via predicated-LL(k) parsers constructed in pure, human-readable, C/C++ code; the C++ programming interface is very good. The documentation is complete, but distributed over an original manual plus multiple release notes. A book is in the works and should be available 1Q 1996.

A recently-developed PCCTS-based C++ parser is available at the ftp://site; it is an *initial* release and was derived from the grammar built by NeXT, Inc..

Restriction:
The tool is totally public domain--it has no legal restrictions on its use or incorporation into commercial applications.
Ports:
Unix, DOS, Windows, OS/2, Macintosh, NeXT
Portability:
very high
Discussion:
comp.compilers.tools.pccts
Contact:
Terence J. Parr <parrt@acm.org>
Updated:
October 5th, 1995

Language:
Perl (Practical Extraction and Report Language)
Package:
perl
Version:
4.0 patchlevel 36
Parts:
interpreter, debugger, libraries, tests, documentation
Author:
Larry Wall <lwall@netlabs.com>
Location:
ftp://jpl-devvax.jpl.nasa.gov/pub/perl.4.0/*
os/2:
ftp://hobbes.nmsu.edu/pub/os2/all/unix/prog*/perl4019.zip
macintosh:
ftp://nic.switch.ch/software/mac/src/mpw_c/Mac_Perl_405_*
amiga:
ftp://wuarchive.wustl.edu/perl4.035.V010.*
vms:
ftp://ftp.pitt.edu/software/vms/perl/*
atari:
ftp://atari.archive.umich.edu/amiga/Languages/perl*
msdos:
ftp://ftp.ee.umanitoba.ca/pub/msdos/perl/* ftp://oak.oakland.edu/pub/msdos/perl/bperl*
windows nt:
ftp://ntperl.hip.com/ntperl/ntperl5.001.src.zip ftp://ntperl.hip.com/ntperl/ntperl5.001.i86.zip
mvs:
ftp://oozelum.csi.cam.ac.uk/dist/perl-4036.tar.Z
netware:
contact Jack Thomasson <Jack_Thomasson@Novell.COM>
Description:
perl is an interpreted language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good language for many system management tasks.
Reference:
"Programming Perl" by Larry Wall and Randal L. Schwartz, O'Reilly & Associates, Inc. Sebastopol, CA. ISBN 0-93715-64-1

"Learning Perl" by Randal L. Schwartz, O'Reilly & Associates, Inc. Sebastopol, CA. ISBN 1-56592-042-2

The perl FAQ, ftp from rtfm.mit.edu

Features:
+
very-high semantic density becuase of powerful operators like regular expression substitution
+
exceptions, provide/require
+
associative array can be bound to dbm files
+
no arbitrary limits
+
direct access to almost all system calls
+
can access binary data
+
many powerful idioms for common tasks
+
8-bit clean, including nulls
-
three variable types: scalar, array, and hash table
-
syntax requires variable and function prefix characters
Bugs:
comp.lang.perl; Larry Wall <lwall@netlabs.com>
Ports:
almost all unix, MSDOS, Mac, Amiga, Atari, OS/2, VMS, NT, MVS
Portability:
very high for unix, not so high for others
Discussion:
comp.lang.perl
macintosh:
mpw-perl-request@iis.ee.ethz.ch
Updated:
Febuary 7th, 1993

Language:
Perl
Package:
perl profiler.
Version:
? 1
Parts:
profiler
Author:
Anthony Iano-Fletcher <arf@maths.nott.ac.uk>
Location:
Source posted on comp.lang.perl in mid-June 1993
Description:
Profiles Perl scripts (mkpprof).

Collates data from Perl scripts (pprof)

Updated:
June 17th, 1993

Language:
BNF (yacc), Perl
Package:
perl-byacc
Version:
1.8.2
Parts:
parser-generator(perl)
Author:
Rick Ohnemus <Rick_Ohnemus@Sterling.COM>
Location:
ftp://ftp.sterling.com/local/perl-byacc.tar.Z
Description:
A modified version of byacc that generates perl code. Has '-p' switch so multiple parsers can be used in one program (C or perl).
Portability:
Should work on most (?) Unix systems. Also works with SAS/C 6.x on AMIGAs.
Updated:
January 24th, 1993

Language:
Perl (Practical Extraction and Report Language)
Package:
perl5
Version:
5.005
Parts:
interpreter, debugger, libraries, tests, documentation
Author:
Larry Wall <lwall@netlabs.com>
Location:
many!
africa:
ftp://ftp.is.co.za:/programming/perl/CPAN/
australia:
ftp://coombs.anu.edu.au:/pub/perl/CPAN/ ftp://ftp.mame.mu.oz.au:/pub/perl/CPAN/ ftp://ftp.tekotago.ac.nz:/pub/perl/CPAN/
austria:
ftp://ftp.tuwien.ac.at:/pub/languages/perl/CPAN/
canada:
ftp://mango.pinc.com:/pub/mirrors/CPAN/
czech rep.:
ftp://sunsite.mff.cuni.cz:/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
denmark:
ftp://sunsite.auc.dk:/pub/languages/perl/CPAN/
finland:
ftp://ftp.funet.fi:/pub/languages/perl/CPAN/
france:
ftp://ftp.ibp.fr:/pub/perl/CPAN/ ftp://ftp.pasteur.fr:/pub/computing/unix/perl/CPAN/
germany:
ftp://ftp.leo.org:/pub/comp/programming/languages/perl/CPAN/ ftp://ftp.rz.ruhr-uni-bochum.de:/pub/CPAN/
greece:
ftp://ftp.ntua.gr:/pub/lang/perl/
hungary:
ftp://ftp.kfki.hu:/pub/packages/perl/
japan:
ftp://ftp.lab.kdd.co.jp:/lang/perl/CPAN/
netherlands:
ftp://http://www.cs.ruu.nl/pub/PERL/CPAN/
new zealand:
ftp://ftp.tekotago.ac.nz:/pub/perl/CPAN/
poland:
ftp://ftp.pk.edu.pl:/pub/lang/perl/CPAN/
portugal:
ftp://ftp.ci.uminho.pt:/pub/lang/perl/
slovenia:
ftp://ftp.arnes.si:/software/perl/CPAN/
spain:
ftp://ftp.rediris.es:/mirror/CPAN/
sweden:
ftp://ftp.sunet.se:/pub/lang/perl/CPAN/
switzerland:
ftp://ftp.switch.ch:/mirror/CPAN/
taiwan:
ftp://dongpo.math.ncu.edu.tw:/perl/CPAN/
uk:
ftp://ftp.demon.co.uk:/pub/mirrors/perl/CPAN/ ftp://unix.hensa.ac.uk:/mirrors/perl-CPAN/
usa:
ftp://ftp.cdrom.com:/pub/perl/CPAN/ ftp://ftp.cis.ufl.edu:/pub/perl/CPAN/ ftp://uiarchive.cso.uiuc.edu:/pub/lang/perl/CPAN/ ftp://ftp.delphi.com:/pub/mirrors/packages/perl/CPAN/ ftp://ftp.uoknor.edu:/mirrors/CPAN/ ftp://ftp.sedl.org:/pub/mirrors/CPAN/ ftp://ftp.metronet.com:/pub/perl/ ftp://ftp.sterling.com:/CPAN/
Description:
Perl5 is a major rewrite and enhancement to perl4. It adds real data structures (by way of "references"), un-adorned subroutine calls, and method inheritance. It is repackaged with many extensions that can be dynamically loaded in the interpreter at runtime.
Features:
  • very-high semantic density becuase of powerful operators like regular expression substitution
  • no arbitrary limits
  • exceptions
  • variables can be tied to arbitrary code (like dbm)
  • direct access to almost all system calls
  • can access binary data
  • many powerful idioms for common tasks
  • 8-bit clean, including nulls
  • dynamic loading of extensions
  • constructors, destructors, multiple inheritence, and operator overloading
  • support for writing secure systems
  • many useful libraries and extensions
References:
http://language.perl.com/ http://www.perl.com/pace/pub "Programming Perl" by Larry Wall and Randal L. Schwartz, O'Reilly & Associates, Inc. Sebastopol, CA. ISBN 0-93715-64-1

"Learning Perl" by Randal L. Schwartz, O'Reilly & Associates, Inc. Sebastopol, CA. ISBN 1-56592-042-2

Extensions:
  • Tk - easy to use X11 interface
  • tcl - dynamically load Tcl into perl
  • Curses - sreen-based
  • CGI - easy web programming
  • perlmenu - http://www.cc.iastate.edu/perlmenu/
  • DBI - interfaces to many relational databases
  • Safe - secure execution of untrusted code
  • Penguin - distributed secure execution of untrusted code
Bugs:
Send bugs to <perl-bugs@perl.com>
Ports:
Almost all unix systems, Amiga, Atari, LynxOS, Macintosh, MPE, MS-DOS, MVS, Netware, OS/2, QNX, VMS, Windows 3.x, Windows NT (http://info.hip.com/ntperl/PerlFaq.htm)
Portability:
Extreamly high.
Updated:
July 8th, 1999

Language:
BNF (very extended), yacc
Package:
PRE-CC Xtended
Version:
2.30
Parts:
library, parser generator (LL(oo)), translator(yacc->)
Author:
Peter Breuer
Location:
ftp://ftp.comlab.ox.ac.uk/pub/Programs/preccx.tar.Z (Unix) ftp://ftp.comlab.ox.ac.uk/pub/Programs/preccx.msdos (MS-DOS) ftp://ftp.comlab.ox.ac.uk/pub/Documents/techpapers/Jonathan.Bowen/preccx-uug.ps.Z (more recent versions available by subscription) URL: http://www.comlab.ox.ac.uk/archive/redo/precc.html
Description:
PRECCX is an infinite-lookahead compiler compiler for context dependent grammars. The generated code is ANSI C.

Specification scripts are in very EBNF with inherited and synthetic attributes allowed. Scripts can be compiled in separate modules, and linked together later. Meta-production rules allowed. The technology is essentially LL(oo) with optimizations. A converter for yacc scripts is available.

Reference:
"The PRECC Compiler-Compiler" by P.T. Breuer and J.P. Bowen. In E. Davies and A. Findlay (eds.), Proc. UKUUG/SUKUG Joint New Year 1993 Conference, St. Cross Centre, Oxford, UK, 6-8 January 1993, ISBN 1 873611 06 4 (UKUUG), 0 9520700 0 6 (SUKUG) UKUUG/SUKUG Secretariat, Owles Hall, Buntingford, Herts SG9 9PL, UK, pp 167-182, 1993.

"A PREttier Compiler-Compiler: Generating Higher Order Parsers in C" P.T. Breuer and J.P. Bowen. Oxford University Computing Laboratory Technical Report PRG-TR-20-92, 25pp, November 1992. Accepted by Software - Practice and Experience, 1994. ftp://ftp.comlab.ox.ac.uk/pub/Documents/techreports/TR-20-92.ps.Z

Ports:
unix, MS-DOS
Contact:
Peter Breuer <ptb@comlab.ox.ac.uk>, Jonathan Bowen <bowen@comlab.ox.ac.uk>
Updated:
June 2nd, 1994

Language:
BNF ?, Gofer
Package:
Ratatosk (?)
Version:
?
Parts:
parser generatr (Gofer)
Author:
Torben AEgidius Mogensen <torbenm@diku.dk>
Location:
ftp://ftp.diku.dk/pub/diku/dists/Ratatosk.tar.Z
Description:
Ratatosk is a SLR parser generator in Gofer (a Haskell variant) that generates purely functional parsers (also in Gofer). Even though the sematic value of a production is a function of the attributes of its right-hand side (and thus apparently purely synthesized), inherited attributes are easily simulated by using higher order functions.
Ports:
?
Updated:
?

Language:
Regular Expressions
Package:
re2c
Version:
alpha
Parts:
translator (re->c)
Author:
?? peter@csg.uwaterloo.ca
Location:
ftp://csg.uwaterloo.ca/pub/peter/re2c.0.5.tar.gz
Description:
A regular expression to C converter.
Updated:
?? April 29th, 1994

Language:
attribute grammar
Package:
Rie
Version:
1.0.6
Parts:
compiler generator, attribute evaluator generator
Author:
Masataka Sassa, Kazuhiro Kuroishi, Teruhisa Hirai and Yoshiki Ohshima
Location:
ftp://ftp.is.titech.ac.jp/pub/Rie/*
Description:
Rie is a yet another compiler generator which is based on a one-pass attribute grammar called ECLR-attributed grammar. ECLR-attributed grammar is a superset of LR-attributed grammar, and the generated compiler can evaluate both inherited and synthesized attributes in parallel with LR parsing without creating a parse tree. The style of the Rie description is derived from Yacc, but the semantic section of a production may contain attribution rules. Because the specification is based on attribute grammar, user can integrate syntax and semantics in one description. Rie also accepts shorthand notations, context conditions and `local' attributes, which are useful to write actual compilers.

The generated compiler is only 1.8 times slower than a handwritten compiler. Rie generates an attribute evaluator in C source.

The package includes sample descriptions of PL/0 compiler and of a sample of simple semantic analyzer, and documentation.

Reference:
Sassa, M., Ishizuka, H., and Nakata, I.: Rie, a Compiler Generator Based on a One-Pass Attribute Grammar, Res. Rep. C-107, Dept. of Inf.

Sci., Tokyo Institute of Technology (Now, only a printed version is available. Contact rie-info@is.titech.ac.jp. Electric version will be available from ftp://ftp.is.titech.ac.jp/pub/Rie/Papers/* .)

Bugs:
Bug reports are welcome to rie-comments@is.titech.ac.jp.
Restriction:
Rie is implemented by modifying Bison, so Rie must be also covered by GNU General Public License version 2 and Bison's restriction.
Requires:
C compiler
Ports:
UNIX, DOS, etc. (same as bison) and Sharp X68000
Status:
We hope that it is stable
Contact:
rie-info@is.titech.ac.jp>
Updated:
September 20th, 1995

Language:
Relation Grammar
Package:
rl
Version:
?
Parts:
?
Author:
Kent Wittenburg <kentw@bellcore.com>
Location:
flash.bellcore.com/rl/*
Description:
The RL files contain code for defining Relational Grammars and using them in a bottom-up parser to recognize and/or parse expressions in Relational Languages. The approach is a simplification of that described in Wittenburg, Weitzman, and Talley (1991), Unification-Based Grammars and Tabular Parsing for Graphical Languages, Journal of Visual Languages and Computing 2:347-370.

This code is designed to support the definition and parsing of Relational Languages, which are characterized as sets of objects standing in user-defined relations. Correctness and completeness is independent of the order in which the input is given to the parser. Data to be parsed can be in many forms as long as an interface is supported for queries and predicates for the relations used in grammar productions. To date, this software has been used to parse recursive pen-based input such as math expressions and flowcharts; to check for data integrity and design conformance in databases; to automatically generate constraints in drag-and-drop style graphical interfaces; and to generate graphical displays by parsing relational data and generating output code.

Requires:
Common Lisp
Ports:
Allegro Common Lisp 4.1, Macintosh Common Lisp 2.0
Updated:
October 31st, 1992

Language:
Candle, IDL (Interface Description Language)
Package:
Scorpion System
Version:
6.0
Parts:
software development environment for developing software development environments, documentation
Author:
University of Arizona
Location:
ftp://cs.arizona.edu/scorpion/*
Description:
20 tools that can be used to construct specialized programming environments.

The Scorpion Project was started by Prof. Richard Snodgrass as an outgrowth of the SoftLab Project (which pro- duced the IDL Toolkit) that he started when he was at the University of North Carolina. The Scorpion Project is directed by him at the University of Arizona and by Karen Shannon at the University of North Carolina at Chapel Hill.

Reference:
"The Interface Description Language: Definition and Use," by Richard Snodgrass, Computer Science Press, 1989, ISBN 0-7167-8198-0
Ports:
Sun-3, Sun-4, Vax, Decstation, Iris, Sequent, HP9000
Discussion:
info-scorpion-request@cs.arizona.edu
Contact:
scorpion-project@cs.arizona.edu
Updated:
November 4 1993

Language:
BNF (extended)
Package:
SORCERER: A Simple Tree Parser and Rewrite Generator
Version:
1.00B15
Parts:
translator, documentation, tutorial, examples
Author:
Terence Parr <parrt@parr-research.com>, Aaron Sawdey <sawdey@lcse.umn.edu>, Gary Funck <gary@intrepid.com>
Location:
ftp://ftp.parr-research.com/pub/pccts/sorcerer/ ftp://ftp.uu.net/languages/tools/pccts/
uk:
ftp://src.doc.ic.ac.uk/computing/programming/languages/tools/pccts/
europe:
ftp://ftp.th-darmstadt.de/pub/programming/languages/compiler-compiler/pccts/
Description:
SORCERER is more suitable for the class of translation problems lying between those solved by code-generator generators and by full source-to-source translator generators. SORCERER generates simple, flexible, top-down, tree parsers that, in contrast to code-generators, may execute actions at any point during a tree walk. SORCERER accepts extended BNF notation, allows predicates to direct the tree walk with semantic and syntactic context information, and does not rely on any particular intermediate form, parser generator, or other pre-existing application. Both C and C++ based tree walkers can be generated. SORCERER is well integrated with PCCTS (soon SORCERER will be distributed with PCCTS).
Reference:
Several listed in software documentation.

A book will available first quarter 1996; a pre-release version is available at the ftp site.

Discussion:
Usenet newsgroup comp.compilers.tools.pccts
Help:
newsgroup
Support:
actively supported, from newsgroup and Parr Research Corporation <parrt@parr-research.com>.
Updated:
September 1st, 1995

Language:
S/SL (Syntax Semantic Language)
Package:
ssl
Version:
?
Parts:
parser bytecode compiler, runtime
Author:
Rick Holt, Jim Cordy <cordy@qucis.queensu.ca> (language), Rayan Zachariassen <rayan@cs.toronto.edu> (C implementation)
Location:
ftp://neat.cs.toronto.edu/pub/ssl.tar.Z
Description:
A better characterization is that S/SL is a language explicitly designed for making efficient recusive-descent parsers. Unlike most other languages, practicially the LEAST expensive thing you can do in S/SL is recur. A small language that defines input/output/error token names (& values), semantic operations (which are really escapes to a programming language but allow good abstration in the pseudo-code), and a pseudo-code program that defines a grammar by the token stream the program accepts. Alternation, control flow, and 1-symbol lookahead constructs are part of the language. What I call an S/SL "implementation", is a program that compiles this S/SL pseudo-code into a table (think byte-codes) that is interpreted by the S/SL table-walker (interpreter). I think the pseudo-code language is LR(1), and that the semantic mechanisms turn it into LR(N) relatively easily.
+
more powerful and cleaner than yac
-
slower than yacc
Reference:
Cordy, J.R. and Holt, R.C. [1980] Specification of S/SL: Syntax/Semantic Language, Computer Systems Research Institute, University of Toronto.

"An Introduction to S/SL: Syntax/Semantic Language" by R.C. Holt, J.R. Cordy, and D.B. Wortman, in ACM Transactions on Programming Languages and Systems (TOPLAS), Vol 4, No.

2, April 1982, Pages 149-178.

Updated:
September 25th, 1989

Language:
BNF (??)
Package:
T-gen
Version:
2.1
Parts:
parser generator, documentation, ?
Author:
Justin Graver <graver@comm.mot.com>
Location:
ftp://st.cs.uiuc.edu/pub/st80_r41/T-gen2.1/*
Description:
T-gen is a general-purpose object-oriented tool for the automatic generation of string-to-object translators. It is written in Smalltalk and lives in the Smalltalk programming environment. T-gen supports the generation of both top-down (LL) and bottom-up (LR) parsers, which will automatically generate derivation trees, abstract syntax trees, or arbitrary Smalltalk objects. The simple specification syntax and graphical user interface are intended to enhance the learning, comprehension, and usefulness of T-gen.
Requires:
Smalltalk-80
Ports:
ParcPlace Objectworks/Smalltalk 4.0 & 4.1
Updated:
October 18th, 1992

Language:
Attribute Grammars
Package:
The FNC-2 Attribute Grammar System
Version:
1.14
Parts:
FNC-2: the Olga compiler and attribute evaluator generator; ATC: a generator of abstract tree constructors driven by bottom-up parsers, with two flavours, one on top of SYNTAX, and one on top of Lex and Yacc;

PPAT: a generator of unparsers of attributed abstract trees, based on the TeX-like notion of nested boxes of text.

Author:
Martin Jourdan, Didier Parigot and students
Location:
http://www-rocq.inria.fr/charme/FNC-2/index.html ftp://ftp.inria.fr/INRIA/Projects/ChLoE/FNC-2/
Description:
The FNC-2 system is a modern AG-processing system that aims at production-quality by providing the following qualities:
  • Efficiency: The generated evaluators, based on the visit-sequence paradigm, are completely deterministic; furthermore, this paradigm allows to apply very effective space optimization techniques. The evaluators are hence basically as efficient in time and space as hand-written programs using a tree as internal data structure.
  • Expressive power: This efficiency is not achieved at the expense of expressive power since FNC-2 accepts AGs in the very broad class of strongly non-circular AGs.
  • Easiness of use: Olga, the input language of FNC-2, enforces a high degree of programming safety, reliability and productivity. It provides powerful constructions for modularity and reusability.
  • It contains the following sub-languages: attributed abstract syntaxes ASX; attribute grammars; declaration and definition modules.
  • Versatility: The generated evaluators can be interfaced with many other tools and produced in many variations: Several modes of attribute evaluation: exhaustive; incremental; concurrent (on shared-memory multiprocessor machines).
Compilation plat
form); ML (Caml).

In addition, FNC-2 is the testbed for an active research team.

Ports:
Unix
Status:
active
Contact:
<Didier.Parigot@inria.fr> or <Martin.Jourdan@inria.fr>
Updated:
1995

Language:
Pascal, Lisp, APL, Scheme, SASL, CLU, Smalltalk, Prolog
Package:
Tim Budd's C++ implementation of Kamin's interpreters
Version:
?
Parts:
interpretors, documentation
Author:
Tim Budd <budd@cs.orst.edu>
Location:
? ftp://cs.orst.edu/pub/budd/kamin/*.shar
Description:
a set of interpretors written as subclasses based on "Programming Languages, An Interpreter-Based Approach", by Samuel Kamin.
Requires:
C++
Status:
?
Contact:
Tim Budd <budd@fog.cs.orst.edu>
Updated:
September 12th, 1991

Language:
BNF
Package:
tom (demo for Tomita Parsing algorithm)
Version:
1
Parts:
parser generator, parser interpreter, examples, documentation
Author:
Mark Hopkins <mark@omnifest.uwm.edu>
Location:
iecc.com in pub/files/tomita.tar.gz alt.sources archive from October 4, 1993.
Description:
An implementation of the Tomita parsing algorithm using LR(0) tables and dynamic programming.
Reference:
Kluwer '91, _Generalized LR Parsing_, Tomita ed., 0-7923-9201-9 "The Tomita Parsing Algorithm ...", comp.compilers May 20, 1994
Features:
Cyclic context free grammars are processed.
Portability:
System independent
Updated:
October 3rd, 1994

Language:
TXL
Package:
TXL: Tree Transformation Language
Version:
7.4
Parts:
translator, documentation, tutorial, examples
Author:
Jim Cordy <cordy@qucis.queensu.ca>
Location:
ftp://ftp.qucis.queensu.ca/pub/txl/*
Description:
TXL is a language for performing source to source transformations and is well suited for rapidly prototyping new languages and language processors. It has also been used to prototype specification languages, command languages, and more traditional program transformation tasks such as constant folding, type inference, source optimization and reverse engineering. TXL takes as input an arbitrary context-free grammar in extended BNF-like notation, and a set of show-by-example transformation rules to be applied to inputs parsed using the grammar. TXL is a functional/rule-based hybrid programming language, using the paradigm of structural transformation.
Reference:
Several listed in software documentation
Updated:
August 4 1993

Language:
Antlr 1.33 (PCCTS Development Tools)
Package:
USQAGMS
Version:
1998.02.02
Parts:
Grammar merger, documentation, additional small tools including Word Perfect grammar extraction macro.
Author:
Ron House <house@usq.edu.au>
Location:
httpd://www.sci.usq.edu.au/staff/house/usqagms/usqagms-manual.html
Description:
USQAGMS is a grammar merger that combines actions from an old/obsolescent grammar with rules from an updated grammar. It is intended to assist language designers who are writing a compiler in parallel with making changes to the grammar.
Conformance:
Processes Antlr 1.33 (PCCTS Development Tools) grammars.
Bugs:
Ron House <house@usq.edu.au>
Restriction:
Setting up for your language is a bit fiddly, but it saves heaps of work thereafter.
Requires:
Antlr 1.33 (PCCTS Development Tools) The grammar extraction macro requires Word Perfect (not an essential component).
Ports:
Linux.
Portability:
Should work on any Unix.
Status:
Not officially supported, but I want to fix any bugs you might find.
Announcements:
On web site and comp.compilers.tools.pccts.
Contact:
Ron House <house@usq.edu.au>
Updated:
Febuary 2nd, 1998

Language:
Snobol4
Package:
vanilla
Version:
?
Parts:
compiler, documentation
Author:
Catspaw, Inc.
Location:
ftp://cs.arizona.edu/snobol4/vanilla.arc
Description:
An implementation of Ralph Griswold's SNOBOL 4, a classic early language design specialized for text and string manipulation that (among other things) influenced UNIX rexexp syntax. See also Icon. This implementation is closely related to Phil Budne's 'beta2' SNOBOL.
Ports:
MSDOS
Contact:
?
Updated:
November 1st, 1994

Language:
BNF
Package:
wacco
Version:
1.1, July 91
Parts:
parser generator
Author:
Parag Patel (parag@netcom.com, parag@sde.hp.com)
Location:
comp.sources.misc volume ?
Description:
Wacco is a recursive descent LL(1) parser generator that generates C++ code. Its syntax is similar to YACC with a lot of sugaring. It can also do attribute-driven parsing. The source is bootstrapped wacco code.
Ports:
HP-UX s300 and s800, Sparc, and 4.3BSD (on HP)
Portability:
Host machine must be 32 bits.
Contact:
?
Updated:
?

Language:
BNF (yacc)
Package:
yacc
Version:
1.9.1
Parts:
parser_generator
Author:
Todd Dukes (ladco@tab.com)
Location:
sunsite.unc.edu/pub/Linux/devel/lang/compiler_tools
Description:
Yacc is a parser generator. It reads an input file that describes a grammar and generates C code that implements that grammar. It is designed to work well with 'lex' compatible lexers. Flex is a good program for generating these lexers. This version has improved support for C++. Yacc 1.9 generated C code that caused warnings and errors when compiled with C++. Minor changes were made in the declarations in the skeleton file to eliminate these warnings and errors.
Updated:
?

Language:
BNF (??)
Package:
ZUSE
Version:
?
Parts:
parser generator(?)
Author:
Arthur Pyster
Location:
? Univ Calif at Santa Barbara ?
Description:
ll(1) paser generator
Requires:
Pascal
Updated:
September 23rd, 1986

This work supported by Idiom Consulting. Idiom is a full-service ISP, providing Internet access in Northern California and Web hosting worldwide.

Please send updates to free-compilers@idiom.com

The HTML is maintained by David Muir Sharnoff and the entries themselves are currently maintained by Bryan Miller.

Copyright (c) 1992-1998 David Muir Sharnoff, All Rights Reserved
Copyright (c) 1994-1996, Steven Allen Robenalt, All Rights Reserved