ometajs

A object-oriented language for pattern matching

   ____  __  ___     __            _______
  / __ \/  |/  /__  / /_____ _    / / ___/
 / / / / /|_/ / _ \/ __/ __ `/_  / /\__ \
/ /_/ / /  / /  __/ /_/ /_/ / /_/ /___/ /
\____/_/  /_/\___/\__/\__,_/\____//____/

OMetaJS

OMetaJS is a JavaScript implementation of OMeta, an object-oriented language for pattern matching.

This is a node.js module for developing and using such pattern matching grammars.

$ curl http://npmjs.org/install.sh | sh
$ [sudo] npm install ometajs -g

Note: If you are using ometajs programmatically you should not install it globally.

$ cd /path/to/your/project
$ npm install ometajs
$ ometajs2js --help
 
Usage:
  ometajs2js [OPTIONS] [ARGS]
 
 
Options:
  -h, --help : Help
  -v, --version : Version
  -i INPUT, --input=INPUT : Input file (default: stdin)
  -o OUTPUT, --output=OUTPUT : Output file (default: stdout)
  --root=ROOT : Path to root module (default: ometajs)

ometajs2js will take input *.ometajs file and produce a CommonJS- compatible javascript file.

You may also require('*.ometajs') files directly without compilation. (OMetaJS is patching require.extensions as CoffeeScript does).

var ometajs = require('ometajs');
 
var ast = ometajs.grammars.BSJSParser.matchAll('var x = 1', 'topLevel'),
    code = ometajs.grammars.BSJSTranslator.matchAll([ast], 'trans');
ometa Simple {
  top = [#simple] -> 'ok'
}

More information about OMetaJS syntax.

Quickly prototype and buildyour own parser/language. Process/traverse complex AST.

Some projects that are using OMetaJS:

To study OMetaJS or ask questions about its core you can reach out to the original repository author Alessandro Warth or me.

Here is the documented code.