oops has moved and has undergone significant changes.
Bookmark the new homepage.

oops -- an object-oriented parser generator

What is oops

Oops is an object-oriented parser generator implemented in Java. Oops takes a grammar written in EBNF, checks that it is indeed LL(1), i.e., suitable for recursive descent parsing, and produces a parser as a set of serialized objects. A scanner must be provided and classes satisfying certain interfaces can be implemented which the parser uses for actions, i.e. to build a parse tree.

Oops was originally developed in a course on compiler construction taught at the University of Osnabrück in 1998.

Changes

Download

Links to scanner systems

lolo lolo extracts symbols from a sequence of input characters belonging to the ASCII or Unicode sets. lolo scanners can be extended without access to the source code: symbol recognizers can be derived by inheritance and an executing scanner can be reconfigured for different contexts. Recognizer actions are represented by objects which may be replaced at any time. Recognizers need not be based on finite state automata; therefore, lolo can recognize symbols that systems like lex cannot recognize directly.
JLex JLex is a lexical analyzer generator, written for Java, in Java. JLex was developed by Elliot Berk at Princeton University. It is now maintained by C. Scott Ananian.
flex V. Paxson, Flex - Fast lexical analyzer generator, Lawrence Berkeley Laboratory, 1995.
 

Links to parser generators

jay Jay is a yacc for Java: It takes a grammar, specified in BNF and augmented with semantic actions, and generates tables and an interpreter which recognizes the language defined by the grammar and executes the semantic actions as their corresponding phrases are recognized. The grammar should be LR(1), but there are disambiguating rules and techniques. Jay is implemented in C, but actions, parsing tables, and the interpreter use Java. The grammar allows complete control over the class structure of the generated parser.
ANTLR ANTLR, ANother Tool for Language Recognition, (formerly PCCTS) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing C++ or Java actions.
JavaCC Sun's JavaCC, a parser generator for Java.
CUP CUP is a Java based Constructor of Useful Parsers. CUP is a system for generating LALR parsers and serves the same role as the widely used program yacc.


Copyright © 1999, 2000 by Axel-Tobias Schreiner and Bernd Kühl.