____ __ ___ __ _______
/ __ \/ |/ /__ / /_____ _ / / ___/
/ / / / /|_/ / _ \/ __/ __ `/_ / /\__ \
/ /_/ / / / / __/ /_/ /_/ / /_/ /___/ /
\____/_/ /_/\___/\__/\__,_/\____//____/
OMetaJS is a JavaScript implementation of the 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 programatically 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 CommonJS
compatible javascript file.
Also you may require('*.ometajs')
files directly without compilation.
(OmetaJS is patching require.extensions
as CoffeeScript does).
var ometajs = require('ometajs');
var ast = ometajs.BSJSParser.matchAll('var x = 1', 'topLevel'),
code = ometajs.BSJSTranslator.matchAll([ast], 'trans');
Example
ometa Simple {
top = [#simple] -> 'ok'
}
More information about OmetaJS syntax.
Fast prototyping and building your own parser/language. Processing/traversing complex AST.
Some projects that are using this:
To study OmetaJS or ask questions about it's core you can try to reach out original repository author Alessandro Warth or me.
Here is documented code.