UNPKG

@bablr/language-en-esnext

Version:

A BABLR language tracking the most current approved EcmaScript specification

53 lines 2.34 kB
/* @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);