@joshmarinacci/ometa-js

1.3.5 • Public • Published
   ____  __  ___     __            _______
  / __ \/  |/  /__  / /_____ _    / / ___/
 / / / / /|_/ / _ \/ __/ __ `/_  / /\__ \
/ /_/ / /  / /  __/ /_/ /_/ / /_/ /___/ /
\____/_/  /_/\___/\__/\__,_/\____//____/

Description

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 ometajs

$ [sudo] npm install ometa-js -g

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

$ cd /path/to/your/project
$ npm install ometa-js

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/AMD/Browser compatible javascript file.

Also you may require('*.ometajs') files directly without compilation. (OmetaJS is patching require.extensions as CoffeeScript does).

Using as CommonJS module

var ometajs = require('ometa-js');

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

Example

Example grammar

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

More information about OmetaJS syntax.

Use cases

Fast prototyping and building your own parser/language. Processing/traversing complex AST.

Some projects that are using this:

More information

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.

Contributors

Readme

Keywords

none

Package Sidebar

Install

npm i @joshmarinacci/ometa-js

Weekly Downloads

0

Version

1.3.5

License

none

Last publish

Collaborators

  • joshmarinacci