oedipus_lex version 2.2.0 has been released!
Oedipus Lex is a lexer generator in the same family as Rexical and
Rex. Oedipus Lex is my independent lexer fork of Rexical. Rexical was
in turn a fork of Rex. We’ve been unable to contact the author of rex
in order to take it over, fix it up, extend it, and relicense it to
MIT. So, Oedipus was written clean-room in order to bypass licensing
constraints (and because bootstrapping is fun).
Oedipus brings a lot of extras to the table and at this point is only
historically related to rexical. The syntax has changed enough that
any rexical lexer will have to be tweaked to work inside of oedipus.
At the very least, you need to add slashes to all your regexps.
Oedipus, like rexical, is based primarily on generating code much like
you would a hand-written lexer. It is not a table or hash driven
lexer. It use StrScanner within a multi-level case statement. As such,
Oedipus matches on the first match, not the longest (like lex and
This documentation is not meant to bypass any prerequisite knowledge
on lexing or parsing. If you’d like to study the subject in further
detail, please try [TIN321] or the [LLVM Tutorial] or some other good
resource for CS learning. Books… books are good. I like books.
2.2.0 / 2014-03-14
3 minor enhancements:
- Added debug rake task.
- Added rule grouping. Naive benchmarking seems to show ~15%
improvement in ruby_parser.
- Refactored rule handling part of template to its own variable.