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