- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 24 Feb 2009 23:30:03 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/parser/analyzer In directory hutz:/tmp/cvs-serv22462 Modified Files: CssParser.java SimpleCharStream.java Log Message: generated Index: CssParser.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/CssParser.java,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- CssParser.java 18 Feb 2009 07:02:20 -0000 1.64 +++ CssParser.java 24 Feb 2009 23:30:01 -0000 1.65 @@ -108,7 +108,7 @@ private boolean reinited = false; - static StringBuffer SPACE = new StringBuffer(" "); + static StringBuilder SPACE = new StringBuilder(" "); // to be able to remove a ruleset if the selector is not valid protected boolean validSelector = true; @@ -1801,6 +1801,7 @@ } } jj_consume_token(LBRACE); + validSelector = (context_set.size() > 0); label_56: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -2001,43 +2002,38 @@ } {if (true) return current;} } catch (InvalidParamException ie) { - skipStatement(); - removeThisRule(); + // skipStatement(); + // removeThisRule(); ac.getFrame().addError(new CssError(ie)); - + Token t = getToken(1); + StringBuilder s = new StringBuilder(); + s.append(getToken(0).image); + // eat until , { or EOF + while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) { + s.append(t.image); + getNextToken(); + t = getToken(1); + } {if (true) return null;} } catch (ParseException e) { - validSelector = false; - if (ac.getProfile() != null) { - if(!(ac.getProfile().equals("mobile"))) { - Token t = getToken(1); - StringBuffer s = new StringBuffer(); - s.append(getToken(0).image); - while ((t.kind != COMMA) && (t.kind != LBRACE) && - (t.kind != EOF)) { - s.append(t.image); - getNextToken(); - t = getToken(1); - } - - addError(e, s.toString()); - - {if (true) return null;} - } - } else { - Token t = getToken(1); - StringBuffer s = new StringBuffer(); - s.append(getToken(0).image); - while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) { - s.append(t.image); - getNextToken(); - t = getToken(1); - } - - addError(e, s.toString()); - - {if (true) return null;} + // validSelector = false; + Token t = getToken(1); + StringBuilder s = new StringBuilder("["); + s.append(getToken(0).image); + // eat until , { or EOF + while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) { + s.append(t.image); + getNextToken(); + t = getToken(1); } + s.append(']'); + // if (validSelector) { + addError(e, s.toString()); + // } else { + // addError(e,""); + // } + validSelector = true; + {if (true) return null;} } throw new Error("Missing return statement in function"); } @@ -2241,8 +2237,9 @@ // s.addAttribute("class", convertIdent(n.image.substring(1)), // CssSelectors.ATTRIBUTE_CLASS_SEL); } catch (InvalidParamException e) { - removeThisRule(); - ac.getFrame().addError(new CssError(e)); + // removeThisRule(); + ac.getFrame().addError(new CssError(e)); + {if (true) throw new ParseException(e.getMessage());} } break; case LENGTH: @@ -2258,8 +2255,7 @@ n.image = n.image.substring(1); // the class with the first digit escaped - String cl = "\\" + Integer.toString(n.image.charAt(0), 16); - cl += n.image.substring(1); + String cl = "."+hexEscapeFirst(n.image); String profile = ac.getProfile(); if(profile == null || profile.equals("") || profile.equals("none")) { @@ -2267,13 +2263,14 @@ } if(!profile.equals("css1")) { - addError(new ParseException(ac.getMsg().getString( - "parser.old_class")), - "To make \"." + n.image + "\" a valid class, CSS2" + - " requires the first digit to be escaped " + - "(\"." + cl + "\")"); - s.addClass(new ClassSelector(n.image)); - removeThisRule(); + StringBuilder sb = new StringBuilder(); + Vector<String> param_err = new Vector<String>(2); + param_err.add(n.image); + param_err.add(cl); + sb.append(ac.getMsg().getString("parser.old_class", param_err)); + {if (true) throw new ParseException(sb.toString());} + // s.addClass(new ClassSelector(n.image)); + // removeThisRule(); } else { CssLength length = new CssLength(); @@ -2286,21 +2283,23 @@ isLength = false; } if(isLength) { - addError(new ParseException(ac.getMsg().getString( - "parser.class_dim")), n.image); - s.addClass(new ClassSelector(n.image)); - removeThisRule(); + StringBuilder sb = new StringBuilder(); + sb.append(ac.getMsg().getString("parser.class_dim")); + sb.append(n.image); + {if (true) throw new ParseException(sb.toString());} + // s.addClass(new ClassSelector(n.image)); + // removeThisRule(); } else { try { // for css > 1, we add the rule to have a context, // and we then remove it s.addClass(new ClassSelector(n.image)); - ac.getFrame().addWarning("old_class"); } catch (InvalidParamException e) { - ac.getFrame().addError(new CssError(e)); - removeThisRule(); + {if (true) throw new ParseException(e.getMessage());} + //ac.getFrame().addError(new CssError(e)); + //removeThisRule(); } } } @@ -2700,9 +2699,10 @@ ac.getCssVersion() ,ac);} } } catch(InvalidParamException e) { - //e.printStackTrace(); - removeThisRule(); - ac.getFrame().addError(new CssError(e)); + // removeThisRule(); + // ac.getFrame().addError(new CssError(e)); + validSelector = false; + {if (true) throw new ParseException(e.getMessage());} } break; case COLON: @@ -2713,7 +2713,6 @@ try { s.addPseudoClass(convertIdent(n.image).toLowerCase()); } catch(InvalidParamException e) { - //e.printStackTrace(); removeThisRule(); ac.getFrame().addError(new CssError(e)); } @@ -2885,7 +2884,7 @@ break; case HASH: n = jj_consume_token(HASH); - {if (true) throw new ParseException("Unrecognized ");} + {if (true) throw new ParseException(ac.getMsg().getString("parser.invalid_id_selector"));} break; default: jj_la1[109] = jj_gen; @@ -3415,7 +3414,7 @@ } String skipStatement() throws ParseException { - StringBuffer s = new StringBuffer(); + StringBuilder s = new StringBuilder(); Token tok = getToken(0); boolean first = true; @@ -3473,7 +3472,7 @@ } String skip_to_matching_brace() throws ParseException { - StringBuffer s = new StringBuffer(); + StringBuilder s = new StringBuilder(); Token tok; int nesting = 1; /* FIXME @@ -3505,7 +3504,7 @@ } void skipAfterExpression(Exception e) throws ParseException { - StringBuffer s = new StringBuffer(); + StringBuilder s = new StringBuilder(); s.append(getToken(0).image); while (true) { try { @@ -3658,6 +3657,19 @@ return convertStringIndex(s, 0, s.length(), false); } + String hexEscapeFirst(String s) throws ParseException { + StringBuilder sb = new StringBuilder(); + sb.append('\\').append(Integer.toString(s.charAt(0), 16)); + char c = s.charAt(1); + if (((c >= '0') && (c <= '9')) || + ((c >= 'A') && (c <= 'F')) || + ((c >= 'a') && (c <= 'f'))) { + sb.append(' '); + } + sb.append(s.substring(1)); + return sb.toString(); + } + final private boolean jj_2_1(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_1(); } Index: SimpleCharStream.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/SimpleCharStream.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- SimpleCharStream.java 11 Mar 2008 10:16:14 -0000 1.4 +++ SimpleCharStream.java 24 Feb 2009 23:30:01 -0000 1.5 @@ -195,7 +195,7 @@ char c = buffer[bufpos]; UpdateLineColumn(c); - return c; + return (c); } /**
Received on Tuesday, 24 February 2009 23:30:12 UTC