OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of csslib.parser; | 5 part of csslib.parser; |
6 | 6 |
7 class Tokenizer extends TokenizerBase { | 7 class Tokenizer extends TokenizerBase { |
8 /** U+ prefix for unicode characters. */ | 8 /** U+ prefix for unicode characters. */ |
9 final UNICODE_U = 'U'.codeUnitAt(0); | 9 final UNICODE_U = 'U'.codeUnitAt(0); |
10 final UNICODE_LOWER_U = 'u'.codeUnitAt(0); | 10 final UNICODE_LOWER_U = 'u'.codeUnitAt(0); |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 ? TokenKind.IMPORTANT | 253 ? TokenKind.IMPORTANT |
254 : -1; | 254 : -1; |
255 } | 255 } |
256 | 256 |
257 return tokId >= 0 ? tokId : TokenKind.IDENTIFIER; | 257 return tokId >= 0 ? tokId : TokenKind.IDENTIFIER; |
258 } | 258 } |
259 | 259 |
260 Token finishIdentifier() { | 260 Token finishIdentifier() { |
261 // If we encounter an escape sequence, remember it so we can post-process | 261 // If we encounter an escape sequence, remember it so we can post-process |
262 // to unescape. | 262 // to unescape. |
263 var chars = []; | 263 var chars = <int>[]; |
264 | 264 |
265 // backup so we can start with the first character | 265 // backup so we can start with the first character |
266 int validateFrom = _index; | 266 int validateFrom = _index; |
267 _index = _startIndex; | 267 _index = _startIndex; |
268 while (_index < _text.length) { | 268 while (_index < _text.length) { |
269 int ch = _text.codeUnitAt(_index); | 269 int ch = _text.codeUnitAt(_index); |
270 | 270 |
271 // If the previous character was "\" we need to escape. T | 271 // If the previous character was "\" we need to escape. T |
272 // http://www.w3.org/TR/CSS21/syndata.html#characters | 272 // http://www.w3.org/TR/CSS21/syndata.html#characters |
273 // if followed by hexadecimal digits, create the appropriate character. | 273 // if followed by hexadecimal digits, create the appropriate character. |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 // http://www.w3.org/TR/CSS21/syndata.html#characters | 447 // http://www.w3.org/TR/CSS21/syndata.html#characters |
448 // Also, escaped character should be allowed. | 448 // Also, escaped character should be allowed. |
449 c == 95 /*_*/ || c >= 0xA0 || c == 92 /*\*/); | 449 c == 95 /*_*/ || c >= 0xA0 || c == 92 /*\*/); |
450 } | 450 } |
451 | 451 |
452 /** Pseudo function expressions identifiers can't have a minus sign. */ | 452 /** Pseudo function expressions identifiers can't have a minus sign. */ |
453 static bool isIdentifierPartExpr(int c) { | 453 static bool isIdentifierPartExpr(int c) { |
454 return (isIdentifierStartExpr(c) || isDigit(c)); | 454 return (isIdentifierStartExpr(c) || isDigit(c)); |
455 } | 455 } |
456 } | 456 } |
OLD | NEW |