@bablr/language-en-esnext
Version:
A BABLR language tracking the most current approved EcmaScript specification
53 lines • 2.34 kB
JavaScript
/* @macrome
* @generatedby @bablr/macrome-generator-bablr
* @generatedfrom ./es2018.macro.js#31e96c73e70e3eb8e8000d079299b3a5770eaed7
* This file is autogenerated. Please do not edit it directly.
* When editing run `npx macrome watch` then change the file this is generated from.
*/
import _applyDecs from "@babel/runtime/helpers/applyDecs2305";
var _es2017$atrivialGramm;
let _initProto, _ObjectDecs;
import { re, spam as m } from '@bablr/boot';
import { CoveredBy, Node, UndefinedAttributes } from '@bablr/helpers/decorators';
import { o, defineAttribute, eat, eatMatch, match, fail } from '@bablr/helpers/grammar';
import { triviaEnhancer } from '@bablr/helpers/trivia';
import * as Comment from '@bablr/language-en-c-comments';
import * as es2017 from './es2017.js';
export const dependencies = {
Comment
};
export { powerLevels, reservedWords, assignmentOperators, assignmentOperatorAlternatives, unaryPrefixOperators, unaryPrefixOperatorAlternatives, unaryPostfixOperators, unaryPostfixOperatorAlternatives, getBinaryOperatorAlternatives } from './es2017.js';
export const canonicalURL = 'https://bablr.org/languages/universe/es6';
export const atrivialGrammar = class ES2018Grammar extends (_es2017$atrivialGramm = es2017.atrivialGrammar) {
static {
[_initProto] = _applyDecs(this, [[_ObjectDecs, 2, "Object"], [Node, 2, "SpreadElement"]], [], 0, void 0, _es2017$atrivialGramm).e;
}
constructor(...args) {
super(...args);
_initProto(this);
}
*[(_ObjectDecs = [CoveredBy('JSONExpression'), CoveredBy('Expression'), Node], "Object")]() {
yield eat(m`open: <*Punctuator '{' { balanced: '}' } />`);
yield eat(m`properties[]$: <_List />`, o({
element: m`<__ObjectMember />`,
separator: m`separatorTokens[]: <*Punctuator ',' />`,
allowTrailingSeparator: true
}));
yield eat(m`close: <*Punctuator '}' { balancer: true } />`);
}
*ObjectMember() {
if (yield eatMatch(m`<SpreadElement '...' />`)) {} else {
yield eat(m`<Property />`);
}
}
*SpreadElement() {
yield eat(m`sigilToken: <*Punctuator '...' />`);
yield eat(m`value+$: <__Expression />`, o({
power: 32
}));
}
};
export const grammar = triviaEnhancer({
triviaIsAllowed: s => s.span === 'Bare',
triviaMatcher: m`#: :Comment: <_Trivia /[ \n\r\t]|\/\/|\/\*/ />`
}, atrivialGrammar);