/plugins/XML/tags/release-2-0-8/sidekick/css/parser/CSS2Parser.java
# · Java · 2548 lines · 2306 code · 77 blank · 165 comment · 376 complexity · 2f8adba15a8207bafd32ef829b14e5c8 MD5 · raw file
Large files are truncated click here to view the full file
- /* Generated By:JavaCC: Do not edit this line. CSS2Parser.java */
- package sidekick.css.parser;
- import java.io.*;
- import java.net.*;
- import java.text.MessageFormat;
- import java.util.*;
- import java.util.regex.*;
- import sidekick.util.*;
- public class CSS2Parser implements CSS2ParserConstants {
- private boolean _quiet = true;
- private int lineOffset = 0;
- private List<ParseError> parseErrors = new ArrayList<ParseError>();
- private boolean proprietaryAsError = true;
- /*
- public CSS2Parser() {
- this((CharStream) null);
- }
- */
- public Location getStartLocation(Token t) {
- if (t == null)
- return new Location(0 + lineOffset, 0);
- return new Location(t.beginLine + lineOffset, t.beginColumn);
- }
- public Location getEndLocation(Token t) {
- if (t == null)
- return new Location(0 + lineOffset, 0);
- return new Location(t.endLine + lineOffset, t.endColumn);
- }
- public CSSNode createNode(Token t) {
- if (t == null) {
- return new CSSNode();
- }
- CSSNode node = new CSSNode(t.image);
- node.setStartLocation(getStartLocation(t));
- node.setEndLocation(getEndLocation(t));
- return node;
- }
- public void setLineOffset(int offset) {
- lineOffset = offset > 0 ? offset : 0;
- }
- public void setTabSize(int size) {
- jj_input_stream.setTabSize(size);
- }
- public int getTabSize() {
- return jj_input_stream.getTabSize(0);
- }
- public void setProprietaryAsError(boolean b) {
- proprietaryAsError = b;
- }
- private void addException(ParseException pe) {
- // check for a jsp tag, these can appear in several places and will cause
- // a parse error, but they can be ignored. It's easier to catch them and
- // ignore them than rewrite the grammar to allow them in all the appropriate
- // places.
- Token t = pe.currentToken;
- if (t != null) {
- if (t.next != null && t.next.image.startsWith("<%")) {
- return;
- }
- }
- Range range = getExceptionLocation( pe );
- parseErrors.add(new ParseError(pe.getMessage(), range));
- }
- public List<ParseError> getParseErrors() {
- return parseErrors;
- }
- /**
- * @return attempts to return a Location indicating the location of a parser
- * exception. If the ParseException contains a Token reference, all is well,
- * otherwise, this method attempts to parse the message string for the
- * exception.
- */
- private Range getExceptionLocation( ParseException pe ) {
- Token t = pe.currentToken;
- // handle a 1-off error when this parser is called to parse embedded css
- if ( t != null ) {
- return new Range( new Location( t.next.beginLine + lineOffset, t.next.beginColumn ),
- new Location( t.next.endLine + lineOffset, t.next.endColumn ) );
- }
- // ParseException message look like: "Parse error at line 116, column 5. Encountered: }"
- try {
- Pattern p = Pattern.compile( "(.*?)(\\d+)(.*?)(\\d+)(.*?)" );
- Matcher m = p.matcher( pe.getMessage() );
- if ( m.matches() ) {
- String ln = m.group( 2 );
- String cn = m.group( 4 );
- int line_number = -1;
- int column_number = 0;
- if ( ln != null )
- line_number = Integer.parseInt( ln );
- if ( cn != null )
- column_number = Integer.parseInt( cn );
- return line_number > -1 ? new Range( new Location( line_number + lineOffset, column_number - 1 ),
- new Location( line_number + lineOffset, column_number ) ) : null;
- }
- return new Range();
- }
- catch ( Exception e ) {
- //e.printStackTrace();
- return new Range();
- }
- }
- /**
- * Simple check to verify that all arguments are not null.
- */
- public boolean notNull(Object... args) {
- for (Object o : args) {
- if (o == null) {
- return false;
- }
- }
- return true;
- }
- // main entry point
- //
- // stylesheet
- // : [ CHARSET_SYM S* STRING S* ';' ]?
- // [S|CDO|CDC]* [ import [S|CDO|CDC]* ]*
- // [ [ ruleset | media | page | font_face ] [S|CDO|CDC]* ]*
- // ;
- //
- final public CSSNode styleSheet() throws ParseException {
- CSSNode node = new CSSNode("style");
- List<CSSNode> list = null;
- try {
- list = styleSheetRuleList();
- jj_consume_token(0);
- } catch (ParseException pe) {
- addException(pe);
- }
- if (notNull(list)) {
- node.addChildren(list);
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- final public List<CSSNode> styleSheetRuleList() throws ParseException {
- List<CSSNode> list = new ArrayList<CSSNode>();
- CSSNode n = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CHARSET_SYM:
- n = charsetRule();
- if (n != null) list.add(n);
- break;
- default:
- jj_la1[0] = jj_gen;
- ;
- }
- label_1:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case CDO:
- case CDC:
- ;
- break;
- default:
- jj_la1[1] = jj_gen;
- break label_1;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- jj_consume_token(S);
- break;
- case CDO:
- jj_consume_token(CDO);
- break;
- case CDC:
- jj_consume_token(CDC);
- break;
- default:
- jj_la1[2] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- label_2:
- while (true) {
- if (jj_2_1(2)) {
- ;
- } else {
- break label_2;
- }
- n = importRule();
- if (n != null) list.add(n);
- label_3:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case CDO:
- case CDC:
- ;
- break;
- default:
- jj_la1[3] = jj_gen;
- break label_3;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- jj_consume_token(S);
- break;
- case CDO:
- jj_consume_token(CDO);
- break;
- case CDC:
- jj_consume_token(CDC);
- break;
- default:
- jj_la1[4] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- }
- label_4:
- while (true) {
- if (jj_2_2(2)) {
- ;
- } else {
- break label_4;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case IDENT:
- n = styleRule();
- break;
- case MEDIA_SYM:
- n = mediaRule();
- break;
- case PAGE_SYM:
- n = pageRule();
- break;
- case FONT_FACE_SYM:
- n = fontFaceRule();
- break;
- case ATKEYWORD:
- n = unknownRule();
- break;
- default:
- jj_la1[5] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- if (n != null) list.add(n);
- label_5:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case CDO:
- case CDC:
- ;
- break;
- default:
- jj_la1[6] = jj_gen;
- break label_5;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- jj_consume_token(S);
- break;
- case CDO:
- jj_consume_token(CDO);
- break;
- case CDC:
- jj_consume_token(CDC);
- break;
- default:
- jj_la1[7] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- }
- label_6:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case IMPORT_SYM:
- case PAGE_SYM:
- case MEDIA_SYM:
- case FONT_FACE_SYM:
- case ATKEYWORD:
- case IDENT:
- ;
- break;
- default:
- jj_la1[8] = jj_gen;
- break label_6;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case IDENT:
- n = styleRule();
- break;
- case MEDIA_SYM:
- n = mediaRule();
- break;
- case PAGE_SYM:
- n = pageRule();
- break;
- case FONT_FACE_SYM:
- n = fontFaceRule();
- break;
- case IMPORT_SYM:
- n = importRuleIgnored();
- break;
- case ATKEYWORD:
- n = unknownRule();
- break;
- default:
- jj_la1[9] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- if (n != null) list.add(n);
- label_7:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case CDO:
- case CDC:
- ;
- break;
- default:
- jj_la1[10] = jj_gen;
- break label_7;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- jj_consume_token(S);
- break;
- case CDO:
- jj_consume_token(CDO);
- break;
- case CDC:
- jj_consume_token(CDC);
- break;
- default:
- jj_la1[11] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return list;}
- throw new Error("Missing return statement in function");
- }
- //
- // This is used by ASTStyleSheet.insertRule to parse a single rule
- //
- final public CSSNode styleSheetRuleSingle() throws ParseException {
- CSSNode n = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CHARSET_SYM:
- n = charsetRule();
- break;
- case IMPORT_SYM:
- n = importRule();
- break;
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case IDENT:
- n = styleRule();
- break;
- case MEDIA_SYM:
- n = mediaRule();
- break;
- case PAGE_SYM:
- n = pageRule();
- break;
- case FONT_FACE_SYM:
- n = fontFaceRule();
- break;
- case ATKEYWORD:
- n = unknownRule();
- break;
- default:
- jj_la1[12] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return n;}
- throw new Error("Missing return statement in function");
- }
- final public CSSNode charsetRule() throws ParseException {
- Token start = null;
- Token middle = null;
- Token end = null;
- CSSNode node = null;
- try {
- start = jj_consume_token(CHARSET_SYM);
- label_8:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[13] = jj_gen;
- break label_8;
- }
- jj_consume_token(S);
- }
- middle = jj_consume_token(STRING);
- label_9:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[14] = jj_gen;
- break label_9;
- }
- jj_consume_token(S);
- }
- end = jj_consume_token(SEMICOLON);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (notNull(start, middle, end)) {
- String name = start.image + " " + middle.image;
- node = new CSSNode(name);
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(getEndLocation(end));
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- final public CSSNode unknownRule() throws ParseException {
- Token t = null;
- CSSNode node = null;
- try {
- t = jj_consume_token(ATKEYWORD);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (notNull(t)) {
- node = new CSSNode(t.image);
- node.setStartLocation(getStartLocation(t));
- node.setEndLocation(getEndLocation(t));
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // import
- // : IMPORT_SYM S*
- // [STRING|URI] S* [ medium [ ',' S* medium]* ]? ';' S*
- // ;
- //
- final public CSSNode importRule() throws ParseException {
- Token start = null;
- CSSNode middle = null;
- Token uri = null;
- Token end = null;
- CSSNode node = null;
- try {
- start = jj_consume_token(IMPORT_SYM);
- label_10:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[15] = jj_gen;
- break label_10;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case STRING:
- uri = jj_consume_token(STRING);
- break;
- case URI:
- uri = jj_consume_token(URI);
- break;
- default:
- jj_la1[16] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_11:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[17] = jj_gen;
- break label_11;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- middle = mediaList();
- break;
- default:
- jj_la1[18] = jj_gen;
- ;
- }
- end = jj_consume_token(SEMICOLON);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (notNull(start, end)) {
- String name = start.image + (uri != null ? " " + uri.image : "") + (middle != null ? " " + middle.getName() : "");
- node = new CSSNode(name);
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(getEndLocation(end));
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- final public CSSNode importRuleIgnored() throws ParseException {
- Token start = null;
- CSSNode middle = null;
- Token uri = null;
- Token end = null;
- CSSNode node = null;
- try {
- start = jj_consume_token(IMPORT_SYM);
- label_12:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[19] = jj_gen;
- break label_12;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case STRING:
- uri = jj_consume_token(STRING);
- break;
- case URI:
- uri = jj_consume_token(URI);
- break;
- default:
- jj_la1[20] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_13:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[21] = jj_gen;
- break label_13;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- middle = mediaList();
- break;
- default:
- jj_la1[22] = jj_gen;
- ;
- }
- end = jj_consume_token(SEMICOLON);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (notNull(start, end)) {
- String name = start.image + (uri != null ? " " + uri.image : "") + (middle != null ? " " + middle.getName() : "");
- node = new CSSNode(name);
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(getEndLocation(end));
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // media
- // : MEDIA_SYM S* medium [ ',' S* medium ]* '{' S* ruleset* '}' S*
- // ;
- //
- final public CSSNode mediaRule() throws ParseException {
- Token start = null;
- CSSNode ml = null;
- List<CSSNode> mrl = null;
- Token end = null;
- CSSNode node = null;
- try {
- start = jj_consume_token(MEDIA_SYM);
- label_14:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[23] = jj_gen;
- break label_14;
- }
- jj_consume_token(S);
- }
- ml = mediaList();
- jj_consume_token(LBRACE);
- label_15:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[24] = jj_gen;
- break label_15;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case PAGE_SYM:
- case ATKEYWORD:
- case IDENT:
- mrl = mediaRuleList();
- break;
- default:
- jj_la1[25] = jj_gen;
- ;
- }
- end = jj_consume_token(RBRACE);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (notNull(start, ml, end)) {
- String name = start.image + (ml != null ? " " + ml.getName() : "");
- node = new CSSNode(name);
- if (mrl != null) {
- node.addChildren(mrl);
- }
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(getEndLocation(end));
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- // tv, projector, screen, etc
- final public CSSNode mediaList() throws ParseException {
- StringBuffer sb = new StringBuffer();
- CSSNode a = null;
- CSSNode b = null;
- CSSNode node = null;
- try {
- a = medium();
- sb.append(a.getName());
- label_16:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- ;
- break;
- default:
- jj_la1[26] = jj_gen;
- break label_16;
- }
- jj_consume_token(COMMA);
- sb.append(",");
- label_17:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[27] = jj_gen;
- break label_17;
- }
- jj_consume_token(S);
- }
- b = medium();
- if (b != null) sb.append(b.getName());
- }
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if ( notNull(a) ) {
- node = new CSSNode(sb.toString());
- node.setStartLocation(a.getStartLocation());
- node.setEndLocation(b == null ? a.getEndLocation() : b.getEndLocation());
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- final public List<CSSNode> mediaRuleList() throws ParseException {
- List<CSSNode> list = new ArrayList<CSSNode>();
- CSSNode n = null;
- try {
- label_18:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case IDENT:
- n = styleRule();
- break;
- case PAGE_SYM:
- n = pageRule();
- break;
- case ATKEYWORD:
- n = unknownRule();
- break;
- default:
- jj_la1[28] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- if (n != null) list.add(n);
- label_19:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[29] = jj_gen;
- break label_19;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case PAGE_SYM:
- case ATKEYWORD:
- case IDENT:
- ;
- break;
- default:
- jj_la1[30] = jj_gen;
- break label_18;
- }
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return list;}
- throw new Error("Missing return statement in function");
- }
- final public CSSNode mediaRuleSingle() throws ParseException {
- CSSNode n = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case ASTERISK:
- case LSQUARE:
- case HASH:
- case IDENT:
- n = styleRule();
- break;
- case PAGE_SYM:
- n = pageRule();
- break;
- case ATKEYWORD:
- n = unknownRule();
- break;
- default:
- jj_la1[31] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return n;}
- throw new Error("Missing return statement in function");
- }
- //
- // medium
- // : IDENT S*
- // ;
- //
- final public CSSNode medium() throws ParseException {
- Token t = null;
- CSSNode node = null;
- try {
- t = jj_consume_token(IDENT);
- label_20:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[32] = jj_gen;
- break label_20;
- }
- jj_consume_token(S);
- }
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if ( t != null ) {
- node = new CSSNode(t.image);
- node.setStartLocation(getStartLocation(t));
- node.setEndLocation(getEndLocation(t));
- }
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // page
- // : PAGE_SYM S* IDENT? pseudo_page? S*
- // '{' S* declaration [ ';' S* declaration ]* '}' S*
- // ;
- //
- final public CSSNode pageRule() throws ParseException {
- Token start = null;
- Token ident = null;
- CSSNode pp = null;
- CSSNode decl = null;
- List<CSSNode> list = new ArrayList<CSSNode>();
- Token end = null;
- try {
- start = jj_consume_token(PAGE_SYM);
- label_21:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[33] = jj_gen;
- break label_21;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COLON:
- case IDENT:
- if (jj_2_3(2)) {
- ident = jj_consume_token(IDENT);
- pp = pseudoPage();
- label_22:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[34] = jj_gen;
- break label_22;
- }
- jj_consume_token(S);
- }
- } else {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- jj_consume_token(IDENT);
- label_23:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[35] = jj_gen;
- break label_23;
- }
- jj_consume_token(S);
- }
- break;
- case COLON:
- pp = pseudoPage();
- label_24:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[36] = jj_gen;
- break label_24;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[37] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- break;
- default:
- jj_la1[38] = jj_gen;
- ;
- }
- jj_consume_token(LBRACE);
- label_25:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[39] = jj_gen;
- break label_25;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- decl = declaration();
- if (decl != null) list.add(decl);
- break;
- default:
- jj_la1[40] = jj_gen;
- ;
- }
- label_26:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[41] = jj_gen;
- break label_26;
- }
- jj_consume_token(SEMICOLON);
- label_27:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[42] = jj_gen;
- break label_27;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- decl = declaration();
- if (decl != null) list.add(decl);
- break;
- default:
- jj_la1[43] = jj_gen;
- ;
- }
- }
- end = jj_consume_token(RBRACE);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- StringBuffer name = new StringBuffer();
- name.append(start.image);
- if (ident != null)
- name.append(" ").append(ident.image);
- if (pp != null)
- name.append(" ").append(pp.getName());
- CSSNode node = new CSSNode(name.toString());
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(getEndLocation(end));
- node.addChildren(list);
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // pseudoPage
- // : ':' IDENT
- // ;
- //
- final public CSSNode pseudoPage() throws ParseException {
- Token t = null;
- try {
- jj_consume_token(COLON);
- t = jj_consume_token(IDENT);
- } catch (ParseException pe) {
- addException(pe);
- }
- CSSNode node = createNode(t);
- node.setName(":" + node.getName());
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // font_face
- // : FONT_FACE_SYM S*
- // '{' S* declaration [ ';' S* declaration ]* '}' S*
- // ;
- //
- final public CSSNode fontFaceRule() throws ParseException {
- Token start = null;
- CSSNode decl = null;
- List<CSSNode> list = new ArrayList<CSSNode>();
- Token end = null;
- try {
- start = jj_consume_token(FONT_FACE_SYM);
- label_28:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[44] = jj_gen;
- break label_28;
- }
- jj_consume_token(S);
- }
- jj_consume_token(LBRACE);
- label_29:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[45] = jj_gen;
- break label_29;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- decl = declaration();
- if (decl != null) list.add(decl);
- break;
- default:
- jj_la1[46] = jj_gen;
- ;
- }
- label_30:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[47] = jj_gen;
- break label_30;
- }
- jj_consume_token(SEMICOLON);
- label_31:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[48] = jj_gen;
- break label_31;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- decl = declaration();
- if (decl != null) list.add(decl);
- break;
- default:
- jj_la1[49] = jj_gen;
- ;
- }
- }
- end = jj_consume_token(RBRACE);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- CSSNode node = new CSSNode(start.image);
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(getEndLocation(end));
- node.addChildren(list);
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // operator
- // : '/' S* | ',' S* |
- // ;
- //
- final public CSSNode operator() throws ParseException {
- Token t = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SLASH:
- t = jj_consume_token(SLASH);
- label_32:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[50] = jj_gen;
- break label_32;
- }
- jj_consume_token(S);
- }
- break;
- case COMMA:
- t = jj_consume_token(COMMA);
- label_33:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[51] = jj_gen;
- break label_33;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[52] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return createNode(t);}
- throw new Error("Missing return statement in function");
- }
- //
- // combinator
- // : '+' S* | '>' S* |
- // ;
- //
- final public CSSNode combinator() throws ParseException {
- Token t = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- t = jj_consume_token(PLUS);
- label_34:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[53] = jj_gen;
- break label_34;
- }
- jj_consume_token(S);
- }
- break;
- case GT:
- t = jj_consume_token(GT);
- label_35:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[54] = jj_gen;
- break label_35;
- }
- jj_consume_token(S);
- }
- break;
- case S:
- jj_consume_token(S);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case GT:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- t = jj_consume_token(PLUS);
- break;
- case GT:
- t = jj_consume_token(GT);
- break;
- default:
- jj_la1[55] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_36:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[56] = jj_gen;
- break label_36;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[57] = jj_gen;
- ;
- }
- break;
- default:
- jj_la1[58] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return createNode(t);}
- throw new Error("Missing return statement in function");
- }
- //
- // unary_operator
- // : '-' | '+'
- // ;
- //
- final public CSSNode unaryOperator() throws ParseException {
- Token t = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case MINUS:
- t = jj_consume_token(MINUS);
- break;
- case PLUS:
- t = jj_consume_token(PLUS);
- break;
- default:
- jj_la1[59] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return createNode(t);}
- throw new Error("Missing return statement in function");
- }
- //
- // property
- // : IDENT S*
- // ;
- //
- final public CSSNode property() throws ParseException {
- Token t = null;
- try {
- t = jj_consume_token(IDENT);
- label_37:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[60] = jj_gen;
- break label_37;
- }
- jj_consume_token(S);
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- if (t != null && t.image.startsWith("-") && proprietaryAsError) {
- ParseException pe = new ParseException("Parse warning at line " + token.beginLine + ", column " + token.beginColumn + ". Encountered: " + token.image + ", which is a proprietary property name.");
- addException(pe);
- }
- {if (true) return createNode(t);}
- throw new Error("Missing return statement in function");
- }
- //
- // ruleset
- // : selector [ ',' S* selector ]*
- // '{' S* declaration [ ';' S* declaration ]* '}' S*
- // ;
- //
- final public CSSNode styleRule() throws ParseException {
- CSSNode n = null;
- List<CSSNode> list = null;
- try {
- n = selectorList();
- jj_consume_token(LBRACE);
- label_38:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[61] = jj_gen;
- break label_38;
- }
- jj_consume_token(S);
- }
- list = styleDeclaration();
- jj_consume_token(RBRACE);
- } catch (ParseException pe) {
- addException(pe);
- }
- if (n == null)
- {if (true) return null;}
- if (list != null) {
- n.addChildren(list);
- }
- {if (true) return n;}
- throw new Error("Missing return statement in function");
- }
- final public CSSNode selectorList() throws ParseException {
- List<CSSNode> list = new ArrayList<CSSNode>();
- CSSNode n = null;
- try {
- n = selector();
- if (n != null) list.add(n);
- label_39:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- ;
- break;
- default:
- jj_la1[62] = jj_gen;
- break label_39;
- }
- jj_consume_token(COMMA);
- label_40:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[63] = jj_gen;
- break label_40;
- }
- jj_consume_token(S);
- }
- n = selector();
- if (n != null) list.add(n);
- }
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (list.isEmpty())
- {if (true) return null;}
- CSSNode start = null;
- CSSNode end = null;
- StringBuffer sb = new StringBuffer();
- for (Iterator it = list.iterator(); it.hasNext(); ) {
- CSSNode node = (CSSNode)it.next();
- if (node != null) {
- if (start == null) {
- start = node;
- }
- end = node;
- sb.append(node.getName().trim());
- if (it.hasNext()) {
- sb.append(",");
- }
- }
- }
- if (start == null) {
- {if (true) return null;}
- }
- CSSNode node = new CSSNode(sb.toString());
- node.setStartLocation(start.getStartLocation());
- node.setEndLocation(end.getEndLocation());
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // selector
- // : simple_selector [ combinator simple_selector ]*
- // ;
- //
- final public CSSNode selector() throws ParseException {
- List<CSSNode> list = new ArrayList<CSSNode>();
- CSSNode n = null;
- try {
- n = simpleSelector();
- list.add(n);
- label_41:
- while (true) {
- if (jj_2_4(2)) {
- ;
- } else {
- break label_41;
- }
- n = combinator();
- list.add(n);
- n = simpleSelector();
- list.add(n);
- }
- label_42:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[64] = jj_gen;
- break label_42;
- }
- jj_consume_token(S);
- }
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (list.isEmpty())
- {if (true) return null;}
- CSSNode start = null;
- CSSNode end = null;
- StringBuffer sb = new StringBuffer();
- for (CSSNode node : list) {
- if (node != null) {
- if (start == null) {
- start = node;
- }
- end = node;
- sb.append(node.getName()).append(" ");
- }
- }
- if (start == null) {
- {if (true) return null;}
- }
- CSSNode node = new CSSNode(sb.toString());
- node.setStartLocation(start.getStartLocation());
- node.setEndLocation(end.getEndLocation());
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // simple_selector
- // : element_name? [ HASH | class | attrib | pseudo ]* S*
- // ;
- //
- final public CSSNode simpleSelector() throws ParseException {
- List<CSSNode> list = new ArrayList<CSSNode>();
- CSSNode n = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case ASTERISK:
- case IDENT:
- n = elementName();
- list.add(n);
- label_43:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case LSQUARE:
- case HASH:
- ;
- break;
- default:
- jj_la1[65] = jj_gen;
- break label_43;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case HASH:
- n = hash();
- list.add(n);
- break;
- case DOT:
- n = _class();
- list.add(n);
- break;
- case LSQUARE:
- n = attrib();
- list.add(n);
- break;
- case COLON:
- n = pseudo();
- list.add(n);
- break;
- default:
- jj_la1[66] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- break;
- case DOT:
- case COLON:
- case LSQUARE:
- case HASH:
- label_44:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case HASH:
- n = hash();
- list.add(n);
- break;
- case DOT:
- n = _class();
- list.add(n);
- break;
- case LSQUARE:
- n = attrib();
- list.add(n);
- break;
- case COLON:
- n = pseudo();
- list.add(n);
- break;
- default:
- jj_la1[67] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case COLON:
- case LSQUARE:
- case HASH:
- ;
- break;
- default:
- jj_la1[68] = jj_gen;
- break label_44;
- }
- }
- break;
- default:
- jj_la1[69] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (list.isEmpty())
- {if (true) return null;}
- CSSNode start = null;
- CSSNode end = null;
- StringBuffer sb = new StringBuffer();
- for (CSSNode node : list) {
- if (node != null && node.getName() != null) {
- if (start == null) {
- start = node;
- }
- sb.append(node.getName()).append(" ");
- end = node;
- }
- }
- if (start == null) {
- {if (true) return null;}
- }
- CSSNode node = new CSSNode(sb.toString());
- node.setStartLocation(start.getStartLocation());
- node.setEndLocation(end.getEndLocation());
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // class
- // : '.' IDENT
- // ;
- //
- final public CSSNode _class() throws ParseException {
- Token t = null;
- try {
- jj_consume_token(DOT);
- t = jj_consume_token(IDENT);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- CSSNode node = createNode(t);
- node.setName("." + node.getName());
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- //
- // element_name
- // : IDENT | '*'
- // ;
- //
- final public CSSNode elementName() throws ParseException {
- Token t = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- t = jj_consume_token(IDENT);
- break;
- case ASTERISK:
- t = jj_consume_token(ASTERISK);
- break;
- default:
- jj_la1[70] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return createNode(t);}
- throw new Error("Missing return statement in function");
- }
- //
- // attrib
- // : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S*
- // [ IDENT | STRING ] S* ]? ']'
- // ;
- //
- final public CSSNode attrib() throws ParseException {
- Token start = null;
- Token a = null;
- Token b = null;
- Token c = null;
- Token end = null;
- try {
- start = jj_consume_token(LSQUARE);
- label_45:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[71] = jj_gen;
- break label_45;
- }
- jj_consume_token(S);
- }
- a = jj_consume_token(IDENT);
- label_46:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[72] = jj_gen;
- break label_46;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case EQUALS:
- case INCLUDES:
- case DASHMATCH:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case EQUALS:
- b = jj_consume_token(EQUALS);
- break;
- case INCLUDES:
- b = jj_consume_token(INCLUDES);
- break;
- case DASHMATCH:
- b = jj_consume_token(DASHMATCH);
- break;
- default:
- jj_la1[73] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_47:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[74] = jj_gen;
- break label_47;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- c = jj_consume_token(IDENT);
- break;
- case STRING:
- c = jj_consume_token(STRING);
- break;
- default:
- jj_la1[75] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_48:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[76] = jj_gen;
- break label_48;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[77] = jj_gen;
- ;
- }
- end = jj_consume_token(RSQUARE);
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- if (a != null) {
- StringBuffer name = new StringBuffer();
- name.append(a.image);
- if (b != null)
- name.append(" ").append(b.image);
- if (c != null)
- name.append(" ").append(c.image);
- CSSNode node = new CSSNode(name.toString());
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(getEndLocation(end));
- {if (true) return node;}
- }
- {if (true) return null;}
- throw new Error("Missing return statement in function");
- }
- //
- // pseudo
- // : ':' [ IDENT | FUNCTION S* IDENT S* ')' ]
- // ;
- //
- final public CSSNode pseudo() throws ParseException {
- Token start = null;
- Token ident = null;
- Token func = null;
- Token end = null;
- try {
- start = jj_consume_token(COLON);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- ident = jj_consume_token(IDENT);
- break;
- case FUNCTION:
- func = jj_consume_token(FUNCTION);
- label_49:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[78] = jj_gen;
- break label_49;
- }
- jj_consume_token(S);
- }
- ident = jj_consume_token(IDENT);
- label_50:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[79] = jj_gen;
- break label_50;
- }
- jj_consume_token(S);
- }
- end = jj_consume_token(RROUND);
- break;
- default:
- jj_la1[80] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (ParseException pe) {
- addException(pe);
- {if (true) return null;}
- }
- String name = ":" + (func != null ? func.image : "") + (ident != null ? ident.image : "");
- CSSNode node = new CSSNode(name);
- node.setStartLocation(getStartLocation(start));
- node.setEndLocation(end != null ? getEndLocation(end) : getEndLocation(ident));
- {if (true) return node;}
- throw new Error("Missing return statement in function");
- }
- final public CSSNode hash() throws ParseException {
- Token t = null;
- try {
- t = jj_consume_token(HASH);
- } catch (ParseException pe) {
- addException(pe);
- }
- {if (true) return createNode(t);}
- throw new Error("Missing return statement in function");
- }
- final public List<CSSNode> styleDeclaration() throws ParseException {
- List<CSSNode> list = new ArrayList<CSSNode>();
- CSSNode n = null;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- n = declaration();
- list.add(n);
- break;
- default:
- jj_la1[81] = jj_gen;
- ;
- }
- label_51:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[82] = jj_gen;
- break label_51;
- }
- jj_consume_token(SEMICOLON);
- label_52:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[83] = jj_gen;
- break label_52;
- }
- jj_consume_token(S);
- }…