- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 25 Apr 2012 20:21:55 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/parser/analyzer In directory hutz:/tmp/cvs-serv23918/w3c/css/parser/analyzer Modified Files: CssParser.java CssParser.jj CssParserConstants.java CssParserTokenManager.java Log Message: Finished implementation of css3-background (background and borders) * border is now a single item, instead of one per level * able to parse all the positive tests, some negative ones will need some tuning * Grammar modification to use the '/' between two numbers without matching a ratio Index: CssParserTokenManager.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/CssParserTokenManager.java,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- CssParserTokenManager.java 3 Apr 2012 14:20:53 -0000 1.42 +++ CssParserTokenManager.java 25 Apr 2012 20:21:52 -0000 1.43 @@ -100,7 +100,7 @@ return jjMoveNfa_0(7, 0); case 58: jjmatchedKind = 52; - return jjMoveStringLiteralDfa1_0(0x0L, 0x40000004L); + return jjMoveStringLiteralDfa1_0(0x0L, 0x20000002L); case 59: jjmatchedKind = 44; return jjMoveNfa_0(7, 0); @@ -110,7 +110,7 @@ jjmatchedKind = 42; return jjMoveNfa_0(7, 0); [...6152 lines suppressed...] @@ -6189,8 +6033,8 @@ 0x2L, 0x0L, }; protected SimpleCharStream input_stream; -private final int[] jjrounds = new int[744]; -private final int[] jjstateSet = new int[1488]; +private final int[] jjrounds = new int[716]; +private final int[] jjstateSet = new int[1432]; protected char curChar; /** Constructor. */ public CssParserTokenManager(SimpleCharStream stream){ @@ -6217,7 +6061,7 @@ { int i; jjround = 0x80000001; - for (i = 744; i-- > 0;) + for (i = 716; i-- > 0;) jjrounds[i] = 0x80000000; } Index: CssParser.jj =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/CssParser.jj,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- CssParser.jj 3 Apr 2012 14:20:53 -0000 1.80 +++ CssParser.jj 25 Apr 2012 20:21:52 -0000 1.81 @@ -1,4 +1,5 @@ /* -*-java-extended-*- +/* -*-java-extended-*- * * (c) COPYRIGHT MIT and INRIA, 1997. * Please first read the full copyright statement in file COPYRIGHT.html @@ -542,7 +543,6 @@ | < TIME : <NUM> ( "ms" | "s" ) > | < FREQ : <NUM> "Hz" | <NUM> "kHz" > | < RESOLUTION : <NUM> "dpi" | <NUM> "dpcm" > - | < RATIO : <NUM> ( <_S> )* "/" ( <_S> )* <NUM> > | < DIMEN : <NUM> <NMSTART> ( <NMCHAR> )* > | < PERCENTAGE : <NUM> "%" > | < NUMBER : <NUM> > @@ -916,6 +916,19 @@ } } +void ratio(CssExpression exp, char operator) : +{ +Token w,h,n; +} +{ + + ( w=<NUMBER> ( <S> )* <DIV> ( <S> )* h=<NUMBER> ) { + StringBuilder sb = new StringBuilder(); + sb.append(w.image).append('/').append(h.image); + n = Token.newToken(w.kind, sb.toString()); + setValue(new CssRatio(), exp, operator, n, NUMBER); + } +} void mediaquerylist(AtRuleMedia mediaRule) : { @@ -961,7 +974,7 @@ } mediaFeatureName = convertIdent(n.image); } ( <S> )* - ( <COLON> ( <S> )* val=expr() )? + ( <COLON> ( <S> )* val=mediaexpr() )? <LPARAN> ( <S> )* { MediaFeature mf = handleMediaFeature(mediaRule, mediaFeatureName, val); mediaRule.addMediaFeature(mf, ac); @@ -2122,6 +2135,18 @@ /** * @exception ParseException exception during the parse */ +CssExpression mediaexpr() : +{ + CssExpression values = new CssExpression(); +} +{ + mediaterm(values) ( operator(values) mediaterm(values) )* + { return values; } +} + +/** + * @exception ParseException exception during the parse + */ void term(CssExpression exp) : { Token n; char operator = ' '; @@ -2139,7 +2164,6 @@ | n=<TIME> { setValue(new CssTime(), exp, operator, n, TIME); } | n=<FREQ> { setValue(new CssFrequency(), exp, operator, n, FREQ); } | n=<RESOLUTION> { setValue(new CssResolution(), exp, operator, n, RESOLUTION); } - | n=<RATIO> { setValue(new CssRatio(), exp, operator, n, RATIO); } | n=<DIMEN> { addError(new ParseException(ac.getMsg().getString("parser.unknown-dimension")), n.image); } | func=function() { setValue(func, exp, operator, null, FUNCTION); } @@ -2184,6 +2208,67 @@ /** * @exception ParseException exception during the parse */ +void mediaterm(CssExpression exp) : +{ Token n; + char operator = ' '; + CssValue func; +} +{ + ( ( operator=unaryOperator() )? + ( ( LOOKAHEAD( <NUMBER> ( <S> )* "/" ) ratio(exp, operator) + | n=<NUMBER> { setValue(new CssNumber(), exp, operator, n, NUMBER); } + ) + | n=<PERCENTAGE> { setValue(new CssPercentage(), exp, operator, n, + PERCENTAGE); } + | n=<LENGTH> { setValue(new CssLength(), exp, operator, n, LENGTH); } + | n=<EMS> { setValue(new CssLength(), exp, operator, n, EMS); } + | n=<EXS> { setValue(new CssLength(), exp, operator, n, EXS); } + | n=<ANGLE> { setValue(new CssAngle(), exp, operator, n, ANGLE);} + | n=<TIME> { setValue(new CssTime(), exp, operator, n, TIME); } + | n=<FREQ> { setValue(new CssFrequency(), exp, operator, n, FREQ); } + | n=<RESOLUTION> { setValue(new CssResolution(), exp, operator, n, RESOLUTION); } + | n=<DIMEN> { + addError(new ParseException(ac.getMsg().getString("parser.unknown-dimension")), n.image); } + | func=function() { setValue(func, exp, operator, null, FUNCTION); } + ) ( <S> )* ) + | (( n=<STRING> { setValue(new CssString(), exp, operator, n, STRING); } + | n=<IDENT> + { + /* + * Common error : + * H1 { + * color : black + * background : white + * } + */ + Token t = getToken(1); + Token semicolon = new Token(); + semicolon.kind = SEMICOLON; + semicolon.image = ";"; + if (t.kind == COLON) { + /* @@SEEME. (generate a warning?) */ + /* @@SEEME if expression is a single ident, + generate an error ? */ + addError(new ParseException(ac.getMsg().getString("parser.semi-colon")), + (CssExpression) null); + rejectToken(semicolon); + } else { + setValue(new CssIdent(), exp, operator, n, IDENT); + } + } + | hexcolor(exp) + | n=<URL> { + CssURL _u = new CssURL(); + _u.set(n.image, ac, url); + exp.addValue(_u); + } + | n=<UNICODERANGE> { setValue(new CssUnicodeRange(), exp, operator, n, + UNICODERANGE); } + ) ( <S> )* ) +} +/** + * @exception ParseException exception during the parse + */ CssValue function() : {Token n; CssExpression exp; Index: CssParser.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/CssParser.java,v retrieving revision 1.82 retrieving revision 1.83 diff -u -d -r1.82 -r1.83 --- CssParser.java 3 Apr 2012 14:20:53 -0000 1.82 +++ CssParser.java 25 Apr 2012 20:21:52 -0000 1.83 @@ -617,7 +617,7 @@ case PSEUDOELEMENT_SYM: case CLASS: case FUNCTIONNOT: - case 98: + case 97: ruleSet(); break; case MEDIA_SYM: @@ -966,7 +966,7 @@ case PSEUDOELEMENT_SYM: case CLASS: [...1947 lines suppressed...] if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; @@ -4119,7 +4389,7 @@ private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 1; i++) { + for (int i = 0; i < 2; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -4127,6 +4397,7 @@ jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; switch (i) { case 0: jj_3_1(); break; + case 1: jj_3_2(); break; } } p = p.next; Index: CssParserConstants.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/analyzer/CssParserConstants.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- CssParserConstants.java 3 Apr 2012 14:20:53 -0000 1.19 +++ CssParserConstants.java 25 Apr 2012 20:21:52 -0000 1.20 @@ -131,79 +131,77 @@ /** RegularExpression Id. */ int RESOLUTION = 60; /** RegularExpression Id. */ - int RATIO = 61; - /** RegularExpression Id. */ - int DIMEN = 62; + int DIMEN = 61; /** RegularExpression Id. */ - int PERCENTAGE = 63; + int PERCENTAGE = 62; /** RegularExpression Id. */ - int NUMBER = 64; + int NUMBER = 63; /** RegularExpression Id. */ - int IMPORTANT_SYM = 65; + int IMPORTANT_SYM = 64; /** RegularExpression Id. */ - int PSEUDOELEMENT_SYM = 66; + int PSEUDOELEMENT_SYM = 65; /** RegularExpression Id. */ - int CHARSET_SYM = 67; + int CHARSET_SYM = 66; /** RegularExpression Id. */ - int IMPORT_SYM = 68; + int IMPORT_SYM = 67; /** RegularExpression Id. */ - int NAMESPACE_SYM = 69; + int NAMESPACE_SYM = 68; /** RegularExpression Id. */ - int MEDIA_SYM = 70; + int MEDIA_SYM = 69; /** RegularExpression Id. */ - int PAGE_SYM = 71; + int PAGE_SYM = 70; /** RegularExpression Id. */ - int FONT_FACE_SYM = 72; + int FONT_FACE_SYM = 71; /** RegularExpression Id. */ - int PREF_SYM = 73; + int PREF_SYM = 72; /** RegularExpression Id. */ - int COLOR_PROFILE = 74; + int COLOR_PROFILE = 73; /** RegularExpression Id. */ - int ATTOP = 75; + int ATTOP = 74; /** RegularExpression Id. */ - int ATRIGHT = 76; + int ATRIGHT = 75; /** RegularExpression Id. */ - int ATBOTTOM = 77; + int ATBOTTOM = 76; /** RegularExpression Id. */ - int ATLEFT = 78; + int ATLEFT = 77; /** RegularExpression Id. */ - int ATCOUNTER = 79; + int ATCOUNTER = 78; /** RegularExpression Id. */ - int PHONETIC_ALPHABET_SYM = 80; + int PHONETIC_ALPHABET_SYM = 79; /** RegularExpression Id. */ - int ATKEYWORD = 81; + int ATKEYWORD = 80; /** RegularExpression Id. */ - int RANGE0 = 82; + int RANGE0 = 81; /** RegularExpression Id. */ - int RANGE1 = 83; + int RANGE1 = 82; /** RegularExpression Id. */ - int RANGE2 = 84; + int RANGE2 = 83; /** RegularExpression Id. */ - int RANGE3 = 85; + int RANGE3 = 84; /** RegularExpression Id. */ - int RANGE4 = 86; + int RANGE4 = 85; /** RegularExpression Id. */ - int RANGE5 = 87; + int RANGE5 = 86; /** RegularExpression Id. */ - int RANGE6 = 88; + int RANGE6 = 87; /** RegularExpression Id. */ - int RANGE = 89; + int RANGE = 88; /** RegularExpression Id. */ - int UNI = 90; + int UNI = 89; /** RegularExpression Id. */ - int UNICODERANGE = 91; + int UNICODERANGE = 90; /** RegularExpression Id. */ - int CLASS = 92; + int CLASS = 91; /** RegularExpression Id. */ - int FUNCTIONLANG = 93; + int FUNCTIONLANG = 92; /** RegularExpression Id. */ - int FUNCTIONNOT = 94; + int FUNCTIONNOT = 93; /** RegularExpression Id. */ - int FUNCTION = 95; + int FUNCTION = 94; /** RegularExpression Id. */ - int HTMLSTARTTAG = 96; + int HTMLSTARTTAG = 95; /** RegularExpression Id. */ - int HTMLENDTAG = 97; + int HTMLENDTAG = 96; /** Lexical state. */ int DEFAULT = 0; @@ -271,7 +269,6 @@ "<TIME>", "<FREQ>", "<RESOLUTION>", - "<RATIO>", "<DIMEN>", "<PERCENTAGE>", "<NUMBER>",
Received on Wednesday, 25 April 2012 20:22:28 UTC