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.
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. |