lib/parser.js
function() {
    var arr
      , group = new nodes.Group
      , scope = this.selectorScope
      , isRoot = 'root' == this.currentState()
      , selector;

    do {
      // Clobber newline after ,
      this.accept('newline');

      arr = this.selectorParts();

      // Push the selector
      if (isRoot && scope) arr.unshift(new nodes.Literal(scope + ' '));
      if (arr.length) {
        selector = new nodes.Selector(arr);
        selector.lineno = arr[0].lineno;
        selector.column = arr[0].column;
        group.push(selector);
      }
    } while (this.accept(',') || this.accept('newline'));

    if ('selector-parts' == this.currentState()) return group.nodes;

    this.state.push('selector');
    group.block = this.block(group);
    this.state.pop();

    return group;
  }
function() {
    var arr
      , group = new nodes.Group
      , scope = this.selectorScope
      , isRoot = 'root' == this.currentState()
      , selector;

    do {
      // Clobber newline after ,
      this.accept('newline');

      arr = this.selectorParts();

      // Push the selector
      if (isRoot && scope) arr.unshift(new nodes.Literal(scope + ' '));
      if (arr.length) {
        selector = new nodes.Selector(arr);
        selector.lineno = arr[0].lineno;
        selector.column = arr[0].column;
        group.push(selector);
      }
    } while (this.accept(',') || this.accept('newline'));

    if ('selector-parts' == this.currentState()) return group.nodes;

    this.state.push('selector');
    group.block = this.block(group);
    this.state.pop();

    return group;
  }
function ( ) { var arr , group = new nodes . Group , scope = this . selectorScope , isRoot = 'root' == this . currentState ( ) , selector ; do { // Clobber newline after , this . accept ( 'newline' ) ; arr = this . selectorParts ( ) ; // Push the selector if ( isRoot && scope ) arr . unshift ( new nodes . Literal ( scope + ' ' ) ) ; if ( arr . length ) { selector = new nodes . Selector ( arr ) ; selector . lineno = arr [ 0 ] . lineno ; selector . column = arr [ 0 ] . column ; group . push ( selector ) ; } } while ( this . accept ( ',' ) || this . accept ( 'newline' ) ) ; if ( 'selector-parts' == this . currentState ( ) ) return group . nodes ; this . state . push ( 'selector' ) ; group . block = this . block ( group ) ; this . state . pop ( ) ; return group ; }
selector ',' selector
| selector newline selector
| selector block
selector selector | selector newline selector | selector block