CUP is the "Constructor of Useful Parsers", a system for generating parsers from simple LALR specifications. It serves the same role as the widely used program YACC and in fact offers most of the features of YACC. However, CUP is written in Java, uses specifications including embedded Java code, and produces parsers which are implemented in Java.