0.7.2 • Published 5 months ago
bablr v0.7.2
bablr
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
5 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