Sha256: b4968ba4223ee854205f90e555892fafbb825df60461a81cad48be37175e969b
Contents?: true
Size: 1.22 KB
Versions: 19
Compression:
Stored size: 1.22 KB
Contents
var TYPE = require('../../tokenizer').TYPE; var IDENTIFIER = TYPE.Identifier; var ASTERISK = TYPE.Asterisk; var VERTICALLINE = TYPE.VerticalLine; function eatIdentifierOrAsterisk() { if (this.scanner.tokenType !== IDENTIFIER && this.scanner.tokenType !== ASTERISK) { this.scanner.error('Identifier or asterisk is expected'); } this.scanner.next(); } // ident // ident|ident // ident|* // * // *|ident // *|* // |ident // |* module.exports = { name: 'TypeSelector', structure: { name: String }, parse: function() { var start = this.scanner.tokenStart; if (this.scanner.tokenType === VERTICALLINE) { this.scanner.next(); eatIdentifierOrAsterisk.call(this); } else { eatIdentifierOrAsterisk.call(this); if (this.scanner.tokenType === VERTICALLINE) { this.scanner.next(); eatIdentifierOrAsterisk.call(this); } } return { type: 'TypeSelector', loc: this.getLocation(start, this.scanner.tokenStart), name: this.scanner.substrToCursor(start) }; }, generate: function(node) { this.chunk(node.name); } };
Version data entries
19 entries across 18 versions & 4 rubygems