Related Projects

A very fast scanner generator, which also does a good job combinated with CUP.
A Java tool to generate class frameworks and visitor patterns for example for a syntax tree
Easy to install compiler construction packet with TU-Münchens preferred tools like JFlex, CUP and Classgen, as well as ANT

Related Persons

Andrea Flexeder
Syntactic changes in CUP 0.11
Michael Petter
Syntactic changes, new JFlex frontend and Anttask in CUP 0.11; maintaining latest (0.11) sources
Scott E. Hudson
... CUP 0.9 team @ Carnegie Mellon; 'original' author of CUP
C. Scott Ananian
... CUP 0.10 team @ Princeton
Frank Flannery
... CUP 0.10 team @ Princeton
Dan Wang
... CUP 0.10 team @ Princeton
Andrew W. Appel
... CUP 0.10 team @ Princeton


"Method is exceeding the 65536 bytes limit"
In almost all computer languages You would choose not to hardcode subcommands or functions as language keywords, but as identifiers, thus eliminating ever growing grammars, as Your language evolves? This is also a way to surpass the Java Bytecode Formats limitation of not allowing methods bigger than 65k
Which Java version matches the code, produced by CUP?
Since You don't use generics as data types for non terminals or You don't use new syntax in Your user code, You can compile Your parser with JDK 1.2+
The CUP-Anttask has a bug - it doesn't find my directory xy
This is no CUP bug! If You use Your CUP with Ant and keep Your directories as properties, then verify, that You are using the location attribute instead of the value attribute
My CUP/JFlex task drops strange erros when using CUP v11a
JFlex is build upon CUP runtime, so having JFlex and CUP both residing in the same classpath will confuse Java and make CUP v11a use the v10 runtime, and thus run into errors. Try to include the jars separately


CUP 11b 20140226 out now!
26.02.2014: with the new -location command line flag, CUP now generates the identifiers xleft and xright for the new location classes.
CUP 11b out now!
20.02.2014: We finally modified the old CUP 11 to support very large grammars by splitting up the action switch!
Prepare for CUP2!
11.08.2009: Due to problems, rooted deep in the ancient CUP engine, we decided to completely rewrite the whole engine and stop supporting the old CUP sources. You can find the sources on our development page!
New development release 20060608
08.06.2006: CUPs embedded actions handling is now correct.
New Homepage
20.10.2003: The new CUP-TUM Homepage is online since today
15.10.2003: CUP-TUM is now included in the new CompilerConstructionKit 1.0beta!
10.09.2003: Initial release of a slightly adapted CUP on this page.

In general

What's been introduced since CUP v11a development started?
Parsing theory hasn't changed much since 1999, so the major changes have been made in the user interface and frontend. With CUP v0.11a, You can:
  • use CUP in an Ant-Target
  • start CUP by a simple command like java -jar java-cup-11a.jar myGrammar.cup
  • use generic parametrized classes (since Java 1.5) as datatypes for non terminals and terminals
  • have Your own symbol classes
How do You use CUP-TUM?
You can obtain the documentation for CUP here. If You speak german, You could also have a look at the Merkblatt, which describes the use of ant and the compiler tools.


Copyright notice


CUP 11b 20140226
executable standalone Jar-package
CUP 11b 20140226 runtime
CUP runtime-library to use in conjunction with CUP generated parsers
CUP version control system
SVN access to the development version
Changelog for current version

Examples / Documentation

Example: CUP grammar for the Java programming language 1.0 to 1.5. Please pay attention: these grammars only work with cup versions prior to 0.11 due to a change in the keywords ("super")
latest stable CUP release (July 1999)
Example: CUP/JFLex interoperability
latest development CUP release (June 2006)
Example: CUP/JFLex sample project
latest development CUP release (June 2006)
Official documentation
Documentation for the TUM Praktikum Übersetzerbau in PDF-Format

Archived versions

CUP 10k sourcecode release
latest stable CUP release (July 1999)
CUP 10j sourcecode release
old stable CUP release (July 1999)
CUP 10i sourcecode release
old CUP release (Feb 1999)
CUP 10h sourcecode release
old CUP release (Feb 1999)
CUP 10g sourcecode release
old CUP release (Mar 1998)
CUP 10f sourcecode release
old CUP release (Dec 1997)
CUP 10e sourcecode release
old CUP release (Sep 1997)
CUP 10d sourcecode release
old CUP release (Sep 1997)
CUP 10c sourcecode release
old CUP release (Jul 1997)
CUP 10b sourcecode release
old CUP release (Nov 1996)
CUP 10a sourcecode release
old CUP release (Aug 1996)
CUP 9e sourcecode release
ancient CUP release (March 1996)