0.7.2 • Published 4 months ago

bablr v0.7.2

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

bablr

come chat on Discord

This is the priary API package for BABLR. Use it in combination with a BABLR language definition to perform parsing.

Usage

import { i, spam } from '@bablr/boot';
import { buildTag } from 'bablr';
import { buildCovers } from '@bablr/helpers/decorators';

const language = {
  canonicalURL:
    'https://bablr.org/languages/example/digits',
  grammar: class {
    constructor() {
      // If you can use decorators, `@Node` on a production will do this for you
      this.covers = buildCovers({
        [Symbol.for('@bablr/node')]: ['Number', 'Digit'],
      });
    }

    *Number() {
      while (yield i`eatMatch(<*Digit /> 'digits[]')`);
    }

    *Digit() {
      yield i`eat(/\d/)`;
    }
  },
};

const matcher = spam`<'https://bablr.org/languages/example/digits':Number />`;
const digits = buildTag(language, matcher);

digits`42`;

// <!0:cstml bablr-language="https://bablr.org/languages/example/digits">
// <$>
//   .:
//   <$Number>
//     digits[]: []
//     digits[]: <*Digit '4' />
//     digits[]: <*Digit '2' />
//   </>
// </>

Prior Art

BABLR is actually portmanteau of Babel and ANTLR. It would be reasonable to describe this project as being a mixture of the ideas from those two, with a bit of help from SrcML, Tree-sitter, and the fabulous Redux.

It is also designed with the needs of Prettier and ESLint in mind.

0.7.2

4 months ago

0.7.1

5 months ago

0.7.0

5 months ago

0.6.1

8 months ago

0.6.0

9 months ago

0.5.0

10 months ago

0.4.4

11 months ago

0.4.3

11 months ago

0.4.2

11 months ago

0.4.1

11 months ago

0.4.0

11 months ago

0.3.0

12 months ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.3

1 year ago

0.1.0

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.0.0

1 year ago