You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
var TYPE = require('../../tokenizer').TYPE;
var WHITESPACE = TYPE.WhiteSpace; var COMMENT = TYPE.Comment; var IDENT = TYPE.Ident; var FUNCTION = TYPE.Function; var COLON = TYPE.Colon; var LEFTPARENTHESIS = TYPE.LeftParenthesis;
function consumeRaw() { return this.createSingleNodeList( this.Raw(this.scanner.tokenIndex, null, false) ); }
function parentheses() { this.scanner.skipSC();
if (this.scanner.tokenType === IDENT && this.lookupNonWSType(1) === COLON) { return this.createSingleNodeList( this.Declaration() ); }
return readSequence.call(this); }
function readSequence() { var children = this.createList(); var space = null; var child;
this.scanner.skipSC();
scan: while (!this.scanner.eof) { switch (this.scanner.tokenType) { case WHITESPACE: space = this.WhiteSpace(); continue;
case COMMENT: this.scanner.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; }
if (space !== null) { children.push(space); space = null; }
children.push(child); }
return children; }
module.exports = { parse: { prelude: function() { var children = readSequence.call(this);
if (this.getFirstListNode(children) === null) { this.error('Condition is expected'); }
return children; }, block: function() { return this.Block(false); } } };
|