OMeta for JavaScript
JavaScript Makefile
Pull request Compare This branch is 449 commits ahead, 17 commits behind alexwarth:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin
doc
lib
test
.gitignore
.travis.yml
GNUmakefile
LICENSE
README.md
package.json

README.md

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

OMetaJS Build Status

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.

Installation

Installing npm (node package manager)

$ curl http://npmjs.org/install.sh | sh

Installing ometajs

$ [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

Usage

Command line

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

Usage as CommonJS module

var ometajs = require('ometajs');

var ast = ometajs.grammars.BSJSParser.matchAll('var x = 1', 'topLevel'),
    code = ometajs.grammars.BSJSTranslator.matchAll([ast], 'trans');

Example grammar

ometa Simple {
  top = [#simple] -> 'ok'
}

More information about OMetaJS syntax.

Use cases

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

Some projects that are using OMetaJS:

More information

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.

Contributors