Oolex (object-oriented lexer) presents a new idea for lexical analysis: the scanner is strictly based on the object orientation paradigm. Oolex extracts symbols from a sequence of Unicode input characters. It 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. Oolex need not be based on finite state automata; therefore, it can recognize symbols that systems like flex cannot recognize directly. Oolex can be used for rapid prototyping: most of the existing recognizers can represent themselves as regular expressions for the Java based JLex.
lolo is the successor to OOlex. Both tools are developed in 2000 (OOlex) and 2001 (lolo)as part of Bernd Kühl's PhD thesis about object-orientation in compiler construction.
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
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.
|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.|