Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: third_party/pkg/angular/lib/core/parser/lexer.dart

Issue 257423008: Update all Angular libs (run update_all.sh). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/pkg/angular/lib/core/parser/lexer.dart
diff --git a/third_party/pkg/angular/lib/core/parser/lexer.dart b/third_party/pkg/angular/lib/core/parser/lexer.dart
index 3361c8f53ae420ce14e5b25759c23d785675ad1f..41c96c3a81595b822f6951be9d0e64ba13df70fb 100644
--- a/third_party/pkg/angular/lib/core/parser/lexer.dart
+++ b/third_party/pkg/angular/lib/core/parser/lexer.dart
@@ -1,34 +1,11 @@
library angular.core.parser.lexer;
-import 'package:angular/core/module.dart' show NgInjectableService;
+import 'package:angular/core/annotation_src.dart';
import 'package:angular/core/parser/characters.dart';
-class Token {
- final int index;
- final String text;
+part 'tokens.dart';
- var value;
- // Tokens should have one of these set.
- String opKey;
- String key;
-
- Token(this.index, this.text);
-
- withOp(op) {
- this.opKey = op;
- }
-
- withGetterSetter(key) {
- this.key = key;
- }
-
- withValue(value) { this.value = value; }
-
- toString() => "Token($text)";
-}
-
-
-@NgInjectableService()
+@Injectable()
class Lexer {
List<Token> call(String text) {
Scanner scanner = new Scanner(text);
@@ -72,7 +49,7 @@ class Scanner {
switch (peek) {
case $PERIOD:
advance();
- return isDigit(peek) ? scanNumber(start) : new Token(start, '.');
+ return isDigit(peek) ? scanNumber(start) : new CharacterToken(start, $PERIOD);
case $LPAREN:
case $RPAREN:
case $LBRACE:
@@ -82,7 +59,7 @@ class Scanner {
case $COMMA:
case $COLON:
case $SEMICOLON:
- return scanCharacter(start, new String.fromCharCode(peek));
+ return scanCharacter(start, peek);
case $SQ:
case $DQ:
return scanString();
@@ -115,17 +92,17 @@ class Scanner {
return null;
}
- Token scanCharacter(int start, String string) {
- assert(peek == string.codeUnitAt(0));
+ Token scanCharacter(int start, int code) {
+ assert(peek == code);
advance();
- return new Token(start, string);
+ return new CharacterToken(start, code);
}
Token scanOperator(int start, String string) {
assert(peek == string.codeUnitAt(0));
assert(OPERATORS.contains(string));
advance();
- return new Token(start, string)..withOp(string);
+ return new OperatorToken(start, string);
}
Token scanComplexOperator(int start, int code, String one, String two) {
@@ -137,7 +114,7 @@ class Scanner {
string += two;
}
assert(OPERATORS.contains(string));
- return new Token(start, string)..withOp(string);
+ return new OperatorToken(start, string);
}
Token scanIdentifier() {
@@ -146,15 +123,7 @@ class Scanner {
advance();
while (isIdentifierPart(peek)) advance();
String string = input.substring(start, index);
- Token result = new Token(start, string);
- // TODO(kasperl): Deal with null, undefined, true, and false in
- // a cleaner and faster way.
- if (OPERATORS.contains(string)) {
- result.withOp(string);
- } else {
- result.withGetterSetter(string);
- }
- return result;
+ return new IdentifierToken(start, string, KEYWORDS.contains(string));
}
Token scanNumber(int start) {
@@ -178,7 +147,7 @@ class Scanner {
}
String string = input.substring(start, index);
num value = simple ? int.parse(string) : double.parse(string);
- return new Token(start, string)..withValue(value);
+ return new NumberToken(start, value);
}
Token scanString() {
@@ -202,7 +171,9 @@ class Scanner {
String hex = input.substring(index + 1, index + 5);
unescaped = int.parse(hex, radix: 16, onError: (ignore) {
error('Invalid unicode escape [\\u$hex]'); });
- for (int i = 0; i < 5; i++) advance();
+ for (int i = 0; i < 5; i++) {
+ advance();
+ }
} else {
unescaped = unescape(peek);
advance();
@@ -226,12 +197,11 @@ class Scanner {
buffer.write(last);
unescaped = buffer.toString();
}
- return new Token(start, string)..withValue(unescaped);
+ return new StringToken(start, string, unescaped);
}
void advance() {
- if (++index >= length) peek = $EOF;
- else peek = input.codeUnitAt(index);
+ peek = ++index >= length ? $EOF : input.codeUnitAt(index);
}
void error(String message, [int offset = 0]) {
@@ -242,11 +212,14 @@ class Scanner {
}
}
-Set<String> OPERATORS = new Set<String>.from([
- 'undefined',
+Set<String> KEYWORDS = new Set<String>.from([
'null',
+ 'undefined',
'true',
'false',
+]);
+
+Set<String> OPERATORS = new Set<String>.from([
'+',
'-',
'*',
« no previous file with comments | « third_party/pkg/angular/lib/core/parser/eval_calls.dart ('k') | third_party/pkg/angular/lib/core/parser/parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698