11<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
22<html lang="en">
3- <!-- $Id: syndata.src,v 2.179 2010-08-23 23:24:17 bbos Exp $ -->
3+ <!-- $Id: syndata.src,v 2.180 2010-09-29 15:52:58 bbos Exp $ -->
44<head>
55<title>Syntax and basic data types</title>
66<meta name="editor" lang="tr" content="Tantek Çelik">
@@ -58,13 +58,15 @@ Lex, in case of multiple matches, the longest match determines the token.
5858<tr><td>IDENT </td><td><code><var>{ident}</var></code></td></tr>
5959<tr><td>ATKEYWORD </td><td><code>@<var>{ident}</var></code></td></tr>
6060<tr><td>STRING </td><td><code><var>{string}</var></code></td></tr>
61- <tr><td>INVALID </td><td><code><var>{invalid}</var></code></td></tr>
61+ <tr><td>BAD_STRING </td><td><code><var>{badstring}</var></code></td></tr>
62+ <tr><td>BAD_URI </td><td><code><var>{baduri}</var></code></td></tr>
63+ <tr><td>BAD_COMMENT </td><td><code><var>{badcomment}</var></code></td></tr>
6264<tr><td>HASH </td><td><code>#<var>{name}</var></code></td></tr>
6365<tr><td>NUMBER </td><td><code><var>{num}</var></code></td></tr>
6466<tr><td>PERCENTAGE </td><td><code><var>{num}</var>%</code></td></tr>
6567<tr><td>DIMENSION </td><td><code><var>{num}{ident}</var></code></td></tr>
6668<tr><td>URI </td><td><code>url\(<var>{w}{string}{w}</var>\)<br>
67- |url\(<var>{w}</var>([!#$%&*-~]|<var>{nonascii}</var>|<var>{escape}</var>)*<var>{w}</var>\)</code></td></tr>
69+ |url\(<var>{w}</var>([!#$%&*-\[\]- ~]|<var>{nonascii}</var>|<var>{escape}</var>)*<var>{w}</var>\)</code></td></tr>
6870<tr><td>UNICODE-RANGE </td><td><code>u\+[0-9a-f?]{1,6}(-[0-9a-f]{1,6})?</code></td></tr>
6971<tr><td>CDO </td><td><code><!--</code></td></tr>
7072<tr><td>CDC </td><td><code>--></code></td></tr>
@@ -103,9 +105,16 @@ the above rules, and neither a single nor a double quote</var>
103105<tr><td>string </td><td><code><var>{string1}</var>|<var>{string2}</var></code></td></tr>
104106<tr><td>string1 </td><td><code>\"([^\n\r\f\\"]|\\{nl}|<var>{escape}</var>)*\"</code></td></tr>
105107<tr><td>string2 </td><td><code>\'([^\n\r\f\\']|\\{nl}|<var>{escape}</var>)*\'</code></td></tr>
106- <tr><td>invalid </td><td><code><var>{invalid1}</var>|<var>{invalid2}</var></code></td></tr>
107- <tr><td>invalid1</td><td><code>\"([^\n\r\f\\"]|\\{nl}|<var>{escape}</var>)*</code></td></tr>
108- <tr><td>invalid2</td><td><code>\'([^\n\r\f\\']|\\{nl}|<var>{escape}</var>)*</code></td></tr>
108+ <tr><td>badstring </td><td><code><var>{badstring1}</var>|<var>{badstring2}</var></code></td></tr>
109+ <tr><td>badstring1 </td><td><code>\"([^\n\r\f\\"]|\\{nl}|<var>{escape}</var>)*\\?</code></td></tr>
110+ <tr><td>badstring2 </td><td><code>\'([^\n\r\f\\']|\\{nl}|<var>{escape}</var>)*\\?</code></td></tr>
111+ <tr><td>badcomment </td><td><code><var>{badcomment1}</var>|<var>{badcomment2}</var></code></td></tr>
112+ <tr><td>badcomment1 </td><td><code>\/\*[^*]*\*+([^/*][^*]*\*+)*</code></td></tr>
113+ <tr><td>badcomment2 </td><td><code>\/\*[^*]*(\*+[^/*][^*]*)*</code></td></tr>
114+ <tr><td>baduri </td><td><code><var>{baduri1}</var>|<var>{baduri2}</var>|<var>{baduri3}</var></code></td></tr>
115+ <tr><td>baduri1 </td><td><code>url\(<var>{w}</var>([!#$%&*-~]|<var>{nonascii}</var>|<var>{escape}</var>)*<var>{w}</var></code></td></tr>
116+ <tr><td>baduri2 </td><td><code>url\(<var>{w}</var><var>{string}</var><var>{w}</var></code></td></tr>
117+ <tr><td>baduri3 </td><td><code>url\(<var>{w}</var><var>{badstring}</var></code></td></tr>
109118<tr><td>nl </td><td><code>\n|\r\n|\r|\f</code></td></tr>
110119<tr><td>w </td><td><code>[ \t\r\n\f]*</code></td></tr>
111120</table>
@@ -130,10 +139,17 @@ property : IDENT;
130139value : [ any | block | ATKEYWORD S* ]+;
131140any : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING
132141 | DELIM | URI | HASH | UNICODE-RANGE | INCLUDES
133- | DASHMATCH | ':' | FUNCTION S* any* ')'
134- | '(' S* any* ')' | '[' S* any* ']' ] S*;
142+ | DASHMATCH | ':' | FUNCTION S* [any|unsused]* ')'
143+ | '(' S* [any|unused]* ')' | '[' S* [any|unused]* ']'
144+ ] S*;
145+ unused : block | ATKEYWORD S* | ';' S* | CDO S* | CDC S*;
135146</pre>
136147
148+ <p>The "unused" production is not used in CSS and will not be used by
149+ any future extension. It is included here only to help with error
150+ handling. (See <a href="#parsing-errors">4.2 "Rules for handling
151+ parsing errors."</a>)
152+
137153<p><a name="comment">COMMENT</a> tokens do not occur
138154in the grammar (to keep it readable), but any number of these tokens
139155may appear anywhere outside other tokens. (Note, however, that a
@@ -263,7 +279,7 @@ href="#parsing-errors">rules for handling parsing errors</a>. However, because t
263279 [[UNICODE]] and [[ISO10646]]).
264280 </p>
265281 </li>
266- <li> In CSS 2.1, a backslash (\) character may indicate one
282+ <li> In CSS 2.1, a backslash (\) character can indicate one
267283 of three types of <span class="index-def" title="backslash
268284 escapes"> <a name="escaped-characters">character
269285 escape.</a></span> Inside a CSS comment, a backslash stands for
0 commit comments