function () {
                var selectors, rules, debugInfo;

                parserInput.save();

                if (context.dumpLineNumbers) {
                    debugInfo = getDebugInfo(parserInput.i);
                }

                selectors = this.selectors();

                if (selectors && (rules = this.block())) {
                    parserInput.forget();
                    var ruleset = new(tree.Ruleset)(selectors, rules, context.strictImports);
                    if (context.dumpLineNumbers) {
                        ruleset.debugInfo = debugInfo;
                    }
                    return ruleset;
                } else {
                    parserInput.restore();
                }
            }
function () {
                var selectors, rules, debugInfo;

                parserInput.save();

                if (context.dumpLineNumbers) {
                    debugInfo = getDebugInfo(parserInput.i);
                }

                selectors = this.selectors();

                if (selectors && (rules = this.block())) {
                    parserInput.forget();
                    var ruleset = new(tree.Ruleset)(selectors, rules, context.strictImports);
                    if (context.dumpLineNumbers) {
                        ruleset.debugInfo = debugInfo;
                    }
                    return ruleset;
                } else {
                    parserInput.restore();
                }
            }
function ( ) { var selectors , rules , debugInfo ; parserInput . save ( ) ; if ( context . dumpLineNumbers ) { debugInfo = getDebugInfo ( parserInput . i ) ; } selectors = this . selectors ( ) ; if ( selectors && ( rules = this . block ( ) ) ) { parserInput . forget ( ) ; var ruleset = new ( tree . Ruleset ) ( selectors , rules , context . strictImports ) ; if ( context . dumpLineNumbers ) { ruleset . debugInfo = debugInfo ; } return ruleset ; } else { parserInput . restore ( ) ; } }
div, .class, body > p {...}
div . class body > p { ... }