OMeta: an Object-Oriented Language for Pattern Matching

OMeta is a new object-oriented language for pattern matching. It is based on a variant of Parsing Expression Grammars (PEGs) which we have extended to handle arbitrary data types. OMeta's general-purpose pattern matching facilities provide a natural and convenient way for programmers to implement tokenizers, parsers, visitors, and tree transformers, all of which can be extended in interesting ways using familiar object-oriented mechanisms.

I am about to release a new version of OMeta/Squeak. Read all about it (and download the release candidate) here.

Documentation

The most in-depth and up-to-date piece description of OMeta is in Chapter 2 of my Ph.D. dissertation.

There are also some older materials that may be of interest:
  • The original Dynamic Languages Symposium 2007 paper and slides.
  • My Smalltalk Solutions '08 keynote: abstract, slides, and video.

  • Also make sure to check out the OMeta mailing list and its archives.

    Downloads

    Platform Web Page Files Comments
      JavaScript (new version) click here git clone http://github.com/alexwarth/ometa-js.git Works on Firefox, Safari (I haven't tested it on IE yet)
    JavaScript (old version) click here Works on Firefox, Safari, and IE
    Squeak n/a OMeta.sar Works on the 3.8, 3.9, Croquet, and OLPC images
    Javascript.sar A JavaScript implementation written in OMeta/Squeak

    There are also several third-party implementations — here are the ones that I know about:

    Host Language Name Authors Notes
    C# OMeta# Jeff Moser
    C# IronMeta Gordon Tisher
    Scheme OMeta for Scheme Tony Garnock-Jones
    Common Lisp OMeta in Common Lisp John Leuner
    Python Parsley Florian Sesser Parsley is a parsing library for people who find parsers scary or annoying
    Python PyMeta Allen Short
    Python PyMeta2 Waldemar Kornewald et al. Port of PyMeta that supports the more lightweight syntax of OMeta 2
    Ruby Ruby-OMeta Aquasync

    Questions?

    Please e-mail me if you have questions, comments, or suggestions.


    Click here to return to my home page.