A parser for Hidnley Milner notations
JavaScript Nearley
Switch branches/tags
Nothing to show
Clone or download
brusherru Merge pull request #2 from xodio/babelify-grammar
Babelify nearley grammar.js and bump version
Latest commit 8aeb32a Jan 12, 2018
Permalink
Failed to load latest commit information.
src
test
.babelrc
.gitignore
.npmignore
README.md
package.json
yarn.lock

README.md

Hindley Milner Parser

This is a parser for Haskell-alike Hindley Milner signatures with some sugar added to support JS-specific things like methods.

It is a drop-in replacement for hindley-milner-parser-js package which is based on mona. Mona has few problems: it is very slow if used with Mocha test runner and it imports babel-polyfill by hard-code what makes it impossible to use within projects that use another version of babel-polyfill.

Usage

Install with:

$ yarn add hm-parser
# or
$ npm install hm-parser

Then:

HMP = require('hm-parser');

HMP.parse('hello :: a -> Maybe a');

// returns:
// {
//   name: 'hello',
//   constraints: [],
//   type:
//     {type: 'function', text: '', children: [
//       {type: 'typevar', text: 'a', children: []},
//       {type: 'typeConstructor', text: 'Maybe', children: [
//         {type: 'typevar', text: 'a', children: []}]}]}

See tests for more examples.

License

MIT