Subject: Catalog of compilers, interpreters, and other language tools [p4of5] Newsgroups: comp.compilers,comp.lang.misc,comp.archives.admin,news.answers,comp.answers From: free-compilers@idiom.berkeley.ca.us (Steve Robenalt) Date: Sun, 1 May 1994 11:00:40 GMT Archive-name: free-compilers/part4 Last-modified: 1994/4/29 Version: 6.5 concurrent, parallel, and simulation languages ------------------------------------------------------------------------------- category: concurrent, parellel, and simulation languages description: This is a fairly broad category of languages. Most of the implementations in this set are not good enough to be used in production systems. Some are. In addition to those listed below, see: lref: Concurrent Clean lref: Concurrent ML lref: EuLisp lref: Parallaxis lref: Maisie lref: micro-C++ lref: MeldC lref: pm2 language: ABCL/1 (An object-Based Concurrent Language) package: ABCL/1 version: ? parts: ? author: Akinori Yonezawa, ABCL Group now at Department of Information Science, the University of Tokyo how to get: ftp pub/abcl1/* from camille.is.s.u-tokyo.ac.jp description: Asynchronous message passing to objects. reference: "ABCL: An Object-Oriented Concurrent System", Edited by Akinori Yonezawa, The MIT Press, 1990, (ISBN 0-262-24029-7) restriction: no commercial use, must return license agreement requires: Common Lisp contact: abcl@is.s.u-tokyo.ac.jp updated: 1990/05/23 language: ABCL ??? package: ABCL/R2 version: ? parts: ? author: masuhara@is.s.u-tokyo.ac.jp, matsu@is.s.u-tokyo.ac.jp, takuo@is.s.u-tokyo.ac.jp, yonezawa@is.s.u-tokyo.ac.jp how to get: ftp pub/abclr2/* from camille.is.s.u-tokyo.ac.jp description: ABCL/R2 is an object-oriented concurrent reflective language based on Hybrid Group Architecture. As a reflective language, an ABCL/R2 program can dynamically control its own behavior, such as scheduling policy, from within user-program. An an object-oriented concurrent language, this system has almost all functions of ABCL/1. requires: Common Lisp updated: 1993/01/28 language: ALLOY package: ALLOY version: 2.0? parts: interpreter, documentation, examples author: Thanasis Mitsolides how to get: ftp pub/local/alloy/* from cs.nyu.edu description: ALLOY is a higher level parallel programming language appropriate for programming massively parallel computing systems. It is based on a combination of ideas from functional, object oriented and logic programming languages. The result is a language that can directly support functional, object oriented and logic programming styles in a unified and controlled framework. Evaluating modes support serial or parallel execution, eager or lazy evaluation, non-determinism or multiple solutions etc. ALLOY is simple as it only requires 29 primitives in all (half of which for Object Oriented Programming support). ports: sparc, ? updated: 1991/06/11 language: Cellang (Cellular Automata) package: Cellular version: 2.0 parts: byte-code compiler, runtime, viewer author: J Dana Eckart how to get: comp.sources.unix, volume 26 description: A system for cellular automata programming. updated: 1993/04/03 language: Hermes package: IBM Watson prototype Hermes system version: 0.8alpha patchlevel 01 parts: bytecode compiler, compiler(bytecode->C), runtime author: Andy Lowry how to get: ftp pub/hermes/README from software.watson.ibm.com description: Hermes is a very-high-level integrated language and system for implementation of large systems and distributed applications, as well as for general-purpose programming. It is an imperative, strongly typed, process-oriented language. Hermes hides distribution and heterogeneity from the programmer. The programmer sees a single abstract machine containing processes that communicate using calls or sends. The compiler, not the programmer, deals with the complexity of data structure layout, local and remote communication, and interaction with the operating system. As a result, Hermes programs are portable and easy to write. Because the programming paradigm is simple and high level, there are many opportunities for optimization which are not present in languages which give the programmer more direct control over the machine. reference: Strom, Bacon, Goldberg, Lowry, Yellin, Yemini. Hermes: A Language for Distributed Computing. Prentice-Hall, Englewood Cliffs, NJ. 1991. ISBN: O-13-389537-8. ports: RS6000 Sun-4 NeXT IBM-RT/bsd4.3 (Sun-3 and Convex soon) discussion: comp.lang.hermes updated: 1992/03/22 language: PCN package: PCN version: 2.0 parts: compiler?, runtime, linker, libraries, tools, debugger, profiler, tracer author: Ian Foster , Steve Tuecke , and others how to get: ftp pub/pcn/pcn_v2.0.tar.Z from info.mcs.anl.gov description: PCN is a parallel programming system designed to improve the productivity of scientists and engineers using parallel computers. It provides a simple language for specifying concurrent algorithms, interfaces to Fortran and C, a portable toolkit that allows applications to be developed on a workstation or small parallel computer and run unchanged on supercomputers, and integrated debugging and performance analysis tools. PCN was developed at Argonne National Laboratory and the California Institute of Technology. It has been used to develop a wide variety of applications, in areas such as climate modeling, fluid dynamics, computational biology, chemistry, and circuit simulation. ports: (workstation nets): Sun4, NeXT, RS/6000, SGI (multicomputers): iPSC/860, Touchstone DELTA (shared memory multiprocessors): Symmetry/Dynix contact: updated: 1993/02/12 language: LOOPN package: LOOPN version: ? parts: compiler?, simulator author: ? how to get: ftp departments/computer_sci*/loopn.tar.Z from ftp.utas.edu.au description: I wish to announce the availability of a compiler, simulator and associated source control for an object-oriented petri net language called LOOPN. In LOOPN, a petri net is an extension of coloured timed petri nets. The extension means firstly that token types are classes. In other words, they consist of both data fields and functions, they can be declared by inheriting from other token types, and they can be used polymorphically. The object-oriented extensions also mean that module or subnet types are classes. LOOPN has been developed over a period of about 5 years at the University of Tasmania, where it has been used in teaching computer simulation and the modelling of network protocols. A petri net is a directed, bipartite graph; nodes are either places (represented by circles) or transitions (represented by rectangles). A net is marked by placing tokens on places. When all the places pointing to a transition (the input places) have a token, the net may be fired by removing a token from each input place and adding a token to each place pointed to by the transition (the output places). Petri nets are used to model concurrent systems, particularly in the network protocol area. contact: Charles Lakos updated: 1992/12/20 language: Simula package: Lund Simula version: 4.07 parts: ? author: ? how to get: ftp misc/mac/programming/+_Simula/* from rascal.ics.utexas.edu description: ? contact: Lund Software House AB / Box 7056 / S-22007 Lund, Sweden updated: 1992/05/22 language: SR (Synchronizing Resources) package: sr version: 2.0 parts: ?, documentation, tests author: ? how to get: ftp sr/sr.tar.Z from cs.arizona.edu description: SR is a language for writing concurrent programs. The main language constructs are resources and operations. Resources encapsulate processes and variables they share; operations provide the primary mechanism for process interaction. SR provides a novel integration of the mechanisms for invoking and servicing operations. Consequently, all of local and remote procedure call, rendezvous, message passing, dynamic process creation, multicast, and semaphores are supported. reference: "The SR Programming Language: Concurrency in Practice", by Gregory R. Andrews and Ronald A. Olsson, Benjamin/Cummings Publishing Company, 1993, ISBN 0-8053-0088-0 ports: Sun-4, Sun-3, Decstation, SGI Iris, HP PA, HP 9000/300, NeXT, Sequent Symmetry, DG AViiON, RS/6000, Multimax, Apollo, and others. discussion: info-sr-request@cs.arizona.edu contact: sr-project@cs.arizona.edu updated: 1992/09/01 language: UNITY package: MasPar Unity version: 1.0 parts: translator(UNITY->MPL), documentation author: Martin Huber, University of Karlsruhe, Germany how to get: ftp pub/maspar/maspar_unity* from SanFrancisco.ira.uka.de description: ? contact: Lutz Prechelt updated: ? language: UNITY package: HOL-UNITY version: 2.1 parts: verification tool author: ? how to get: ? description: ? contact: Flemming Andersen ? updated: ? Forth family languages ------------------------------------------------------------------------------- category: Forth family languages description: These are the stack-based postfix languages. lref: Postscript iref: (mc6809) 6809, E-Forth language: Forth package: TILE Forth version: 2.1 parts: interpreter author: Mikael Patel how to get: ftp tile-forth-2.1.tar.Z from a GNU archive site description: Forth interpreter in C; many Forth libraries conformance: Forth83 restriction: shareware/GPL ports: unix updated: 1991/11/13 language: Forth package: cforth version: ? parts: interpreter author: ? how to get: comp.sources.unix archive volume 1 description: ? updated: ? language: Forth package: pfe (Portable Forth Environment) version: 0.8.0 parts: ? author: Dirk Zoller how to get: ftp pub/unix/languages/pfe* from duz@roxi.rz.fht-mannheim.de description: A Forth development system that tries to be correct, complete, portable, usable and simple. It doesn't try too hard to be fast. conformance: all dpANS word sets ports: Linux, RS/6000, HP-UX portability: high updated: 1993/08/11 language: Forth package: F68K version: ? parts: ? author: ? how to get: ftp atari/Languages/f68k.* from archive.umich.edu description: a portable Forth system for Motorola 68k computers ports: Atari ST/TT, Amiga, Sinclair QL and OS9 portability: very high for 68000 based systems contact: Joerg Plewe updated: 1992/12/14 language: Forth package: 51forth version: ? parts: ? author: Scott Gehmlich how to get: ftp giovanni/51forth.zip from [130.123.96.9] description: source and documentation for a 8051 subroutine- threaded forth contact: ? updated: 1993/04/03 language: Mops package: Mops version: 2.3.1 parts: compiler, documentation, editor author: Michael Hore how to get: ftp pub/Yerk/? from oddjob.uchicago.edu description: Like Yerk, Mops is descended from the ex-commercial object-oriented language Neon. Mops features an optimizing native-code compiler; it is much faster than Yerk, but less compatible with Neon. Mops includes extensions such as multiple inheritance. ports: Macintosh language: Kevo (Forth-like) package: kevo version: 0.9b6 parts: interpreter, demo programs, user's guide, papers author: Antero Taivalsaari how to get: ftp /pub/kevo/* from cs.uta.fi description: Kevo is a prototype-based object-oriented language for Macintosh Kevo features a unique prototype-based object model (which is based neither on classes nor Self-style delegation), multitasking (both preemptive and cooperative), dynamic memory management, and an icon-based object browser and editor modeled loosely after Mac Finder. Kevo has been built around a portable threaded code interpreter, and is syntactically a close derivative of Forth. ports: Macintosh contact: kevo-interest@ursamajor.uvic.ca updated: 1993/05/18 language: Yerk package: Yerk version: 3.62 parts: ? author: ? how to get: ftp pub/Yerk/? from oddjob.uchicago.edu description: Yerk is an object oriented language based on a Forth Kernel with some major modifications. It was originally known as Neon, developed and sold as a product by Kriya Systems from 1985 to 1989. Several of us at The University of Chicago have maintained Yerk since its demise as a product. Because of the possible trademark conflict that Kriya mentions, we picked the name Yerk, which is at least not an acronym for anything, but rather stands for Yerkes Observatory, part of the Department of Astronomy and Astrophysics at U of C. updated: ? compiler generators and related tools ------------------------------------------------------------------------------- category: compiler generators and related tools description: Yacc, and the rest of its family language: ABC package: Grammar analysis tools version: 1 parts: analysis tools, samples, documentation author: Steven Pemberton how to get: ftp programming/languages/abc/examples/grammar/* from ftp.eu.net or ftp.nluug.net 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: 1993/07/05 language: ? attribute grammar ? package: Alpha version: pre-release parts: semantic-analysis generator?, documentation(german) author: Andreas Koschinsky how to get: 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: 1993/02/16 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 how to get: ftp pub/ox/* from ftp.cs.iastate.edu 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: 1993/11/14 language: BNF (Extended) package: Gray version: 3 parts: parser generator(Forth) author: Martin Anton Ertl how to get: author; version 2 is on various ftp sites 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. There is no special support for error handling. requires: Forth ports: TILE Release 2 by Mikael Patel updated: 1992/05/22 language: BNF ?? package: ZUSE version: ? parts: parser generator(?) author: Arthur Pyster how to get: ? Univ Calif at Santa Barbara ? description: ll(1) paser generator requires: Pascal updated: 1986/09/23 language: BNF ?? package: FMQ version: ? parts: paser generator w/error corrector generator author: Jon Mauney how to get: ftp from csczar.ncsu.edu description: ? status: ? contact: ? updated: 1990/03/31 language: BNF ?? package: ATS (Attribute Translation System) version: ? parts: ? author: ? University of Saskatchewan ? how to get: ? 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 ) updated: 1988/11/29 language: BNF (Extended) package: PCCTS (Purdue Compiler-Construction Tool Set) version: 1.20 parts: scanner generator, parser generator (pred-LL(k)), documentation, tutorial author: Terence J. Parr , Will E. Cohen , Henry G. Dietz , Russel W. Quong how to get: ftp pub/pccts/1.20/pccts.tar.Z from marvin.ecn.purdue.edu UK: ftp computing/programming/languages/tools/pccts/* from src.doc.ic.ac.uk Macintosh: ftp pub/mac/* from maya.dei.unipd.it 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. However, PCCTS has many additional features which make it easier to use for a wide range of translation problems. PCCTS grammars contain specifications for lexical and syntactic analysis with selective backtracking ("infinite lookahead"), semantic predicates, intermediate-form construction and error reporting. Rules may employ Extended BNF (EBNF) grammar constructs and may define parameters, return values and local variables. Languages described in PCCTS are recognized via LL(k) parsers constructed in pure, human-readable, C code. Selective backtracking is available to handle non-LL(k) constructs. PCCTS parsers may be compiled with C++. Version 1.20 now generates C++ code as well as K&R and ANSI C variants. ports: Unix, DOS, OS/2, Macintosh portability: very high discussion: send mail with a body of "subscribe pccts-users your_name" to pccts-users-request@ahpcrc.umn.edu contact: Terence J. Parr Roberto Avanzi (mocenigo@maya.dei.unipd.it) (for the Mac port) updated: 1994/04/29 language: BNF (very extended), yacc package: PRE-CC Xtended version: 2.30 parts: library, parser generator (LL(oo)), translator(yacc->) author: Peter Breuer how to get: ftp pub/Programs/preccx230* from ftp.comlab.ox.ac.uk (later versions available by subscription) 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. ports: unix, MS-DOS contact: Peter Breuer , Jonathan Bowen updated: 1992/08/25 language: BNF ?? package: LLGen version: ? parts: parser generator author: ? Fischer and LeBlanc ? how to get: ? ftp from csczar.ncsu.edu ? description: LL(1) parser generator conformance: subset of FMQ reference: "Crafting A Compiler", by Fischer and LeBlanc status: ? contact: ? updated: 1990/03/31 language: BNF ?? package: wacco version: ? parts: parser generator author: ? how to get: comp.sources.misc volume ? description: LL(?) parser generator contact: ? updated: ? language: BNF (Extended), BNF (yacc), Modula-2 package: GMD Toolbox for Compiler Construction (aka Cocktail) version: 9209 parts: parser generator (LALR -> C, Modula-2), documentation, parser generator (LL(1) -> C, Modula-2), tests, scanner generator (-> C, Modula-2), tests translator (Extended BNF -> BNF), translator (Modula-2 -> C), translator (BNF (yacc) -> Extended BNF), examples abstract syntax tree generator, attribute-evaluator generator, code generator author: ? how to get: ftp pub/cocktail/dos from ftp.karlsruhe.gmd.de OS/2: ftp.eb.ele.tue.nl/pub/src/cocktail/dos-os2.zoo description: A huge set of compiler building tools. requires: (ms-dos only) DJ Delorie's DOS extender (go32) (OS/2 only) emx programming environment for OS/2 ports: msdos, unix, os/2 discussion: subscribe to Cocktail using listserv@eb.ele.tue.nl contact: Josef Grosch OS/2: Willem Jan Withagen updated: 1992/10/01 language: BNF ???? package: T-gen version: 2.1 parts: parser generator, documentation, ? author: Justin Graver how to get: ftp pub/st80_r41/T-gen2.1/* from st.cs.uiuc.edu 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: 1992/10/18 language: BNF package: Eli Compiler Construction System version: 3.5 parts: ?, documentation author: ? how to get: ftp pub/cs/distribs/eli/* from ftp.cs.colorado.edu Europe: ftp unix/eli from ftp.uni-paderborn.de description: Eli integrates off-the-shelf tools and libraries with specialized language processors to generate complete compilers 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. ports: Sun-4 (SunOS 4 & 5), Ultrix/MIPS, RS/6000, HP-UX, SGI, Linux discussion: contact: , updated: 1993/11/01 language: BNF (yacc) package: NewYacc version: 1.0 parts: parser generator, documenation author: Jack Callahan how to get: ftp src/newyacc.1.0.*.Z from flubber.cs.umd.edu description: [someone want to fill it in? --ed] reference: see Dec 89 CACM for a brief overview of NewYacc. updated: 1992/02/10 language: BNF (yacc) package: bison version: 1.22 parts: parser generator, documentation author: Robert Corbett ? how to get: ftp bison-1.16.tar.Z from a 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: 1993/09/14 language: BNF (yacc), Lex package: Bison++, Flex++ version: ? parts: parser generator, scanner generator, documentation, samples author: ? Alain Coetmeur how to get: ftp pub/file/{bison,flex,misc}++.tar.gz from iecc.com description: GNU's Yacc and Lex, retargeted to C++ updated: 1993/07/08 language: BNF (yacc) package: ? jaccl ? version: ? parts: parser generator author: Dave Jones how to get: ? description: a LR(1) parser generator updated: 1989/09/08 language: BNF (yacc) package: byacc (Berkeley Yacc) version: 1.9 parts: parser generator author: Robert Corbett how to get: ftp pub/byacc.tar.1.9.Z from vangogh.CS.Berkeley.EDU description: probably the best yacc variant around. Previously known as Zoo, and before that, as Zeus. updated: 1993/02/22 language: BNF (yacc), Lex package: Lex/Yacc for Turbo Pascal uploaded version: ? parts: parser generator, scanner generator, documentation? author: ? how to get: iecc.com (140.186.81.1) at pub/file/lyprg.zip. description: Lex and Yacc retargeted to Pascal. contact: ? dpoole@hydrogen.oscs.montana.edu (David Poole) updated: 1993/07/02 language: BNF (yacc), Ada package: aflex-ayacc version: 1.2a parts: parser generator (Ada), scanner generator (Ada) author: IRUS (Irvine Research Unit in Software) how to get: ftp pub/irus/aflex-ayacc_1.2a.tar.Z from liege.ics.uci.edu description: Lex and Yacc equivalents that produce Ada output announcements: irus-software-request@ics.uci.edu contact: irus-software-request@ics.uci.edu updated: 1993/01/06 language: BNF (variant), Icon package: Ibpag2 (Icon-Based Parser Generation System 2) version: 1.0 (beta) parts: parser generator (Icon, SLR(1)) author: Richard L. Goerwitz how to get: comp.sources.misc archive 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: 1993/07/13 language: BNF ?, Gofer package: Ratatosk ? version: ? parts: parser generatr (Gofer) author: Torben AEgidius Mogensen how to get: ftp pub/diku/dists/Ratatosk.tar.Z from ftp.diku.dk 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: BNF package: lalr.ss - An LALR(1) parser generator version: 0.9 parts: parser generator (->Scheme) author: Mark Johnson how to get: ftp new/lalr.shar from the Scheme Repository description: A LALR(1) parser generator in and for Scheme. requires: Scheme updated: 1993/05/24 language: BURS ? package: Iburg version: ? parts: parser generator? author: Christopher W. Fraser , David R. Hanson , Todd A. Proebsting how to get: ftp pub/iburg.tar.Z from ftp.cs.princeton.edu 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: 1993/02/10 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 how to get: ftp scorpion/* from cs.arizona.edu 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: 1993/11/04 language: COCOL (EBNF variant) package: COCO/R version: 1.34 parts: parser generator(LL(1)) author: Hanspeter Moessenboeck Port to Modula-2 done by Marc Brandis, Christof Brass and Pat Terry how to get: ftp Oberon/Examples/Coco from neptune.inf.ethz.ch Modula-2: ftp pub/coco from alpha.ru.ac.za 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. references: _A compiler generator for microcomputers_, by Rechenberg and Mossenbock (Prentice Hall, 1989, 0-13-155136-1) bugs: MS-DOS related versions: Pat Terry Other: Hanspeter Moessenboeck requires: Oberon or Modula-2 ports: MS-DOS: TopSpeed Modula-2; FST 2.0; FST 3.1; StonyBrook QuickMod 2.2; Logitech 3.03. Macintosh: Apple MacMeth status: Oberon version is freely available?, Modula-2 version is free to academic sites; commercial use requires a license updated: 1994/01/13 language: EAG (Extended Affix Grammar) package: EAG version: first public release parts: recognizer generator, transduccer generator, translator generator, editor generator, documentation author: Marc Seutter how to get: ftp pub/eag/* from hades.cs.kun.nl description: The Extended Affix Grammar formalism, or shortly EAG, 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. [What's a tranducer? --ed] updated: 1993/09/14 language: lex package: flex version: 2.3.8 parts: scanner generator author: Vern Paxson how to get: ftp flex-2.3.8.tar.Z from a GNU archive site or ftp.ee.lbl.gov description: ? updated: ? language: Milarepa package: Milarepa Perl/BNF Parser version: Prototype 1.0 parts: parser-generator, examples, tutorial author: Jeffrey Kegler how to get: via anonymous ftp at alexia.lis.uiuc.edu:/pub/perl/marpa-1.0.tar.Z description: Milarepa takes a source grammar in the Milarepa language (a straightforward mix of BNF and Perl) and generates a Perl file, which, when enclosed in a simple wrapper, parses some third language described by the source grammar. This is intended to be a real hacker's parser. It is not restricted to LR(k), and the parse logic follows directly from the BNF. It handles ambiguous grammars, ambiguous tokens (tokens which were not positively identified by the lexer) and allows the programmer to change the start symbol. The grammar may not be left recursive. The input must be divided into sentences of a finite maximum length. There is no fixed distinction between terminals and non-terminals, that is, a symbol can both match the input AND be on the left hand side of a production. Multiple Marpa grammars are allowed in a single perl program. It's only a prototype primarily due to poor speed. This is intended to be remedied after Perl 5.0 is out. requires: perl updated: 1994/04/27 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 how to get: ? ftp pub/budd/kamin/*.shar from cs.orst.edu ? 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 updated: 1991/09/12 language: perl, yacc iref: (Perl) perl-byacc language: Relation Grammar package: rl version: ? parts: ? author: Kent Wittenburg how to get: fto rl/* from flash.bellcore.com 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: 1992/10/31 language: S/SL (Syntax Semantic Language) package: ssl version: ? parts: parser bytecode compiler, runtime author: Rick Holt, Jim Cordy (language), Rayan Zachariassen (C implementation) how to get: ftp pub/ssl.tar.Z from neat.cs.toronto.edu 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: 1989/09/25 language: TXL package: TXL: Tree Transformation Language version: 7.4 parts: translator, documentation, tutorial, examples author: Jim Cordy how to get: ftp pub/txl/* from ftp.qucis.queensu.ca 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: 1993/08/04 language: BNF (extended) package: SORCERER: A Simple Tree Parser Generator version: 1.00B parts: translator, documentation, tutorial, examples author: Terence Parr how to get: ftp pub/pccts/sorcerer/* from marvin.ecn.purdue.edu 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. discussion: send mail with a body of "subscribe pccts-users your_name" to pccts-users@ahpcrc.umn.edu. "your_name" can be email, or full. help: from mailing list support: actively supported, from mailing list reference: Several listed in software documentation updated: 1994/02/15 mathematical tools and languages ------------------------------------------------------------------------------- category: mathematical tools and languages description: These are either special-purpose languages and tools, or general purpose langauges and tools that have traditionally been used for mathematical and scientific computing task. lref: Fortran lref: PCN lref: CLP lref: Sisal language: APL package: I-APL version: ? parts: ? author: ? how to get: ftp languages/apl/* from watserv1.waterloo.edu description: ? updated: 1992/07/06 language: APL package: APLWEB version: ? parts: translator(web->apl), translator(web->TeX) author: Dr. Christoph von Basum how to get: ftp languages/apl/aplweb/* from watserv1.uwaterloo.ca description: [Should this be listed with the Web entries? -- Ed.] updated: 1992/12/07 language: APL iref: (Pascal) Tim Budd's C++ implementation of Kamin's interpreters language: J package: J-mode version: ? parts: emacs macros author: ? how to get: ftp pub/j/gmacs/j-interaction-mode.el from think.com description: add on to J updated: 1991/03/04 language: RLaB language (math manipulation - MATLAB-like) package: RLaB version: 0.95 parts: interpreter, libraries, documentation author: Ian Searle how to get: ftp pub/RLaB/* from evans.ee.adfa.oz.au description: RLaB is a "MATLAB-like" matrix-oriented programming language/toolbox. RLaB focuses on creating a good experimental environment (or laboratory) in which to do matrix math Currently RLaB has numeric scalars and matrices (real and complex), and string scalars, and matrices. RLaB also contains a list variable type, which is a heterogeneous associative array. bugs: Ian Searle restriction: GNU General Public License requires: GNUPLOT, lib[IF]77.a (from f2c) ports: many unix, OS/2, Amiga updated: 1993/10/27 language: octave language (math manipulation - MATLAB-like) package: octave version: 1.0 parts: interpreter, libraries, documentation author: John W. Eaton how to get: ftp /pub/octave/* from ftp.che.utexas.edu also, any GNU archive site (see archive listing below) description: Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically. Octave can do arithmetic for real and complex scalars and matrices, solve sets of nonlinear algebraic equations, integrate functions over finite and infinite intervals, and integrate systems of ordinary differential and differential-algebraic equations. bugs: bug-octave@che.utexas.edu restriction: GNU General Public License requires: gnuplot, C++ compiler and FORTRAN compiler or f2c translator. ports: several updated: 1994/2/23 language: FUDGIT language (math manipulation) package: FUDGIT version: 2.27 parts: interpreter author: Thomas Koenig ?? how to get: ftp /pub/linux/sources/usr.bin/fudgit-* from tsx-11.mit.edu ?? description: FUDGIT is a double-precision multi-purpose fitting program. It can manipulate complete columns of numbers in the form of vector arithmetic. FUDGIT is also an expression language interpreter understanding most of C grammar except pointers. Morever, FUDGIT is a front end for any plotting program supporting commands from stdin. It is a nice mathematical complement to GNUPLOT, for example. requires: GNUPLOT ports: AIX, HPUX, Linux, IRIX, NeXT, SunOS, Ultrix updated: 1993/02/22 language: Unix BC (arbitrary-precision arithmetic language) package: C-BC version: 1.1 parts: bytecode compiler, interpreter, documentation, examples author: Mark Hopkins how to get: alt.sources (10/04/93). description: A strongly typed version of BC with expanded C-like syntax, more base types, with ability to form array and pointer types of any dimension and to allocate/free arrays at run-time. conformance: Most POSIX-BC features supported, except functions must be declared consistently and declared before first use. String handling slightly different. reference: C-BC implementation notes contained with software documentation requires: ANSI-C compiler ports: DOS, Unix portability: No system dependent features present. updated: 1993/08/23 language: Unix BC (arbitrary-precision arithmetic language) package: GNU BC version: 1.02 parts: parser (yacc), interpreter, BC math library author: Philip A. Nelson how to get: ftp bc-1.02.tar.Z from a GNU archive site description: BC is an arbitrary precision numeric processing language with a C-like syntax that traditionally provided a front-end to DC. This version, however, is self-contained and internally executes its own compiled code (unrelated to DC code). restriction: Source code falls under the GNU CopyLeft. requires: vsprintf and vfprintf routines ports: Unix (BSD, System V, MINIX, POSIX) conformance: Superset of POSIX BC (P10003.2/D11), with a POSIX-only mode. updated: ? language: Calc? (symbolic math calculator) package: Calc version: 2.02 parts: interpreter, emacs mode, documentation author: Dave Gillespie how to get: ftp calc-2.02.tar.z from a GNU archive site description: Calc is an extensible, advanced desk calculator and mathematical tool written in Emacs Lisp that runs as part of GNU Emacs. It is accompanied by the "Calc Manual", which serves as both a tutorial and a reference. If you wish, you can use Calc as only a simple four-function calculator, but it also provides additional features including choice of algebraic or RPN (stack-based) entry, logarithms, trigonometric and financial functions, arbitrary precision, complex numbers, vectors, matrices, dates, times, infinities, sets, algebraic simplification, differentiation, and integration. bugs: ? updated: ? language: C-like caluculator package: Arbitrary precision calculator version: 1.26.4 parts: interpreter author: David I. Bell how to get: ftp pub/calc from ftp.uu.net description: Arbitrary precision C-like calculator [similar to BC? --ed] ports: Linux updated: 1993/06/15 language: Unix DC (arbitrary-precision arithmetic language) package: GNU DC version: 0.2 parts: interpreter author: ? how to get: ftp dc-0.2.tar.Z from a GNU archive site description: DC is the language for an arbitrary precision postfix calculator. This version is a subset of DC that handles all the Unix DC operations, except the (undocumented) array operations. status: Attempting integration with GNU BC. updated: 1993/05/21 language: Fortran package: f2c version: 1993.04.28 parts: translator (to C), postscript documentation, man pages, support libraries. author: S. I. Feldman, D. M. Gay, M. W. Maimone and N. L. Schryer how to get: ftp from netlib@research.att.com:netlib/f2c/src/* description: translator (Fortran 77 to ANSI C or C++) bugs: D. M. Gay updated: 1993 April 27 language: Fortran package: Floppy version: ? parts: ? author: ? how to get: ffccc in comp.sources.misc archive volume 12 description: ? contact: ? updated: 1992/08/04 language: Fortran package: Flow version: ? parts: ? author: Julian James Bunn how to get: comp.sources.misc archive volume 31 description: The Flow program is a companion to Floppy, it allows the user to produce various reports on the structure of Fortran 77 code, such as flow diagrams and common block tables. requires: Floppy ports: VMS, Unix, CMS updated: ? language: Fortran package: Adaptor (Automatic DAta Parallelism TranslatOR) version: 1.0 parts: preprocessor, library, documentation author: ? how to get: ftp gmd/adaptor/adp_1.0.tar.Z from ftp.gmd.de description: Adaptor is a tool that transforms data parallel programs written in Fortran with array extensions, parallel loops, and layout directives to parallel programs with explicit message passing. ADAPTOR is not a compiler but a source to source transformation that generates Fortran 77 host and node programs with message passing. The new generated source codes have to be compiled by the compiler of the parallel machine. ports: CM-5, iPCS/860, Meiko CS1/CS2, KSR 1, SGI, Alliant, network of Suns, or RS/6000s contact: Thomas Brandes updated: 1993/06 language: Fortran, C package: cfortran.h version: 2.6 parts: macros, documentation, examples author: Burkhard Burow how to get: ftp cfortran/* from zebra.desy.de description: cfortran.h is an easy-to-use powerful bridge between C and FORTRAN. It provides a completely transparent, machine independent interface between C and FORTRAN routines and global data. cfortran.h provides macros which allow the C preprocessor to translate a simple description of a C (Fortran) routine or global data into a Fortran (C) interface. reference: reviewed in RS/Magazine November 1992 and a user's experiences with cfortran.h are to be described in the 1/93 issue of Computers in Physics. ports: VAX VMS or Ultrix, DECstation, Silicon Graphics, IBM RS/6000, Sun, CRAY, Apollo, HP9000, LynxOS, f2c, NAG f90. portability: high contact: burow@vxdesy.cern.ch updated: 1992/04/12 language: Fortran package: fsplit version: ? parts: ? author: ? how to get: ? description: a tool to split up monolithic fortran programs updated: ? language: Fortran package: ? version: ? parts: ? author: Steve Mccrea how to get: ? description: a tool to split up monolithic fortran programs requires: new awk updated: ? language: Fortran package: Fortran77 -> Fortran90 converter version: ? 1 parts: translator(Fortran 77 -> Fortran 90), documentation? author: metcalf@cernvm.cern.ch how to get: ftp pub/MandR/convert.f90 from jkr.cc.rl.ac.uk description: A Fortran77 to Fortran90 translator. There's a number of significant differences between the two Fortrans that makes a package like this useful. updated: 1993/07/17 language: J package: J from ISI version: 6 parts: interpreter, tutorial author: Kenneth E. Iverson and Roger Hui how to get: ftp languages/apl/j/* from watserv1.waterloo.edu description: J was designed and developed by Ken Iverson and Roger Hui. It is similar to the language APL, departing from APL in using using the ASCII alphabet exclusively, but employing a spelling scheme that retains the advantages of the special alphabet required by APL. It has added features and control structures that extend its power beyond standard APL. Although it can be used as a conventional procedural programming language, it can also be used as a pure functional programming language. ports: Dec, NeXT, SGI, Sun-3, Sun-4, VAX, RS/6000, MIPS, Mac, Acorn IBM-PC, Atari, 3b1, Amiga updated: 1992/10/31 language: Ratfor package: ? ratfor ? version: ? parts: translator(Ratfor->Fortran IV) author: Brian Kernighan and P.J. Plauger (wrote the book anyway) how to get: comp.sources.unix archives volume 13 description: Ratfor is a front end language for Fortran. It was designed to give structured control structures to Fortran. It is mainly of historical significance. updated: ? language: Y (cross between C and Ratfor) package: y+po version: ? parts: compiler author: Jack W. Davidson and Christopher W. Fraser how to get: ftp pub/y+po.tar.Z from ftp.cs.princeton.edu description: Davidson/Fraser peephole optimizer PO [1-3] [where the GCC RTL idea and other optimization ideas came from] along with the Y compiler [cross between C+ratfor] is ftpable from ftp.cs.princeton.edu: /pub/y+po.tar.Z. It is a copy of the original distribution from the University of Arizona during the early 80's, totally unsupported, almost forgotten [do not bug the authors] old code, possibly of interest to compiler/language hackers. reference: Jack W. Davidson and Christopher W. Fraser, "The Design and Application of a Retargetable Peephole Optimizer", TOPLAS, Apr. 1980. Jack W. Davidson, "Simplifying Code Through Peephole Optimization" Technical Report TR81-19, The University of Arizona, Tucson, AZ, 1981. Jack W. Davidson and Christopher W. Fraser, "Register Allocation and Exhaustive Peephole Optimization" Software-Practice and Experience, Sep. 1984. status: history updated: ? electrical engineering languages ------------------------------------------------------------------------------- category: electrical engineering languages description: These are languages used for simulating, designing, and specifying circuits. language: CASE-DSP (Computer Aided Software Eng. for Digital Signal Proc) package: Ptolemy version: 0.4.1 parts: grahpical algorithm layout, code generator, simulator author: ? how to get: ftp pub/ptolemy/* from ptolemy.bekeley.edu description: Ptolemy provides a highly flexible foundation for the specification, simulation, and rapid prototyping of systems. It is an object oriented framework within which diverse models of computation can co-exist and interact. For example, using Ptolemy a data-flow system can be easily connected to a hardware simulator which in turn may be connected to a discrete-event system, etc. Because of this, Ptolemy can be used to model entire systems. In addition, Ptolemy now has code generation capabilities. from a flow graph description, Ptolemy can generate both C code and DSP assembly code for rapid prototyping. Note that code generation is not yet complete, and is included in the current release for demonstration purposes only. requires: C++, C ports: Sun-4, MIPS/Ultrix; DSP56001, DSP96002. status: active research project discussion: ptolemy-hackers-request@ohm.berkeley.edu contact: ptolemy@ohm.berkeley.edu updated: 1993/04/22 language: EDIF (Electronic Design Interchange Format) package: Berkeley EDIF200 version: 7.6 parts: translator-building toolkit author: Wendell C. Baker and Prof A. Richard Newton of the Electronics Research Laboratory, Department of Electrical Engineering and Computer Sciences at the University of California, Berkeley, CA how to get: ftp from pub/edif in ic.berkeley.edu description: ? restriction: no-profit w/o permission ports: ? updated: 1990/07 language: Verilog, XNF package: XNF to Verilog Translator version: ? parts: translator(XNF->Verilog) author: M J Colley how to get: ftp pub/dank/xnf2ver.tar.Z from punisher.caltech.edu description: This program was written by a postgraduate student as part of his M.Sc course, it was designed to form part a larger system operating with the Cadence Edge 2.1 framework. This should be born in mind when considering the construction and/or operation of the program. updated: ? language: VHDL package: ALLIANCE version: 1.1 parts: compiler, simulator, tools and environment, documentation author: ? how to get: ftp pub/cao-vlsi/alliance from ftp-masi.ibp.fr description: ALLIANCE 1.1 is a complete set of CAD tools for teaching Digital CMOS VLSI Design in Universities. It includes VHDL compiler and simulator, logic synthesis tools, automatic place and route, etc... ALLIANCE is the result of a ten years effort at University Pierre et Marie Curie (PARIS VI, France). ports: Sun4, also not well supported: Mips/Ultrix, 386/SystemV discussion: alliance-request@masi.ibp.fr contact: cao-vlsi@masi.ibp.fr updated: 1993/02/16 -- Send compilers articles to compilers@iecc.com or {ima | spdcc | world}!iecc!compilers. Meta-mail to compilers-request@iecc.com.