module.exports = { 
 | 
    name: 'Nth', 
 | 
    structure: { 
 | 
        nth: ['AnPlusB', 'Identifier'], 
 | 
        selector: ['SelectorList', null] 
 | 
    }, 
 | 
    parse: function(allowOfClause) { 
 | 
        this.scanner.skipSC(); 
 | 
  
 | 
        var start = this.scanner.tokenStart; 
 | 
        var end = start; 
 | 
        var selector = null; 
 | 
        var query; 
 | 
  
 | 
        if (this.scanner.lookupValue(0, 'odd') || this.scanner.lookupValue(0, 'even')) { 
 | 
            query = this.Identifier(); 
 | 
        } else { 
 | 
            query = this.AnPlusB(); 
 | 
        } 
 | 
  
 | 
        this.scanner.skipSC(); 
 | 
  
 | 
        if (allowOfClause && this.scanner.lookupValue(0, 'of')) { 
 | 
            this.scanner.next(); 
 | 
  
 | 
            selector = this.SelectorList(); 
 | 
  
 | 
            if (this.needPositions) { 
 | 
                end = this.getLastListNode(selector.children).loc.end.offset; 
 | 
            } 
 | 
        } else { 
 | 
            if (this.needPositions) { 
 | 
                end = query.loc.end.offset; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return { 
 | 
            type: 'Nth', 
 | 
            loc: this.getLocation(start, end), 
 | 
            nth: query, 
 | 
            selector: selector 
 | 
        }; 
 | 
    }, 
 | 
    generate: function(node) { 
 | 
        this.node(node.nth); 
 | 
        if (node.selector !== null) { 
 | 
            this.chunk(' of '); 
 | 
            this.node(node.selector); 
 | 
        } 
 | 
    } 
 | 
}; 
 |