import { WhiteSpace, Comment, Ident, Function, Colon, LeftParenthesis } from '../../tokenizer/index.js'; function consumeRaw() { return this.createSingleNodeList( this.Raw(this.tokenIndex, null, false) ); } function parentheses() { this.skipSC(); if (this.tokenType === Ident && this.lookupNonWSType(1) === Colon) { return this.createSingleNodeList( this.Declaration() ); } return readSequence.call(this); } function readSequence() { const children = this.createList(); let child; this.skipSC(); scan: while (!this.eof) { switch (this.tokenType) { case Comment: case WhiteSpace: this.next(); continue; case Function: child = this.Function(consumeRaw, this.scope.AtrulePrelude); break; case Ident: child = this.Identifier(); break; case LeftParenthesis: child = this.Parentheses(parentheses, this.scope.AtrulePrelude); break; default: break scan; } children.push(child); } return children; } export default { parse: { prelude() { const children = readSequence.call(this); if (this.getFirstListNode(children) === null) { this.error('Condition is expected'); } return children; }, block() { return this.Block(false); } } };