- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 14 Feb 2009 09:05:05 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/parser/analyzer In directory hutz:/tmp/cvs-serv2661/org/w3c/css/parser/analyzer Modified Files: CssParser.java CssParser.jj Log Message: support of @charset (generating re-parsing using the new charset definition) Index: CssParser.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/CssParser.java,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- CssParser.java 14 Feb 2009 00:12:45 -0000 1.54 +++ CssParser.java 14 Feb 2009 09:05:03 -0000 1.55 @@ -106,6 +106,8 @@ */ protected boolean markRule; + private boolean reinited = false; + static StringBuffer SPACE = new StringBuffer(" "); // to be able to remove a ruleset if the selector is not valid @@ -162,18 +164,24 @@ * @param stream the stream data to parse. * @param ac the new ac to use for parsing. */ - public void ReInitWithAc(InputStream stream, ApplContext ac, String charset) { - InputStream is = new CommentSkipperInputStream(stream); + public void ReInitWithAc(InputStream stream, ApplContext ac, + String charset) + { + InputStream is = /*new CommentSkipperInputStream(stream);*/stream; if (charset == null) { charset = "iso-8859-1"; } InputStreamReader isr = null; try { isr = new InputStreamReader(is, charset); - } catch (UnsupportedEncodingException uex) {}; // reinit, it can not happen... + } catch (UnsupportedEncodingException uex) { + isr = new InputStreamReader(is); + } + // reinit, it can not happen... // ...in theory ;) ReInit(isr); markRule = false; + reinited = true; setApplContext(ac); } @@ -386,7 +394,8 @@ jj_consume_token(-1); throw new ParseException(); } - addError ( new ParseException(ac.getMsg().getString("generator.dontmixhtml")), n.image); + addError ( +new ParseException(ac.getMsg().getString("generator.dontmixhtml")), n.image); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CHARSET_SYM: @@ -452,7 +461,8 @@ } afterImportDeclaration(); } catch (TokenMgrError err) { - addError (new ParseException(ac.getMsg().getString("generator.unrecognize")), err.getMessage()); + addError (new ParseException(ac.getMsg().getString("generator.unrecognize")), + err.getMessage()); } jj_consume_token(0); } @@ -494,9 +504,10 @@ } semicolonToken = jj_consume_token(SEMICOLON); // the @charset must be at the beginning of the document - if(charsetToken.beginLine != 1 || charsetToken.beginColumn != 1) { + if(charsetToken.beginLine != 1 || + charsetToken.beginColumn != 1) { {if (true) throw new ParseException( - ac.getMsg().getString("parser.charset"));} + ac.getMsg().getString("parser.charset"));} } // stricter rule for CSS21 and soon for CSS3 if ("css21".equals(ac.getCssVersion())) { @@ -508,7 +519,8 @@ if ( (nb_S != 1) || (!"@charset".equals(charsetToken.image)) || (!" ".equals(space1Token.image)) || - (space2Token != null && !"".equals(space2Token.image)) || + (space2Token != null && + !"".equals(space2Token.image)) || (space1Token.specialToken != null) || (n.specialToken != null) || (semicolonToken.specialToken != null) || @@ -520,6 +532,7 @@ } addCharSet(n.image.substring(1, n.image.length()-1)); } catch (Exception e) { +e.printStackTrace(); String skip = charsetToken + ((space1Token == null) ? "" : space1Token.image) + n + @@ -582,14 +595,13 @@ } // quite ugly but necessary to avoid probably a lot of changes in the // grammar, still having a beatiful error message - else if(ret.startsWith("@charset")) { + else if (!reinited && ret.startsWith("@charset")) { ParseException e = new ParseException(ac.getMsg().getString("parser.charset")); addError(e, ret); - } - else { + } else if (!reinited) { ParseException e = - new ParseException(ac.getMsg().getString("generator.unrecognize")); + new ParseException(ac.getMsg().getString("generator.unrecognize")); addError(e, ret); } } @@ -3616,14 +3628,6 @@ finally { jj_save(0, xla); } } - final private boolean jj_3_1() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_83()) jj_scanpos = xsp; - if (jj_scan_token(98)) return true; - return false; - } - final private boolean jj_3R_83() { Token xsp; xsp = jj_scanpos; @@ -3634,6 +3638,14 @@ return false; } + final private boolean jj_3_1() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_83()) jj_scanpos = xsp; + if (jj_scan_token(98)) return true; + return false; + } + public CssParserTokenManager token_source; SimpleCharStream jj_input_stream; public Token token, jj_nt; Index: CssParser.jj =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/CssParser.jj,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- CssParser.jj 14 Feb 2009 00:12:32 -0000 1.54 +++ CssParser.jj 14 Feb 2009 09:05:03 -0000 1.55 @@ -126,6 +126,8 @@ */ protected boolean markRule; + private boolean reinited = false; + static StringBuffer SPACE = new StringBuffer(" "); // to be able to remove a ruleset if the selector is not valid @@ -182,18 +184,24 @@ * @param stream the stream data to parse. * @param ac the new ac to use for parsing. */ - public void ReInitWithAc(InputStream stream, ApplContext ac, String charset) { - InputStream is = new CommentSkipperInputStream(stream); + public void ReInitWithAc(InputStream stream, ApplContext ac, + String charset) + { + InputStream is = /*new CommentSkipperInputStream(stream);*/stream; if (charset == null) { charset = "iso-8859-1"; } InputStreamReader isr = null; try { isr = new InputStreamReader(is, charset); - } catch (UnsupportedEncodingException uex) {}; // reinit, it can not happen... + } catch (UnsupportedEncodingException uex) { + isr = new InputStreamReader(is); + } + // reinit, it can not happen... // ...in theory ;) ReInit(isr); markRule = false; + reinited = true; setApplContext(ac); } @@ -621,14 +629,18 @@ try { // used as an error recovery for HTML tags in CSS pages ( ( n=<HTMLSTARTTAG> | n=<HTMLENDTAG> ) { - addError ( new ParseException(ac.getMsg().getString("generator.dontmixhtml")), n.image); } )* + addError ( +new ParseException(ac.getMsg().getString("generator.dontmixhtml")), n.image); + } + )* ( charset() )? ( <S> | <CDO> | <CDC> )* ( importDeclaration() ( ignoreStatement() ) )* ( namespaceDeclaration() ( ignoreStatement() ) )* afterImportDeclaration() } catch (TokenMgrError err) { - addError (new ParseException(ac.getMsg().getString("generator.unrecognize")), err.getMessage()); + addError (new ParseException(ac.getMsg().getString("generator.unrecognize")), + err.getMessage()); } <EOF> } @@ -648,9 +660,10 @@ n=<STRING> ( space2Token=<S> )* semicolonToken=<SEMICOLON> { // the @charset must be at the beginning of the document - if(charsetToken.beginLine != 1 || charsetToken.beginColumn != 1) { + if(charsetToken.beginLine != 1 || + charsetToken.beginColumn != 1) { throw new ParseException( - ac.getMsg().getString("parser.charset")); + ac.getMsg().getString("parser.charset")); } // stricter rule for CSS21 and soon for CSS3 if ("css21".equals(ac.getCssVersion())) { @@ -662,7 +675,8 @@ if ( (nb_S != 1) || (!"@charset".equals(charsetToken.image)) || (!" ".equals(space1Token.image)) || - (space2Token != null && !"".equals(space2Token.image)) || + (space2Token != null && + !"".equals(space2Token.image)) || (space1Token.specialToken != null) || (n.specialToken != null) || (semicolonToken.specialToken != null) || @@ -675,6 +689,7 @@ addCharSet(n.image.substring(1, n.image.length()-1)); } } catch (Exception e) { +e.printStackTrace(); String skip = charsetToken + ((space1Token == null) ? "" : space1Token.image) + n + @@ -695,14 +710,13 @@ } // quite ugly but necessary to avoid probably a lot of changes in the // grammar, still having a beatiful error message - else if(ret.startsWith("@charset")) { + else if (!reinited && ret.startsWith("@charset")) { ParseException e = new ParseException(ac.getMsg().getString("parser.charset")); addError(e, ret); - } - else { + } else if (!reinited) { ParseException e = - new ParseException(ac.getMsg().getString("generator.unrecognize")); + new ParseException(ac.getMsg().getString("generator.unrecognize")); addError(e, ret); } }
Received on Saturday, 14 February 2009 09:05:15 UTC