Package org.freud.analysed.css.parser

Source Code of org.freud.analysed.css.parser.CssParser$attrib_return

/*
* Copyright 2013 LMAX Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// $ANTLR 3.1.2 ./css/src/main/grammar/Css.g 2013-04-08 17:17:45

package org.freud.analysed.css.parser;

import org.antlr.runtime.BaseRecognizer;
import org.antlr.runtime.BitSet;
import org.antlr.runtime.DFA;
import org.antlr.runtime.EarlyExitException;
import org.antlr.runtime.MismatchedSetException;
import org.antlr.runtime.NoViableAltException;
import org.antlr.runtime.Parser;
import org.antlr.runtime.ParserRuleReturnScope;
import org.antlr.runtime.RecognitionException;
import org.antlr.runtime.RecognizerSharedState;
import org.antlr.runtime.Token;
import org.antlr.runtime.TokenStream;
import org.antlr.runtime.tree.CommonTree;
import org.antlr.runtime.tree.CommonTreeAdaptor;
import org.antlr.runtime.tree.RewriteEarlyExitException;
import org.antlr.runtime.tree.RewriteRuleSubtreeStream;
import org.antlr.runtime.tree.RewriteRuleTokenStream;
import org.antlr.runtime.tree.TreeAdaptor;

/**
* Simplified version of grammar CSS grammar - http://www.antlr.org/grammar/1214945003224/csst3.g
*/
public class CssParser extends Parser {
    public static final String[] tokenNames = new String[]{
            "<invalid>", "<EOR>", "<DOWN>", "<UP>", "IMPORT", "NESTED", "NEST", "RULE", "ATTRIB", "CHILD", "ADJACENT_SIBLING", "ATTRIBEQUAL", "HASVALUE", "BEGINSWITH", "PSEUDO", "PROPERTY", "COLOUR", "FUNCTION", "TAG", "ID", "CLASS", "UNIVERSAL", "IDENT", "SL_COMMENT", "COMMENT", "WS", "'@import'", "'@include'", "'@'", "'{'", "'}'", "','", "'>'", "'+'", "';'", "'*'", "'#'", "'.'", "':'", "'::'", "'['", "']'", "'='", "'~='", "'|='", "'%'", "'px'", "'cm'", "'mm'", "'in'", "'pt'", "'pc'", "'em'", "'ex'", "'deg'", "'rad'", "'grad'", "'ms'", "'s'", "'hz'", "'khz'", "'('", "')'"
    };
    public static final int FUNCTION = 17;
    public static final int CLASS = 20;
    public static final int ATTRIB = 8;
    public static final int T__29 = 29;
    public static final int T__28 = 28;
    public static final int T__27 = 27;
    public static final int T__62 = 62;
    public static final int T__26 = 26;
    public static final int HASVALUE = 12;
    public static final int PSEUDO = 14;
    public static final int NEST = 6;
    public static final int ID = 19;
    public static final int T__61 = 61;
    public static final int ATTRIBEQUAL = 11;
    public static final int EOF = -1;
    public static final int T__60 = 60;
    public static final int T__55 = 55;
    public static final int T__56 = 56;
    public static final int T__57 = 57;
    public static final int T__58 = 58;
    public static final int IMPORT = 4;
    public static final int T__51 = 51;
    public static final int T__52 = 52;
    public static final int T__53 = 53;
    public static final int T__54 = 54;
    public static final int ADJACENT_SIBLING = 10;
    public static final int T__59 = 59;
    public static final int IDENT = 22;
    public static final int COLOUR = 16;
    public static final int COMMENT = 24;
    public static final int T__50 = 50;
    public static final int CHILD = 9;
    public static final int T__42 = 42;
    public static final int T__43 = 43;
    public static final int T__40 = 40;
    public static final int T__41 = 41;
    public static final int T__46 = 46;
    public static final int T__47 = 47;
    public static final int RULE = 7;
    public static final int T__44 = 44;
    public static final int BEGINSWITH = 13;
    public static final int T__45 = 45;
    public static final int T__48 = 48;
    public static final int T__49 = 49;
    public static final int TAG = 18;
    public static final int NESTED = 5;
    public static final int T__30 = 30;
    public static final int T__31 = 31;
    public static final int T__32 = 32;
    public static final int WS = 25;
    public static final int T__33 = 33;
    public static final int T__34 = 34;
    public static final int T__35 = 35;
    public static final int T__36 = 36;
    public static final int PROPERTY = 15;
    public static final int T__37 = 37;
    public static final int T__38 = 38;
    public static final int T__39 = 39;
    public static final int SL_COMMENT = 23;
    public static final int UNIVERSAL = 21;

    // delegates
    // delegators


    public CssParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }

    public CssParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);

    }

    protected TreeAdaptor adaptor = new CommonTreeAdaptor();

    public void setTreeAdaptor(TreeAdaptor adaptor) {
        this.adaptor = adaptor;
    }

    public TreeAdaptor getTreeAdaptor() {
        return adaptor;
    }

    public String[] getTokenNames() {
        return CssParser.tokenNames;
    }

    public String getGrammarFileName() {
        return "/home/langera/dev/freud/src/grammar/Css.g";
    }


    public static class stylesheet_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "stylesheet"
    // /home/langera/dev/freud/src/grammar/Css.g:40:1: stylesheet : ( importRule )* ( nested | ruleset )+ ;

    public final CssParser.stylesheet_return stylesheet() throws RecognitionException {
        CssParser.stylesheet_return retval = new CssParser.stylesheet_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        CssParser.importRule_return importRule1 = null;

        CssParser.nested_return nested2 = null;

        CssParser.ruleset_return ruleset3 = null;


        try {
            // /home/langera/dev/freud/src/grammar/Css.g:41:2: ( ( importRule )* ( nested | ruleset )+ )
            // /home/langera/dev/freud/src/grammar/Css.g:41:4: ( importRule )* ( nested | ruleset )+
            {
                root_0 = (CommonTree) adaptor.nil();

                // /home/langera/dev/freud/src/grammar/Css.g:41:4: ( importRule )*
                loop1:
                do {
                    int alt1 = 2;
                    int LA1_0 = input.LA(1);

                    if (((LA1_0 >= 26 && LA1_0 <= 27))) {
                        alt1 = 1;
                    }


                    switch (alt1) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:41:4: importRule
                        {
                            pushFollow(FOLLOW_importRule_in_stylesheet131);
                            importRule1 = importRule();

                            state._fsp--;

                            adaptor.addChild(root_0, importRule1.getTree());

                        }
                        break;

                        default:
                            break loop1;
                    }
                }
                while (true);

                // /home/langera/dev/freud/src/grammar/Css.g:41:16: ( nested | ruleset )+
                int cnt2 = 0;
                loop2:
                do {
                    int alt2 = 3;
                    int LA2_0 = input.LA(1);

                    if ((LA2_0 == 28)) {
                        alt2 = 1;
                    }
                    else if ((LA2_0 == IDENT || (LA2_0 >= 35 && LA2_0 <= 37))) {
                        alt2 = 2;
                    }


                    switch (alt2) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:41:17: nested
                        {
                            pushFollow(FOLLOW_nested_in_stylesheet135);
                            nested2 = nested();

                            state._fsp--;

                            adaptor.addChild(root_0, nested2.getTree());

                        }
                        break;
                        case 2:
                            // /home/langera/dev/freud/src/grammar/Css.g:41:26: ruleset
                        {
                            pushFollow(FOLLOW_ruleset_in_stylesheet139);
                            ruleset3 = ruleset();

                            state._fsp--;

                            adaptor.addChild(root_0, ruleset3.getTree());

                        }
                        break;

                        default:
                            if (cnt2 >= 1) {
                                break loop2;
                            }
                            EarlyExitException eee =
                                    new EarlyExitException(2, input);
                            throw eee;
                    }
                    cnt2++;
                }
                while (true);


            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "stylesheet"

    public static class importRule_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "importRule"
    // /home/langera/dev/freud/src/grammar/Css.g:44:1: importRule : ( '@import' | '@include' ) IDENT -> ^( IMPORT IDENT ) ;

    public final CssParser.importRule_return importRule() throws RecognitionException {
        CssParser.importRule_return retval = new CssParser.importRule_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token string_literal4 = null;
        Token string_literal5 = null;
        Token IDENT6 = null;

        CommonTree string_literal4_tree = null;
        CommonTree string_literal5_tree = null;
        CommonTree IDENT6_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleTokenStream stream_26 = new RewriteRuleTokenStream(adaptor, "token 26");
        RewriteRuleTokenStream stream_27 = new RewriteRuleTokenStream(adaptor, "token 27");

        try {
            // /home/langera/dev/freud/src/grammar/Css.g:45:2: ( ( '@import' | '@include' ) IDENT -> ^( IMPORT IDENT ) )
            // /home/langera/dev/freud/src/grammar/Css.g:45:4: ( '@import' | '@include' ) IDENT
            {
                // /home/langera/dev/freud/src/grammar/Css.g:45:4: ( '@import' | '@include' )
                int alt3 = 2;
                int LA3_0 = input.LA(1);

                if ((LA3_0 == 26)) {
                    alt3 = 1;
                }
                else if ((LA3_0 == 27)) {
                    alt3 = 2;
                }
                else {
                    NoViableAltException nvae =
                            new NoViableAltException("", 3, 0, input);

                    throw nvae;
                }
                switch (alt3) {
                    case 1:
                        // /home/langera/dev/freud/src/grammar/Css.g:45:5: '@import'
                    {
                        string_literal4 = (Token) match(input, 26, FOLLOW_26_in_importRule153);
                        stream_26.add(string_literal4);


                    }
                    break;
                    case 2:
                        // /home/langera/dev/freud/src/grammar/Css.g:45:17: '@include'
                    {
                        string_literal5 = (Token) match(input, 27, FOLLOW_27_in_importRule157);
                        stream_27.add(string_literal5);


                    }
                    break;

                }

                IDENT6 = (Token) match(input, IDENT, FOLLOW_IDENT_in_importRule161);
                stream_IDENT.add(IDENT6);


                // AST REWRITE
                // elements: IDENT
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 45:36: -> ^( IMPORT IDENT )
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:45:39: ^( IMPORT IDENT )
                    {
                        CommonTree root_1 = (CommonTree) adaptor.nil();
                        root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(IMPORT, "IMPORT"), root_1);

                        adaptor.addChild(root_1, stream_IDENT.nextNode());

                        adaptor.addChild(root_0, root_1);
                    }

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "importRule"

    public static class nested_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "nested"
    // /home/langera/dev/freud/src/grammar/Css.g:48:1: nested : '@' nest '{' ( properties )? ( nested )* '}' -> ^( NESTED nest ( properties )* ( nested )* ) ;

    public final CssParser.nested_return nested() throws RecognitionException {
        CssParser.nested_return retval = new CssParser.nested_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal7 = null;
        Token char_literal9 = null;
        Token char_literal12 = null;
        CssParser.nest_return nest8 = null;

        CssParser.properties_return properties10 = null;

        CssParser.nested_return nested11 = null;


        CommonTree char_literal7_tree = null;
        CommonTree char_literal9_tree = null;
        CommonTree char_literal12_tree = null;
        RewriteRuleTokenStream stream_30 = new RewriteRuleTokenStream(adaptor, "token 30");
        RewriteRuleTokenStream stream_28 = new RewriteRuleTokenStream(adaptor, "token 28");
        RewriteRuleTokenStream stream_29 = new RewriteRuleTokenStream(adaptor, "token 29");
        RewriteRuleSubtreeStream stream_nested = new RewriteRuleSubtreeStream(adaptor, "rule nested");
        RewriteRuleSubtreeStream stream_nest = new RewriteRuleSubtreeStream(adaptor, "rule nest");
        RewriteRuleSubtreeStream stream_properties = new RewriteRuleSubtreeStream(adaptor, "rule properties");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:49:3: ( '@' nest '{' ( properties )? ( nested )* '}' -> ^( NESTED nest ( properties )* ( nested )* ) )
            // /home/langera/dev/freud/src/grammar/Css.g:49:5: '@' nest '{' ( properties )? ( nested )* '}'
            {
                char_literal7 = (Token) match(input, 28, FOLLOW_28_in_nested183);
                stream_28.add(char_literal7);

                pushFollow(FOLLOW_nest_in_nested185);
                nest8 = nest();

                state._fsp--;

                stream_nest.add(nest8.getTree());
                char_literal9 = (Token) match(input, 29, FOLLOW_29_in_nested187);
                stream_29.add(char_literal9);

                // /home/langera/dev/freud/src/grammar/Css.g:49:18: ( properties )?
                int alt4 = 2;
                int LA4_0 = input.LA(1);

                if ((LA4_0 == IDENT)) {
                    alt4 = 1;
                }
                switch (alt4) {
                    case 1:
                        // /home/langera/dev/freud/src/grammar/Css.g:49:18: properties
                    {
                        pushFollow(FOLLOW_properties_in_nested189);
                        properties10 = properties();

                        state._fsp--;

                        stream_properties.add(properties10.getTree());

                    }
                    break;

                }

                // /home/langera/dev/freud/src/grammar/Css.g:49:30: ( nested )*
                loop5:
                do {
                    int alt5 = 2;
                    int LA5_0 = input.LA(1);

                    if ((LA5_0 == 28)) {
                        alt5 = 1;
                    }


                    switch (alt5) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:49:30: nested
                        {
                            pushFollow(FOLLOW_nested_in_nested192);
                            nested11 = nested();

                            state._fsp--;

                            stream_nested.add(nested11.getTree());

                        }
                        break;

                        default:
                            break loop5;
                    }
                }
                while (true);

                char_literal12 = (Token) match(input, 30, FOLLOW_30_in_nested195);
                stream_30.add(char_literal12);


                // AST REWRITE
                // elements: nested, nest, properties
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 49:42: -> ^( NESTED nest ( properties )* ( nested )* )
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:49:45: ^( NESTED nest ( properties )* ( nested )* )
                    {
                        CommonTree root_1 = (CommonTree) adaptor.nil();
                        root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(NESTED, "NESTED"), root_1);

                        adaptor.addChild(root_1, stream_nest.nextTree());
                        // /home/langera/dev/freud/src/grammar/Css.g:49:60: ( properties )*
                        while (stream_properties.hasNext()) {
                            adaptor.addChild(root_1, stream_properties.nextTree());

                        }
                        stream_properties.reset();
                        // /home/langera/dev/freud/src/grammar/Css.g:49:72: ( nested )*
                        while (stream_nested.hasNext()) {
                            adaptor.addChild(root_1, stream_nested.nextTree());

                        }
                        stream_nested.reset();

                        adaptor.addChild(root_0, root_1);
                    }

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "nested"

    public static class nest_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "nest"
    // /home/langera/dev/freud/src/grammar/Css.g:52:1: nest : IDENT ( IDENT )* ( pseudo )* -> ^( NEST IDENT ( IDENT )* ( pseudo )* ) ;

    public final CssParser.nest_return nest() throws RecognitionException {
        CssParser.nest_return retval = new CssParser.nest_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token IDENT13 = null;
        Token IDENT14 = null;
        CssParser.pseudo_return pseudo15 = null;


        CommonTree IDENT13_tree = null;
        CommonTree IDENT14_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleSubtreeStream stream_pseudo = new RewriteRuleSubtreeStream(adaptor, "rule pseudo");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:53:2: ( IDENT ( IDENT )* ( pseudo )* -> ^( NEST IDENT ( IDENT )* ( pseudo )* ) )
            // /home/langera/dev/freud/src/grammar/Css.g:53:4: IDENT ( IDENT )* ( pseudo )*
            {
                IDENT13 = (Token) match(input, IDENT, FOLLOW_IDENT_in_nest222);
                stream_IDENT.add(IDENT13);

                // /home/langera/dev/freud/src/grammar/Css.g:53:10: ( IDENT )*
                loop6:
                do {
                    int alt6 = 2;
                    int LA6_0 = input.LA(1);

                    if ((LA6_0 == IDENT)) {
                        alt6 = 1;
                    }


                    switch (alt6) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:53:10: IDENT
                        {
                            IDENT14 = (Token) match(input, IDENT, FOLLOW_IDENT_in_nest224);
                            stream_IDENT.add(IDENT14);


                        }
                        break;

                        default:
                            break loop6;
                    }
                }
                while (true);

                // /home/langera/dev/freud/src/grammar/Css.g:53:17: ( pseudo )*
                loop7:
                do {
                    int alt7 = 2;
                    int LA7_0 = input.LA(1);

                    if (((LA7_0 >= 38 && LA7_0 <= 39))) {
                        alt7 = 1;
                    }


                    switch (alt7) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:53:17: pseudo
                        {
                            pushFollow(FOLLOW_pseudo_in_nest227);
                            pseudo15 = pseudo();

                            state._fsp--;

                            stream_pseudo.add(pseudo15.getTree());

                        }
                        break;

                        default:
                            break loop7;
                    }
                }
                while (true);


                // AST REWRITE
                // elements: pseudo, IDENT, IDENT
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 53:25: -> ^( NEST IDENT ( IDENT )* ( pseudo )* )
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:53:28: ^( NEST IDENT ( IDENT )* ( pseudo )* )
                    {
                        CommonTree root_1 = (CommonTree) adaptor.nil();
                        root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(NEST, "NEST"), root_1);

                        adaptor.addChild(root_1, stream_IDENT.nextNode());
                        // /home/langera/dev/freud/src/grammar/Css.g:53:42: ( IDENT )*
                        while (stream_IDENT.hasNext()) {
                            adaptor.addChild(root_1, stream_IDENT.nextNode());

                        }
                        stream_IDENT.reset();
                        // /home/langera/dev/freud/src/grammar/Css.g:53:49: ( pseudo )*
                        while (stream_pseudo.hasNext()) {
                            adaptor.addChild(root_1, stream_pseudo.nextTree());

                        }
                        stream_pseudo.reset();

                        adaptor.addChild(root_0, root_1);
                    }

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "nest"

    public static class ruleset_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "ruleset"
    // /home/langera/dev/freud/src/grammar/Css.g:56:1: ruleset : selectors '{' ( properties )? '}' -> ^( RULE selectors ( properties )* ) ;

    public final CssParser.ruleset_return ruleset() throws RecognitionException {
        CssParser.ruleset_return retval = new CssParser.ruleset_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal17 = null;
        Token char_literal19 = null;
        CssParser.selectors_return selectors16 = null;

        CssParser.properties_return properties18 = null;


        CommonTree char_literal17_tree = null;
        CommonTree char_literal19_tree = null;
        RewriteRuleTokenStream stream_30 = new RewriteRuleTokenStream(adaptor, "token 30");
        RewriteRuleTokenStream stream_29 = new RewriteRuleTokenStream(adaptor, "token 29");
        RewriteRuleSubtreeStream stream_selectors = new RewriteRuleSubtreeStream(adaptor, "rule selectors");
        RewriteRuleSubtreeStream stream_properties = new RewriteRuleSubtreeStream(adaptor, "rule properties");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:57:3: ( selectors '{' ( properties )? '}' -> ^( RULE selectors ( properties )* ) )
            // /home/langera/dev/freud/src/grammar/Css.g:57:5: selectors '{' ( properties )? '}'
            {
                pushFollow(FOLLOW_selectors_in_ruleset257);
                selectors16 = selectors();

                state._fsp--;

                stream_selectors.add(selectors16.getTree());
                char_literal17 = (Token) match(input, 29, FOLLOW_29_in_ruleset259);
                stream_29.add(char_literal17);

                // /home/langera/dev/freud/src/grammar/Css.g:57:19: ( properties )?
                int alt8 = 2;
                int LA8_0 = input.LA(1);

                if ((LA8_0 == IDENT)) {
                    alt8 = 1;
                }
                switch (alt8) {
                    case 1:
                        // /home/langera/dev/freud/src/grammar/Css.g:57:19: properties
                    {
                        pushFollow(FOLLOW_properties_in_ruleset261);
                        properties18 = properties();

                        state._fsp--;

                        stream_properties.add(properties18.getTree());

                    }
                    break;

                }

                char_literal19 = (Token) match(input, 30, FOLLOW_30_in_ruleset264);
                stream_30.add(char_literal19);


                // AST REWRITE
                // elements: selectors, properties
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 57:35: -> ^( RULE selectors ( properties )* )
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:57:38: ^( RULE selectors ( properties )* )
                    {
                        CommonTree root_1 = (CommonTree) adaptor.nil();
                        root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(RULE, "RULE"), root_1);

                        adaptor.addChild(root_1, stream_selectors.nextTree());
                        // /home/langera/dev/freud/src/grammar/Css.g:57:56: ( properties )*
                        while (stream_properties.hasNext()) {
                            adaptor.addChild(root_1, stream_properties.nextTree());

                        }
                        stream_properties.reset();

                        adaptor.addChild(root_0, root_1);
                    }

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "ruleset"

    public static class selectors_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "selectors"
    // /home/langera/dev/freud/src/grammar/Css.g:60:1: selectors : selector ( ',' selector )* ;

    public final CssParser.selectors_return selectors() throws RecognitionException {
        CssParser.selectors_return retval = new CssParser.selectors_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal21 = null;
        CssParser.selector_return selector20 = null;

        CssParser.selector_return selector22 = null;


        CommonTree char_literal21_tree = null;

        try {
            // /home/langera/dev/freud/src/grammar/Css.g:61:2: ( selector ( ',' selector )* )
            // /home/langera/dev/freud/src/grammar/Css.g:61:4: selector ( ',' selector )*
            {
                root_0 = (CommonTree) adaptor.nil();

                pushFollow(FOLLOW_selector_in_selectors289);
                selector20 = selector();

                state._fsp--;

                adaptor.addChild(root_0, selector20.getTree());
                // /home/langera/dev/freud/src/grammar/Css.g:61:13: ( ',' selector )*
                loop9:
                do {
                    int alt9 = 2;
                    int LA9_0 = input.LA(1);

                    if ((LA9_0 == 31)) {
                        alt9 = 1;
                    }


                    switch (alt9) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:61:14: ',' selector
                        {
                            char_literal21 = (Token) match(input, 31, FOLLOW_31_in_selectors292);
                            char_literal21_tree = (CommonTree) adaptor.create(char_literal21);
                            adaptor.addChild(root_0, char_literal21_tree);

                            pushFollow(FOLLOW_selector_in_selectors294);
                            selector22 = selector();

                            state._fsp--;

                            adaptor.addChild(root_0, selector22.getTree());

                        }
                        break;

                        default:
                            break loop9;
                    }
                }
                while (true);


            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "selectors"

    public static class selector_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "selector"
    // /home/langera/dev/freud/src/grammar/Css.g:64:1: selector : elem ( selectorOperation )* ( attrib )* ( pseudo )? -> elem ( selectorOperation )* ( attrib )* ( pseudo )* ;

    public final CssParser.selector_return selector() throws RecognitionException {
        CssParser.selector_return retval = new CssParser.selector_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        CssParser.elem_return elem23 = null;

        CssParser.selectorOperation_return selectorOperation24 = null;

        CssParser.attrib_return attrib25 = null;

        CssParser.pseudo_return pseudo26 = null;


        RewriteRuleSubtreeStream stream_elem = new RewriteRuleSubtreeStream(adaptor, "rule elem");
        RewriteRuleSubtreeStream stream_pseudo = new RewriteRuleSubtreeStream(adaptor, "rule pseudo");
        RewriteRuleSubtreeStream stream_selectorOperation = new RewriteRuleSubtreeStream(adaptor, "rule selectorOperation");
        RewriteRuleSubtreeStream stream_attrib = new RewriteRuleSubtreeStream(adaptor, "rule attrib");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:65:2: ( elem ( selectorOperation )* ( attrib )* ( pseudo )? -> elem ( selectorOperation )* ( attrib )* ( pseudo )* )
            // /home/langera/dev/freud/src/grammar/Css.g:65:4: elem ( selectorOperation )* ( attrib )* ( pseudo )?
            {
                pushFollow(FOLLOW_elem_in_selector308);
                elem23 = elem();

                state._fsp--;

                stream_elem.add(elem23.getTree());
                // /home/langera/dev/freud/src/grammar/Css.g:65:9: ( selectorOperation )*
                loop10:
                do {
                    int alt10 = 2;
                    alt10 = dfa10.predict(input);
                    switch (alt10) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:65:9: selectorOperation
                        {
                            pushFollow(FOLLOW_selectorOperation_in_selector310);
                            selectorOperation24 = selectorOperation();

                            state._fsp--;

                            stream_selectorOperation.add(selectorOperation24.getTree());

                        }
                        break;

                        default:
                            break loop10;
                    }
                }
                while (true);

                // /home/langera/dev/freud/src/grammar/Css.g:65:28: ( attrib )*
                loop11:
                do {
                    int alt11 = 2;
                    int LA11_0 = input.LA(1);

                    if ((LA11_0 == 40)) {
                        alt11 = 1;
                    }


                    switch (alt11) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:65:28: attrib
                        {
                            pushFollow(FOLLOW_attrib_in_selector313);
                            attrib25 = attrib();

                            state._fsp--;

                            stream_attrib.add(attrib25.getTree());

                        }
                        break;

                        default:
                            break loop11;
                    }
                }
                while (true);

                // /home/langera/dev/freud/src/grammar/Css.g:65:36: ( pseudo )?
                int alt12 = 2;
                int LA12_0 = input.LA(1);

                if (((LA12_0 >= 38 && LA12_0 <= 39))) {
                    alt12 = 1;
                }
                switch (alt12) {
                    case 1:
                        // /home/langera/dev/freud/src/grammar/Css.g:65:36: pseudo
                    {
                        pushFollow(FOLLOW_pseudo_in_selector316);
                        pseudo26 = pseudo();

                        state._fsp--;

                        stream_pseudo.add(pseudo26.getTree());

                    }
                    break;

                }


                // AST REWRITE
                // elements: elem, pseudo, attrib, selectorOperation
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 65:44: -> elem ( selectorOperation )* ( attrib )* ( pseudo )*
                {
                    adaptor.addChild(root_0, stream_elem.nextTree());
                    // /home/langera/dev/freud/src/grammar/Css.g:65:53: ( selectorOperation )*
                    while (stream_selectorOperation.hasNext()) {
                        adaptor.addChild(root_0, stream_selectorOperation.nextTree());

                    }
                    stream_selectorOperation.reset();
                    // /home/langera/dev/freud/src/grammar/Css.g:65:72: ( attrib )*
                    while (stream_attrib.hasNext()) {
                        adaptor.addChild(root_0, stream_attrib.nextTree());

                    }
                    stream_attrib.reset();
                    // /home/langera/dev/freud/src/grammar/Css.g:65:80: ( pseudo )*
                    while (stream_pseudo.hasNext()) {
                        adaptor.addChild(root_0, stream_pseudo.nextTree());

                    }
                    stream_pseudo.reset();

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "selector"

    public static class selectorOperation_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "selectorOperation"
    // /home/langera/dev/freud/src/grammar/Css.g:68:1: selectorOperation : ( selectop )? elem -> ( selectop )* elem ;

    public final CssParser.selectorOperation_return selectorOperation() throws RecognitionException {
        CssParser.selectorOperation_return retval = new CssParser.selectorOperation_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        CssParser.selectop_return selectop27 = null;

        CssParser.elem_return elem28 = null;


        RewriteRuleSubtreeStream stream_elem = new RewriteRuleSubtreeStream(adaptor, "rule elem");
        RewriteRuleSubtreeStream stream_selectop = new RewriteRuleSubtreeStream(adaptor, "rule selectop");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:69:2: ( ( selectop )? elem -> ( selectop )* elem )
            // /home/langera/dev/freud/src/grammar/Css.g:69:4: ( selectop )? elem
            {
                // /home/langera/dev/freud/src/grammar/Css.g:69:4: ( selectop )?
                int alt13 = 2;
                int LA13_0 = input.LA(1);

                if (((LA13_0 >= 32 && LA13_0 <= 33))) {
                    alt13 = 1;
                }
                switch (alt13) {
                    case 1:
                        // /home/langera/dev/freud/src/grammar/Css.g:69:4: selectop
                    {
                        pushFollow(FOLLOW_selectop_in_selectorOperation342);
                        selectop27 = selectop();

                        state._fsp--;

                        stream_selectop.add(selectop27.getTree());

                    }
                    break;

                }

                pushFollow(FOLLOW_elem_in_selectorOperation345);
                elem28 = elem();

                state._fsp--;

                stream_elem.add(elem28.getTree());


                // AST REWRITE
                // elements: selectop, elem
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 69:19: -> ( selectop )* elem
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:69:22: ( selectop )*
                    while (stream_selectop.hasNext()) {
                        adaptor.addChild(root_0, stream_selectop.nextTree());

                    }
                    stream_selectop.reset();
                    adaptor.addChild(root_0, stream_elem.nextTree());

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "selectorOperation"

    public static class selectop_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "selectop"
    // /home/langera/dev/freud/src/grammar/Css.g:72:1: selectop : ( '>' -> CHILD | '+' -> ADJACENT_SIBLING );

    public final CssParser.selectop_return selectop() throws RecognitionException {
        CssParser.selectop_return retval = new CssParser.selectop_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal29 = null;
        Token char_literal30 = null;

        CommonTree char_literal29_tree = null;
        CommonTree char_literal30_tree = null;
        RewriteRuleTokenStream stream_32 = new RewriteRuleTokenStream(adaptor, "token 32");
        RewriteRuleTokenStream stream_33 = new RewriteRuleTokenStream(adaptor, "token 33");

        try {
            // /home/langera/dev/freud/src/grammar/Css.g:73:2: ( '>' -> CHILD | '+' -> ADJACENT_SIBLING )
            int alt14 = 2;
            int LA14_0 = input.LA(1);

            if ((LA14_0 == 32)) {
                alt14 = 1;
            }
            else if ((LA14_0 == 33)) {
                alt14 = 2;
            }
            else {
                NoViableAltException nvae =
                        new NoViableAltException("", 14, 0, input);

                throw nvae;
            }
            switch (alt14) {
                case 1:
                    // /home/langera/dev/freud/src/grammar/Css.g:73:4: '>'
                {
                    char_literal29 = (Token) match(input, 32, FOLLOW_32_in_selectop363);
                    stream_32.add(char_literal29);


                    // AST REWRITE
                    // elements:
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 73:8: -> CHILD
                    {
                        adaptor.addChild(root_0, (CommonTree) adaptor.create(CHILD, "CHILD"));

                    }

                    retval.tree = root_0;
                }
                break;
                case 2:
                    // /home/langera/dev/freud/src/grammar/Css.g:74:11: '+'
                {
                    char_literal30 = (Token) match(input, 33, FOLLOW_33_in_selectop379);
                    stream_33.add(char_literal30);


                    // AST REWRITE
                    // elements:
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 74:16: -> ADJACENT_SIBLING
                    {
                        adaptor.addChild(root_0, (CommonTree) adaptor.create(ADJACENT_SIBLING, "ADJACENT_SIBLING"));

                    }

                    retval.tree = root_0;
                }
                break;

            }
            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "selectop"

    public static class properties_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "properties"
    // /home/langera/dev/freud/src/grammar/Css.g:77:1: properties : declaration ( ';' ( declaration )? )* -> ( declaration )+ ;

    public final CssParser.properties_return properties() throws RecognitionException {
        CssParser.properties_return retval = new CssParser.properties_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal32 = null;
        CssParser.declaration_return declaration31 = null;

        CssParser.declaration_return declaration33 = null;


        CommonTree char_literal32_tree = null;
        RewriteRuleTokenStream stream_34 = new RewriteRuleTokenStream(adaptor, "token 34");
        RewriteRuleSubtreeStream stream_declaration = new RewriteRuleSubtreeStream(adaptor, "rule declaration");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:78:2: ( declaration ( ';' ( declaration )? )* -> ( declaration )+ )
            // /home/langera/dev/freud/src/grammar/Css.g:78:4: declaration ( ';' ( declaration )? )*
            {
                pushFollow(FOLLOW_declaration_in_properties395);
                declaration31 = declaration();

                state._fsp--;

                stream_declaration.add(declaration31.getTree());
                // /home/langera/dev/freud/src/grammar/Css.g:78:16: ( ';' ( declaration )? )*
                loop16:
                do {
                    int alt16 = 2;
                    int LA16_0 = input.LA(1);

                    if ((LA16_0 == 34)) {
                        alt16 = 1;
                    }


                    switch (alt16) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:78:17: ';' ( declaration )?
                        {
                            char_literal32 = (Token) match(input, 34, FOLLOW_34_in_properties398);
                            stream_34.add(char_literal32);

                            // /home/langera/dev/freud/src/grammar/Css.g:78:21: ( declaration )?
                            int alt15 = 2;
                            int LA15_0 = input.LA(1);

                            if ((LA15_0 == IDENT)) {
                                alt15 = 1;
                            }
                            switch (alt15) {
                                case 1:
                                    // /home/langera/dev/freud/src/grammar/Css.g:78:21: declaration
                                {
                                    pushFollow(FOLLOW_declaration_in_properties400);
                                    declaration33 = declaration();

                                    state._fsp--;

                                    stream_declaration.add(declaration33.getTree());

                                }
                                break;

                            }


                        }
                        break;

                        default:
                            break loop16;
                    }
                }
                while (true);


                // AST REWRITE
                // elements: declaration
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 78:36: -> ( declaration )+
                {
                    if (!(stream_declaration.hasNext())) {
                        throw new RewriteEarlyExitException();
                    }
                    while (stream_declaration.hasNext()) {
                        adaptor.addChild(root_0, stream_declaration.nextTree());

                    }
                    stream_declaration.reset();

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "properties"

    public static class elem_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "elem"
    // /home/langera/dev/freud/src/grammar/Css.g:81:1: elem : ( '*' -> ^( UNIVERSAL ) | '#' IDENT -> ^( ID IDENT ) | '.' IDENT -> ^( CLASS IDENT ) | IDENT -> ^( TAG IDENT ) );

    public final CssParser.elem_return elem() throws RecognitionException {
        CssParser.elem_return retval = new CssParser.elem_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal34 = null;
        Token char_literal35 = null;
        Token IDENT36 = null;
        Token char_literal37 = null;
        Token IDENT38 = null;
        Token IDENT39 = null;

        CommonTree char_literal34_tree = null;
        CommonTree char_literal35_tree = null;
        CommonTree IDENT36_tree = null;
        CommonTree char_literal37_tree = null;
        CommonTree IDENT38_tree = null;
        CommonTree IDENT39_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleTokenStream stream_35 = new RewriteRuleTokenStream(adaptor, "token 35");
        RewriteRuleTokenStream stream_36 = new RewriteRuleTokenStream(adaptor, "token 36");
        RewriteRuleTokenStream stream_37 = new RewriteRuleTokenStream(adaptor, "token 37");

        try {
            // /home/langera/dev/freud/src/grammar/Css.g:82:2: ( '*' -> ^( UNIVERSAL ) | '#' IDENT -> ^( ID IDENT ) | '.' IDENT -> ^( CLASS IDENT ) | IDENT -> ^( TAG IDENT ) )
            int alt17 = 4;
            switch (input.LA(1)) {
                case 35: {
                    alt17 = 1;
                }
                break;
                case 36: {
                    alt17 = 2;
                }
                break;
                case 37: {
                    alt17 = 3;
                }
                break;
                case IDENT: {
                    alt17 = 4;
                }
                break;
                default:
                    NoViableAltException nvae =
                            new NoViableAltException("", 17, 0, input);

                    throw nvae;
            }

            switch (alt17) {
                case 1:
                    // /home/langera/dev/freud/src/grammar/Css.g:82:4: '*'
                {
                    char_literal34 = (Token) match(input, 35, FOLLOW_35_in_elem421);
                    stream_35.add(char_literal34);


                    // AST REWRITE
                    // elements:
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 82:8: -> ^( UNIVERSAL )
                    {
                        // /home/langera/dev/freud/src/grammar/Css.g:82:11: ^( UNIVERSAL )
                        {
                            CommonTree root_1 = (CommonTree) adaptor.nil();
                            root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(UNIVERSAL, "UNIVERSAL"), root_1);

                            adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;
                }
                break;
                case 2:
                    // /home/langera/dev/freud/src/grammar/Css.g:83:4: '#' IDENT
                {
                    char_literal35 = (Token) match(input, 36, FOLLOW_36_in_elem434);
                    stream_36.add(char_literal35);

                    IDENT36 = (Token) match(input, IDENT, FOLLOW_IDENT_in_elem436);
                    stream_IDENT.add(IDENT36);


                    // AST REWRITE
                    // elements: IDENT
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 83:14: -> ^( ID IDENT )
                    {
                        // /home/langera/dev/freud/src/grammar/Css.g:83:17: ^( ID IDENT )
                        {
                            CommonTree root_1 = (CommonTree) adaptor.nil();
                            root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(ID, "ID"), root_1);

                            adaptor.addChild(root_1, stream_IDENT.nextNode());

                            adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;
                }
                break;
                case 3:
                    // /home/langera/dev/freud/src/grammar/Css.g:84:4: '.' IDENT
                {
                    char_literal37 = (Token) match(input, 37, FOLLOW_37_in_elem451);
                    stream_37.add(char_literal37);

                    IDENT38 = (Token) match(input, IDENT, FOLLOW_IDENT_in_elem453);
                    stream_IDENT.add(IDENT38);


                    // AST REWRITE
                    // elements: IDENT
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 84:14: -> ^( CLASS IDENT )
                    {
                        // /home/langera/dev/freud/src/grammar/Css.g:84:17: ^( CLASS IDENT )
                        {
                            CommonTree root_1 = (CommonTree) adaptor.nil();
                            root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(CLASS, "CLASS"), root_1);

                            adaptor.addChild(root_1, stream_IDENT.nextNode());

                            adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;
                }
                break;
                case 4:
                    // /home/langera/dev/freud/src/grammar/Css.g:85:4: IDENT
                {
                    IDENT39 = (Token) match(input, IDENT, FOLLOW_IDENT_in_elem471);
                    stream_IDENT.add(IDENT39);


                    // AST REWRITE
                    // elements: IDENT
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 85:10: -> ^( TAG IDENT )
                    {
                        // /home/langera/dev/freud/src/grammar/Css.g:85:13: ^( TAG IDENT )
                        {
                            CommonTree root_1 = (CommonTree) adaptor.nil();
                            root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(TAG, "TAG"), root_1);

                            adaptor.addChild(root_1, stream_IDENT.nextNode());

                            adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;
                }
                break;

            }
            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "elem"

    public static class pseudo_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "pseudo"
    // /home/langera/dev/freud/src/grammar/Css.g:88:1: pseudo : ( ( ':' | '::' ) IDENT -> ^( PSEUDO IDENT ) | ( ':' | '::' ) function -> ^( PSEUDO function ) );

    public final CssParser.pseudo_return pseudo() throws RecognitionException {
        CssParser.pseudo_return retval = new CssParser.pseudo_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal40 = null;
        Token string_literal41 = null;
        Token IDENT42 = null;
        Token char_literal43 = null;
        Token string_literal44 = null;
        CssParser.function_return function45 = null;


        CommonTree char_literal40_tree = null;
        CommonTree string_literal41_tree = null;
        CommonTree IDENT42_tree = null;
        CommonTree char_literal43_tree = null;
        CommonTree string_literal44_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleTokenStream stream_39 = new RewriteRuleTokenStream(adaptor, "token 39");
        RewriteRuleTokenStream stream_38 = new RewriteRuleTokenStream(adaptor, "token 38");
        RewriteRuleSubtreeStream stream_function = new RewriteRuleSubtreeStream(adaptor, "rule function");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:89:2: ( ( ':' | '::' ) IDENT -> ^( PSEUDO IDENT ) | ( ':' | '::' ) function -> ^( PSEUDO function ) )
            int alt20 = 2;
            alt20 = dfa20.predict(input);
            switch (alt20) {
                case 1:
                    // /home/langera/dev/freud/src/grammar/Css.g:89:4: ( ':' | '::' ) IDENT
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:89:4: ( ':' | '::' )
                    int alt18 = 2;
                    int LA18_0 = input.LA(1);

                    if ((LA18_0 == 38)) {
                        alt18 = 1;
                    }
                    else if ((LA18_0 == 39)) {
                        alt18 = 2;
                    }
                    else {
                        NoViableAltException nvae =
                                new NoViableAltException("", 18, 0, input);

                        throw nvae;
                    }
                    switch (alt18) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:89:5: ':'
                        {
                            char_literal40 = (Token) match(input, 38, FOLLOW_38_in_pseudo493);
                            stream_38.add(char_literal40);


                        }
                        break;
                        case 2:
                            // /home/langera/dev/freud/src/grammar/Css.g:89:9: '::'
                        {
                            string_literal41 = (Token) match(input, 39, FOLLOW_39_in_pseudo495);
                            stream_39.add(string_literal41);


                        }
                        break;

                    }

                    IDENT42 = (Token) match(input, IDENT, FOLLOW_IDENT_in_pseudo498);
                    stream_IDENT.add(IDENT42);


                    // AST REWRITE
                    // elements: IDENT
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 89:21: -> ^( PSEUDO IDENT )
                    {
                        // /home/langera/dev/freud/src/grammar/Css.g:89:24: ^( PSEUDO IDENT )
                        {
                            CommonTree root_1 = (CommonTree) adaptor.nil();
                            root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(PSEUDO, "PSEUDO"), root_1);

                            adaptor.addChild(root_1, stream_IDENT.nextNode());

                            adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;
                }
                break;
                case 2:
                    // /home/langera/dev/freud/src/grammar/Css.g:90:4: ( ':' | '::' ) function
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:90:4: ( ':' | '::' )
                    int alt19 = 2;
                    int LA19_0 = input.LA(1);

                    if ((LA19_0 == 38)) {
                        alt19 = 1;
                    }
                    else if ((LA19_0 == 39)) {
                        alt19 = 2;
                    }
                    else {
                        NoViableAltException nvae =
                                new NoViableAltException("", 19, 0, input);

                        throw nvae;
                    }
                    switch (alt19) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:90:5: ':'
                        {
                            char_literal43 = (Token) match(input, 38, FOLLOW_38_in_pseudo514);
                            stream_38.add(char_literal43);


                        }
                        break;
                        case 2:
                            // /home/langera/dev/freud/src/grammar/Css.g:90:9: '::'
                        {
                            string_literal44 = (Token) match(input, 39, FOLLOW_39_in_pseudo516);
                            stream_39.add(string_literal44);


                        }
                        break;

                    }

                    pushFollow(FOLLOW_function_in_pseudo519);
                    function45 = function();

                    state._fsp--;

                    stream_function.add(function45.getTree());


                    // AST REWRITE
                    // elements: function
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 90:24: -> ^( PSEUDO function )
                    {
                        // /home/langera/dev/freud/src/grammar/Css.g:90:27: ^( PSEUDO function )
                        {
                            CommonTree root_1 = (CommonTree) adaptor.nil();
                            root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(PSEUDO, "PSEUDO"), root_1);

                            adaptor.addChild(root_1, stream_function.nextTree());

                            adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;
                }
                break;

            }
            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "pseudo"

    public static class attrib_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "attrib"
    // /home/langera/dev/freud/src/grammar/Css.g:93:1: attrib : '[' IDENT ( attribRelate IDENT )? ']' -> ^( ATTRIB IDENT ( attribRelate ( IDENT )* )? ) ;

    public final CssParser.attrib_return attrib() throws RecognitionException {
        CssParser.attrib_return retval = new CssParser.attrib_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal46 = null;
        Token IDENT47 = null;
        Token IDENT49 = null;
        Token char_literal50 = null;
        CssParser.attribRelate_return attribRelate48 = null;


        CommonTree char_literal46_tree = null;
        CommonTree IDENT47_tree = null;
        CommonTree IDENT49_tree = null;
        CommonTree char_literal50_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleTokenStream stream_41 = new RewriteRuleTokenStream(adaptor, "token 41");
        RewriteRuleTokenStream stream_40 = new RewriteRuleTokenStream(adaptor, "token 40");
        RewriteRuleSubtreeStream stream_attribRelate = new RewriteRuleSubtreeStream(adaptor, "rule attribRelate");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:94:2: ( '[' IDENT ( attribRelate IDENT )? ']' -> ^( ATTRIB IDENT ( attribRelate ( IDENT )* )? ) )
            // /home/langera/dev/freud/src/grammar/Css.g:94:4: '[' IDENT ( attribRelate IDENT )? ']'
            {
                char_literal46 = (Token) match(input, 40, FOLLOW_40_in_attrib540);
                stream_40.add(char_literal46);

                IDENT47 = (Token) match(input, IDENT, FOLLOW_IDENT_in_attrib542);
                stream_IDENT.add(IDENT47);

                // /home/langera/dev/freud/src/grammar/Css.g:94:14: ( attribRelate IDENT )?
                int alt21 = 2;
                int LA21_0 = input.LA(1);

                if (((LA21_0 >= 42 && LA21_0 <= 44))) {
                    alt21 = 1;
                }
                switch (alt21) {
                    case 1:
                        // /home/langera/dev/freud/src/grammar/Css.g:94:15: attribRelate IDENT
                    {
                        pushFollow(FOLLOW_attribRelate_in_attrib545);
                        attribRelate48 = attribRelate();

                        state._fsp--;

                        stream_attribRelate.add(attribRelate48.getTree());
                        IDENT49 = (Token) match(input, IDENT, FOLLOW_IDENT_in_attrib547);
                        stream_IDENT.add(IDENT49);


                    }
                    break;

                }

                char_literal50 = (Token) match(input, 41, FOLLOW_41_in_attrib551);
                stream_41.add(char_literal50);


                // AST REWRITE
                // elements: attribRelate, IDENT, IDENT
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 94:40: -> ^( ATTRIB IDENT ( attribRelate ( IDENT )* )? )
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:94:43: ^( ATTRIB IDENT ( attribRelate ( IDENT )* )? )
                    {
                        CommonTree root_1 = (CommonTree) adaptor.nil();
                        root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(ATTRIB, "ATTRIB"), root_1);

                        adaptor.addChild(root_1, stream_IDENT.nextNode());
                        // /home/langera/dev/freud/src/grammar/Css.g:94:59: ( attribRelate ( IDENT )* )?
                        if (stream_attribRelate.hasNext() || stream_IDENT.hasNext()) {
                            adaptor.addChild(root_1, stream_attribRelate.nextTree());
                            // /home/langera/dev/freud/src/grammar/Css.g:94:73: ( IDENT )*
                            while (stream_IDENT.hasNext()) {
                                adaptor.addChild(root_1, stream_IDENT.nextNode());

                            }
                            stream_IDENT.reset();

                        }
                        stream_attribRelate.reset();
                        stream_IDENT.reset();

                        adaptor.addChild(root_0, root_1);
                    }

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "attrib"

    public static class attribRelate_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "attribRelate"
    // /home/langera/dev/freud/src/grammar/Css.g:97:1: attribRelate : ( '=' -> ATTRIBEQUAL | '~=' -> HASVALUE | '|=' -> BEGINSWITH );

    public final CssParser.attribRelate_return attribRelate() throws RecognitionException {
        CssParser.attribRelate_return retval = new CssParser.attribRelate_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal51 = null;
        Token string_literal52 = null;
        Token string_literal53 = null;

        CommonTree char_literal51_tree = null;
        CommonTree string_literal52_tree = null;
        CommonTree string_literal53_tree = null;
        RewriteRuleTokenStream stream_43 = new RewriteRuleTokenStream(adaptor, "token 43");
        RewriteRuleTokenStream stream_44 = new RewriteRuleTokenStream(adaptor, "token 44");
        RewriteRuleTokenStream stream_42 = new RewriteRuleTokenStream(adaptor, "token 42");

        try {
            // /home/langera/dev/freud/src/grammar/Css.g:98:2: ( '=' -> ATTRIBEQUAL | '~=' -> HASVALUE | '|=' -> BEGINSWITH )
            int alt22 = 3;
            switch (input.LA(1)) {
                case 42: {
                    alt22 = 1;
                }
                break;
                case 43: {
                    alt22 = 2;
                }
                break;
                case 44: {
                    alt22 = 3;
                }
                break;
                default:
                    NoViableAltException nvae =
                            new NoViableAltException("", 22, 0, input);

                    throw nvae;
            }

            switch (alt22) {
                case 1:
                    // /home/langera/dev/freud/src/grammar/Css.g:98:4: '='
                {
                    char_literal51 = (Token) match(input, 42, FOLLOW_42_in_attribRelate581);
                    stream_42.add(char_literal51);


                    // AST REWRITE
                    // elements:
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 98:9: -> ATTRIBEQUAL
                    {
                        adaptor.addChild(root_0, (CommonTree) adaptor.create(ATTRIBEQUAL, "ATTRIBEQUAL"));

                    }

                    retval.tree = root_0;
                }
                break;
                case 2:
                    // /home/langera/dev/freud/src/grammar/Css.g:99:4: '~='
                {
                    string_literal52 = (Token) match(input, 43, FOLLOW_43_in_attribRelate591);
                    stream_43.add(string_literal52);


                    // AST REWRITE
                    // elements:
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 99:9: -> HASVALUE
                    {
                        adaptor.addChild(root_0, (CommonTree) adaptor.create(HASVALUE, "HASVALUE"));

                    }

                    retval.tree = root_0;
                }
                break;
                case 3:
                    // /home/langera/dev/freud/src/grammar/Css.g:100:4: '|='
                {
                    string_literal53 = (Token) match(input, 44, FOLLOW_44_in_attribRelate600);
                    stream_44.add(string_literal53);


                    // AST REWRITE
                    // elements:
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 100:9: -> BEGINSWITH
                    {
                        adaptor.addChild(root_0, (CommonTree) adaptor.create(BEGINSWITH, "BEGINSWITH"));

                    }

                    retval.tree = root_0;
                }
                break;

            }
            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "attribRelate"

    public static class declaration_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "declaration"
    // /home/langera/dev/freud/src/grammar/Css.g:103:1: declaration : IDENT ':' args -> ^( PROPERTY IDENT args ) ;

    public final CssParser.declaration_return declaration() throws RecognitionException {
        CssParser.declaration_return retval = new CssParser.declaration_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token IDENT54 = null;
        Token char_literal55 = null;
        CssParser.args_return args56 = null;


        CommonTree IDENT54_tree = null;
        CommonTree char_literal55_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleTokenStream stream_38 = new RewriteRuleTokenStream(adaptor, "token 38");
        RewriteRuleSubtreeStream stream_args = new RewriteRuleSubtreeStream(adaptor, "rule args");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:104:2: ( IDENT ':' args -> ^( PROPERTY IDENT args ) )
            // /home/langera/dev/freud/src/grammar/Css.g:104:4: IDENT ':' args
            {
                IDENT54 = (Token) match(input, IDENT, FOLLOW_IDENT_in_declaration618);
                stream_IDENT.add(IDENT54);

                char_literal55 = (Token) match(input, 38, FOLLOW_38_in_declaration620);
                stream_38.add(char_literal55);

                pushFollow(FOLLOW_args_in_declaration622);
                args56 = args();

                state._fsp--;

                stream_args.add(args56.getTree());


                // AST REWRITE
                // elements: IDENT, args
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 104:19: -> ^( PROPERTY IDENT args )
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:104:22: ^( PROPERTY IDENT args )
                    {
                        CommonTree root_1 = (CommonTree) adaptor.nil();
                        root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(PROPERTY, "PROPERTY"), root_1);

                        adaptor.addChild(root_1, stream_IDENT.nextNode());
                        adaptor.addChild(root_1, stream_args.nextTree());

                        adaptor.addChild(root_0, root_1);
                    }

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "declaration"

    public static class args_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "args"
    // /home/langera/dev/freud/src/grammar/Css.g:107:1: args : expr ( ( ',' )? expr )* -> ( expr )* ;

    public final CssParser.args_return args() throws RecognitionException {
        CssParser.args_return retval = new CssParser.args_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token char_literal58 = null;
        CssParser.expr_return expr57 = null;

        CssParser.expr_return expr59 = null;


        CommonTree char_literal58_tree = null;
        RewriteRuleTokenStream stream_31 = new RewriteRuleTokenStream(adaptor, "token 31");
        RewriteRuleSubtreeStream stream_expr = new RewriteRuleSubtreeStream(adaptor, "rule expr");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:108:2: ( expr ( ( ',' )? expr )* -> ( expr )* )
            // /home/langera/dev/freud/src/grammar/Css.g:108:4: expr ( ( ',' )? expr )*
            {
                pushFollow(FOLLOW_expr_in_args645);
                expr57 = expr();

                state._fsp--;

                stream_expr.add(expr57.getTree());
                // /home/langera/dev/freud/src/grammar/Css.g:108:9: ( ( ',' )? expr )*
                loop24:
                do {
                    int alt24 = 2;
                    int LA24_0 = input.LA(1);

                    if ((LA24_0 == IDENT || LA24_0 == 31 || (LA24_0 >= 36 && LA24_0 <= 37))) {
                        alt24 = 1;
                    }


                    switch (alt24) {
                        case 1:
                            // /home/langera/dev/freud/src/grammar/Css.g:108:10: ( ',' )? expr
                        {
                            // /home/langera/dev/freud/src/grammar/Css.g:108:10: ( ',' )?
                            int alt23 = 2;
                            int LA23_0 = input.LA(1);

                            if ((LA23_0 == 31)) {
                                alt23 = 1;
                            }
                            switch (alt23) {
                                case 1:
                                    // /home/langera/dev/freud/src/grammar/Css.g:108:10: ','
                                {
                                    char_literal58 = (Token) match(input, 31, FOLLOW_31_in_args648);
                                    stream_31.add(char_literal58);


                                }
                                break;

                            }

                            pushFollow(FOLLOW_expr_in_args651);
                            expr59 = expr();

                            state._fsp--;

                            stream_expr.add(expr59.getTree());

                        }
                        break;

                        default:
                            break loop24;
                    }
                }
                while (true);


                // AST REWRITE
                // elements: expr
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 108:22: -> ( expr )*
                {
                    // /home/langera/dev/freud/src/grammar/Css.g:108:25: ( expr )*
                    while (stream_expr.hasNext()) {
                        adaptor.addChild(root_0, stream_expr.nextTree());

                    }
                    stream_expr.reset();

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "args"

    public static class expr_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "expr"
    // /home/langera/dev/freud/src/grammar/Css.g:111:1: expr : ( ( IDENT unit ) | IDENT | '#' IDENT -> ^( COLOUR '#' IDENT ) | '.' IDENT | function );

    public final CssParser.expr_return expr() throws RecognitionException {
        CssParser.expr_return retval = new CssParser.expr_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token IDENT60 = null;
        Token IDENT62 = null;
        Token char_literal63 = null;
        Token IDENT64 = null;
        Token char_literal65 = null;
        Token IDENT66 = null;
        CssParser.unit_return unit61 = null;

        CssParser.function_return function67 = null;


        CommonTree IDENT60_tree = null;
        CommonTree IDENT62_tree = null;
        CommonTree char_literal63_tree = null;
        CommonTree IDENT64_tree = null;
        CommonTree char_literal65_tree = null;
        CommonTree IDENT66_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleTokenStream stream_36 = new RewriteRuleTokenStream(adaptor, "token 36");

        try {
            // /home/langera/dev/freud/src/grammar/Css.g:112:2: ( ( IDENT unit ) | IDENT | '#' IDENT -> ^( COLOUR '#' IDENT ) | '.' IDENT | function )
            int alt25 = 5;
            alt25 = dfa25.predict(input);
            switch (alt25) {
                case 1:
                    // /home/langera/dev/freud/src/grammar/Css.g:112:4: ( IDENT unit )
                {
                    root_0 = (CommonTree) adaptor.nil();

                    // /home/langera/dev/freud/src/grammar/Css.g:112:4: ( IDENT unit )
                    // /home/langera/dev/freud/src/grammar/Css.g:112:5: IDENT unit
                    {
                        IDENT60 = (Token) match(input, IDENT, FOLLOW_IDENT_in_expr670);
                        IDENT60_tree = (CommonTree) adaptor.create(IDENT60);
                        adaptor.addChild(root_0, IDENT60_tree);

                        pushFollow(FOLLOW_unit_in_expr672);
                        unit61 = unit();

                        state._fsp--;

                        adaptor.addChild(root_0, unit61.getTree());

                    }


                }
                break;
                case 2:
                    // /home/langera/dev/freud/src/grammar/Css.g:113:4: IDENT
                {
                    root_0 = (CommonTree) adaptor.nil();

                    IDENT62 = (Token) match(input, IDENT, FOLLOW_IDENT_in_expr678);
                    IDENT62_tree = (CommonTree) adaptor.create(IDENT62);
                    adaptor.addChild(root_0, IDENT62_tree);


                }
                break;
                case 3:
                    // /home/langera/dev/freud/src/grammar/Css.g:114:4: '#' IDENT
                {
                    char_literal63 = (Token) match(input, 36, FOLLOW_36_in_expr683);
                    stream_36.add(char_literal63);

                    IDENT64 = (Token) match(input, IDENT, FOLLOW_IDENT_in_expr685);
                    stream_IDENT.add(IDENT64);


                    // AST REWRITE
                    // elements: 36, IDENT
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                    root_0 = (CommonTree) adaptor.nil();
                    // 114:14: -> ^( COLOUR '#' IDENT )
                    {
                        // /home/langera/dev/freud/src/grammar/Css.g:114:17: ^( COLOUR '#' IDENT )
                        {
                            CommonTree root_1 = (CommonTree) adaptor.nil();
                            root_1 = (CommonTree) adaptor.becomeRoot((CommonTree) adaptor.create(COLOUR, "COLOUR"), root_1);

                            adaptor.addChild(root_1, stream_36.nextNode());
                            adaptor.addChild(root_1, stream_IDENT.nextNode());

                            adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;
                }
                break;
                case 4:
                    // /home/langera/dev/freud/src/grammar/Css.g:115:4: '.' IDENT
                {
                    root_0 = (CommonTree) adaptor.nil();

                    char_literal65 = (Token) match(input, 37, FOLLOW_37_in_expr702);
                    char_literal65_tree = (CommonTree) adaptor.create(char_literal65);
                    adaptor.addChild(root_0, char_literal65_tree);

                    IDENT66 = (Token) match(input, IDENT, FOLLOW_IDENT_in_expr704);
                    IDENT66_tree = (CommonTree) adaptor.create(IDENT66);
                    adaptor.addChild(root_0, IDENT66_tree);


                }
                break;
                case 5:
                    // /home/langera/dev/freud/src/grammar/Css.g:116:4: function
                {
                    root_0 = (CommonTree) adaptor.nil();

                    pushFollow(FOLLOW_function_in_expr709);
                    function67 = function();

                    state._fsp--;

                    adaptor.addChild(root_0, function67.getTree());

                }
                break;

            }
            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "expr"

    public static class unit_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "unit"
    // /home/langera/dev/freud/src/grammar/Css.g:119:1: unit : ( '%' | 'px' | 'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'em' | 'ex' | 'deg' | 'rad' | 'grad' | 'ms' | 's' | 'hz' | 'khz' ) ;

    public final CssParser.unit_return unit() throws RecognitionException {
        CssParser.unit_return retval = new CssParser.unit_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token set68 = null;

        CommonTree set68_tree = null;

        try {
            // /home/langera/dev/freud/src/grammar/Css.g:120:2: ( ( '%' | 'px' | 'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'em' | 'ex' | 'deg' | 'rad' | 'grad' | 'ms' | 's' | 'hz' | 'khz' ) )
            // /home/langera/dev/freud/src/grammar/Css.g:120:4: ( '%' | 'px' | 'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'em' | 'ex' | 'deg' | 'rad' | 'grad' | 'ms' | 's' | 'hz' | 'khz' )
            {
                root_0 = (CommonTree) adaptor.nil();

                set68 = (Token) input.LT(1);
                if ((input.LA(1) >= 45 && input.LA(1) <= 60)) {
                    input.consume();
                    adaptor.addChild(root_0, (CommonTree) adaptor.create(set68));
                    state.errorRecovery = false;
                }
                else {
                    MismatchedSetException mse = new MismatchedSetException(null, input);
                    throw mse;
                }


            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "unit"

    public static class function_return extends ParserRuleReturnScope {
        CommonTree tree;

        public Object getTree() {
            return tree;
        }
    }

    ;

    // $ANTLR start "function"
    // /home/langera/dev/freud/src/grammar/Css.g:123:1: function : IDENT '(' ( args )? ')' -> IDENT '(' ( args )* ')' ;

    public final CssParser.function_return function() throws RecognitionException {
        CssParser.function_return retval = new CssParser.function_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        Token IDENT69 = null;
        Token char_literal70 = null;
        Token char_literal72 = null;
        CssParser.args_return args71 = null;


        CommonTree IDENT69_tree = null;
        CommonTree char_literal70_tree = null;
        CommonTree char_literal72_tree = null;
        RewriteRuleTokenStream stream_IDENT = new RewriteRuleTokenStream(adaptor, "token IDENT");
        RewriteRuleTokenStream stream_62 = new RewriteRuleTokenStream(adaptor, "token 62");
        RewriteRuleTokenStream stream_61 = new RewriteRuleTokenStream(adaptor, "token 61");
        RewriteRuleSubtreeStream stream_args = new RewriteRuleSubtreeStream(adaptor, "rule args");
        try {
            // /home/langera/dev/freud/src/grammar/Css.g:124:2: ( IDENT '(' ( args )? ')' -> IDENT '(' ( args )* ')' )
            // /home/langera/dev/freud/src/grammar/Css.g:124:4: IDENT '(' ( args )? ')'
            {
                IDENT69 = (Token) match(input, IDENT, FOLLOW_IDENT_in_function767);
                stream_IDENT.add(IDENT69);

                char_literal70 = (Token) match(input, 61, FOLLOW_61_in_function769);
                stream_61.add(char_literal70);

                // /home/langera/dev/freud/src/grammar/Css.g:124:14: ( args )?
                int alt26 = 2;
                int LA26_0 = input.LA(1);

                if ((LA26_0 == IDENT || (LA26_0 >= 36 && LA26_0 <= 37))) {
                    alt26 = 1;
                }
                switch (alt26) {
                    case 1:
                        // /home/langera/dev/freud/src/grammar/Css.g:124:14: args
                    {
                        pushFollow(FOLLOW_args_in_function771);
                        args71 = args();

                        state._fsp--;

                        stream_args.add(args71.getTree());

                    }
                    break;

                }

                char_literal72 = (Token) match(input, 62, FOLLOW_62_in_function774);
                stream_62.add(char_literal72);


                // AST REWRITE
                // elements: 62, args, 61, IDENT
                // token labels:
                // rule labels: retval
                // token list labels:
                // rule list labels:
                // wildcard labels:
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.tree : null);

                root_0 = (CommonTree) adaptor.nil();
                // 124:24: -> IDENT '(' ( args )* ')'
                {
                    adaptor.addChild(root_0, stream_IDENT.nextNode());
                    adaptor.addChild(root_0, stream_61.nextNode());
                    // /home/langera/dev/freud/src/grammar/Css.g:124:37: ( args )*
                    while (stream_args.hasNext()) {
                        adaptor.addChild(root_0, stream_args.nextTree());

                    }
                    stream_args.reset();
                    adaptor.addChild(root_0, stream_62.nextNode());

                }

                retval.tree = root_0;
            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input, re);
            retval.tree = (CommonTree) adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "function"

    // Delegated rules


    protected DFA10 dfa10 = new DFA10(this);
    protected DFA20 dfa20 = new DFA20(this);
    protected DFA25 dfa25 = new DFA25(this);
    static final String DFA10_eotS =
            "\14\uffff";
    static final String DFA10_eofS =
            "\14\uffff";
    static final String DFA10_minS =
            "\1\26\13\uffff";
    static final String DFA10_maxS =
            "\1\50\13\uffff";
    static final String DFA10_acceptS =
            "\1\uffff\1\2\4\uffff\1\1\5\uffff";
    static final String DFA10_specialS =
            "\14\uffff}>";
    static final String[] DFA10_transitionS = {
            "\1\6\6\uffff\1\1\1\uffff\1\1\2\6\1\uffff\3\6\3\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
    static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
    static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
    static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
    static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
    static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
    static final short[][] DFA10_transition;

    static {
        int numStates = DFA10_transitionS.length;
        DFA10_transition = new short[numStates][];
        for (int i = 0; i < numStates; i++) {
            DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]);
        }
    }

    class DFA10 extends DFA {

        public DFA10(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 10;
            this.eot = DFA10_eot;
            this.eof = DFA10_eof;
            this.min = DFA10_min;
            this.max = DFA10_max;
            this.accept = DFA10_accept;
            this.special = DFA10_special;
            this.transition = DFA10_transition;
        }

        public String getDescription() {
            return "()* loopback of 65:9: ( selectorOperation )*";
        }
    }

    static final String DFA20_eotS =
            "\17\uffff";
    static final String DFA20_eofS =
            "\17\uffff";
    static final String DFA20_minS =
            "\1\46\2\26\2\35\12\uffff";
    static final String DFA20_maxS =
            "\1\47\2\26\2\75\12\uffff";
    static final String DFA20_acceptS =
            "\5\uffff\1\2\1\1\10\uffff";
    static final String DFA20_specialS =
            "\17\uffff}>";
    static final String[] DFA20_transitionS = {
            "\1\1\1\2",
            "\1\3",
            "\1\4",
            "\1\6\1\uffff\1\6\6\uffff\2\6\25\uffff\1\5",
            "\1\6\1\uffff\1\6\6\uffff\2\6\25\uffff\1\5",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA20_eot = DFA.unpackEncodedString(DFA20_eotS);
    static final short[] DFA20_eof = DFA.unpackEncodedString(DFA20_eofS);
    static final char[] DFA20_min = DFA.unpackEncodedStringToUnsignedChars(DFA20_minS);
    static final char[] DFA20_max = DFA.unpackEncodedStringToUnsignedChars(DFA20_maxS);
    static final short[] DFA20_accept = DFA.unpackEncodedString(DFA20_acceptS);
    static final short[] DFA20_special = DFA.unpackEncodedString(DFA20_specialS);
    static final short[][] DFA20_transition;

    static {
        int numStates = DFA20_transitionS.length;
        DFA20_transition = new short[numStates][];
        for (int i = 0; i < numStates; i++) {
            DFA20_transition[i] = DFA.unpackEncodedString(DFA20_transitionS[i]);
        }
    }

    class DFA20 extends DFA {

        public DFA20(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 20;
            this.eot = DFA20_eot;
            this.eof = DFA20_eof;
            this.min = DFA20_min;
            this.max = DFA20_max;
            this.accept = DFA20_accept;
            this.special = DFA20_special;
            this.transition = DFA20_transition;
        }

        public String getDescription() {
            return "88:1: pseudo : ( ( ':' | '::' ) IDENT -> ^( PSEUDO IDENT ) | ( ':' | '::' ) function -> ^( PSEUDO function ) );";
        }
    }

    static final String DFA25_eotS =
            "\16\uffff";
    static final String DFA25_eofS =
            "\16\uffff";
    static final String DFA25_minS =
            "\2\26\14\uffff";
    static final String DFA25_maxS =
            "\1\45\1\76\14\uffff";
    static final String DFA25_acceptS =
            "\2\uffff\1\3\1\4\1\5\1\1\1\2\7\uffff";
    static final String DFA25_specialS =
            "\16\uffff}>";
    static final String[] DFA25_transitionS = {
            "\1\1\15\uffff\1\2\1\3",
            "\1\6\5\uffff\1\6\1\uffff\2\6\2\uffff\1\6\1\uffff\2\6\7\uffff" +
                    "\20\5\1\4\1\6",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA25_eot = DFA.unpackEncodedString(DFA25_eotS);
    static final short[] DFA25_eof = DFA.unpackEncodedString(DFA25_eofS);
    static final char[] DFA25_min = DFA.unpackEncodedStringToUnsignedChars(DFA25_minS);
    static final char[] DFA25_max = DFA.unpackEncodedStringToUnsignedChars(DFA25_maxS);
    static final short[] DFA25_accept = DFA.unpackEncodedString(DFA25_acceptS);
    static final short[] DFA25_special = DFA.unpackEncodedString(DFA25_specialS);
    static final short[][] DFA25_transition;

    static {
        int numStates = DFA25_transitionS.length;
        DFA25_transition = new short[numStates][];
        for (int i = 0; i < numStates; i++) {
            DFA25_transition[i] = DFA.unpackEncodedString(DFA25_transitionS[i]);
        }
    }

    class DFA25 extends DFA {

        public DFA25(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 25;
            this.eot = DFA25_eot;
            this.eof = DFA25_eof;
            this.min = DFA25_min;
            this.max = DFA25_max;
            this.accept = DFA25_accept;
            this.special = DFA25_special;
            this.transition = DFA25_transition;
        }

        public String getDescription() {
            return "111:1: expr : ( ( IDENT unit ) | IDENT | '#' IDENT -> ^( COLOUR '#' IDENT ) | '.' IDENT | function );";
        }
    }


    public static final BitSet FOLLOW_importRule_in_stylesheet131 = new BitSet(new long[]{0x000000381C400000L});
    public static final BitSet FOLLOW_nested_in_stylesheet135 = new BitSet(new long[]{0x0000003810400002L});
    public static final BitSet FOLLOW_ruleset_in_stylesheet139 = new BitSet(new long[]{0x0000003810400002L});
    public static final BitSet FOLLOW_26_in_importRule153 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_27_in_importRule157 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_importRule161 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_nested183 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_nest_in_nested185 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_nested187 = new BitSet(new long[]{0x0000000050400000L});
    public static final BitSet FOLLOW_properties_in_nested189 = new BitSet(new long[]{0x0000000050000000L});
    public static final BitSet FOLLOW_nested_in_nested192 = new BitSet(new long[]{0x0000000050000000L});
    public static final BitSet FOLLOW_30_in_nested195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_nest222 = new BitSet(new long[]{0x000000C000400002L});
    public static final BitSet FOLLOW_IDENT_in_nest224 = new BitSet(new long[]{0x000000C000400002L});
    public static final BitSet FOLLOW_pseudo_in_nest227 = new BitSet(new long[]{0x000000C000000002L});
    public static final BitSet FOLLOW_selectors_in_ruleset257 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleset259 = new BitSet(new long[]{0x0000000040400000L});
    public static final BitSet FOLLOW_properties_in_ruleset261 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleset264 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_selector_in_selectors289 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_31_in_selectors292 = new BitSet(new long[]{0x0000003810400000L});
    public static final BitSet FOLLOW_selector_in_selectors294 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_elem_in_selector308 = new BitSet(new long[]{0x000001FB10400002L});
    public static final BitSet FOLLOW_selectorOperation_in_selector310 = new BitSet(new long[]{0x000001FB10400002L});
    public static final BitSet FOLLOW_attrib_in_selector313 = new BitSet(new long[]{0x000001C000000002L});
    public static final BitSet FOLLOW_pseudo_in_selector316 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_selectop_in_selectorOperation342 = new BitSet(new long[]{0x0000003810400000L});
    public static final BitSet FOLLOW_elem_in_selectorOperation345 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_selectop363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_selectop379 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_declaration_in_properties395 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_34_in_properties398 = new BitSet(new long[]{0x0000000400400002L});
    public static final BitSet FOLLOW_declaration_in_properties400 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_35_in_elem421 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_elem434 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_elem436 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_elem451 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_elem453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_elem471 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_pseudo493 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_39_in_pseudo495 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_pseudo498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_pseudo514 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_39_in_pseudo516 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_function_in_pseudo519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_attrib540 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_attrib542 = new BitSet(new long[]{0x00001E0000000000L});
    public static final BitSet FOLLOW_attribRelate_in_attrib545 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_attrib547 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_attrib551 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_attribRelate581 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_attribRelate591 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_attribRelate600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_declaration618 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_declaration620 = new BitSet(new long[]{0x0000003000400000L});
    public static final BitSet FOLLOW_args_in_declaration622 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_in_args645 = new BitSet(new long[]{0x0000003080400002L});
    public static final BitSet FOLLOW_31_in_args648 = new BitSet(new long[]{0x0000003000400000L});
    public static final BitSet FOLLOW_expr_in_args651 = new BitSet(new long[]{0x0000003080400002L});
    public static final BitSet FOLLOW_IDENT_in_expr670 = new BitSet(new long[]{0x1FFFE00000000000L});
    public static final BitSet FOLLOW_unit_in_expr672 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_expr678 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_expr683 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_expr685 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_expr702 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IDENT_in_expr704 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_function_in_expr709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_unit723 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_function767 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_61_in_function769 = new BitSet(new long[]{0x4000003000400000L});
    public static final BitSet FOLLOW_args_in_function771 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_62_in_function774 = new BitSet(new long[]{0x0000000000000002L});

}
TOP

Related Classes of org.freud.analysed.css.parser.CssParser$attrib_return

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.