A object-oriented language for pattern matching
``/_ / /\__ \
____ __ ___ __ _______
/ __ \/ |/ /__ / /_____ _ / / ___/
/ / / / /|_/ / _ \/ __/ __
/ /_/ / / / / __/ /_/ /_/ / /_/ /___/ /
\____/_/ /_/\___/\__/\__,_/\____//____/
``
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.
` bash`
$ curl http://npmjs.org/install.sh | sh
` bash`
$ [sudo] npm install ometajs -g
Note: If you are using ometajs _programmatically_ you should not install
it globally.
` bash`
$ cd /path/to/your/project
$ npm install ometajs
`bash
$ 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][0]-
compatible javascript file.
You may also require('*.ometajs') files directly without compilation.require.extensions
(OMetaJS is patching as [CoffeeScript][1] does).
`javascript
var ometajs = require('ometajs');
var ast = ometajs.grammars.BSJSParser.matchAll('var x = 1', 'topLevel'),
code = ometajs.grammars.BSJSTranslator.matchAll([ast], 'trans');
`
`javascript``
ometa Simple {
top = [#simple] -> 'ok'
}
[More information][5] about OMetaJS syntax.
Quickly prototype and buildyour own parser/language. Process/traverse complex
[AST][2].
Some projects that are using OMetaJS:
- XJST
- ShmakoWiki
- OmetaHighlighter
To study OMetaJS or ask questions about its core you can reach out to the
[original repository][3] author [Alessandro Warth][4] or me.
Here is the [documented code][5].
#### Contributors
* [Alessandro Warth][4]
* Takashi Yamamiya
* Sergey Berezhnoy
* Nikita Vasilyev
* Fedor Indutny
* Jason Davies
[0]: http://www.commonjs.org/
[1]: http://coffeescript.org/
[2]: http://en.wikipedia.org/wiki/Abstract_syntax_tree
[3]: http://www.tinlizzie.org/ometa/
[4]: http://github.com/alexwarth
[5]: http://veged.github.com/ometa-js/