Index: pkg/polymer_expressions/lib/parser.dart |
diff --git a/pkg/polymer_expressions/lib/parser.dart b/pkg/polymer_expressions/lib/parser.dart |
index 176dce76c8d822af019f7ea2832d7fb87fd21b7e..bf8dd66b87071b4ed9a6123fa54d2df9a4c8d312 100644 |
--- a/pkg/polymer_expressions/lib/parser.dart |
+++ b/pkg/polymer_expressions/lib/parser.dart |
@@ -30,9 +30,9 @@ class Parser { |
} |
_advance([int kind, String value]) { |
- if ((kind != null && _token.kind != kind) |
- || (value != null && _token.value != value)) { |
- throw new ParseException("Expected $value: $_token"); |
+ if ((kind != null && (_token == null || _token.kind != kind)) |
+ || (value != null && (_token == null || _token.value != value))) { |
+ throw new ParseException("Expected kind $kind ($value): $_token"); |
} |
_iterator.moveNext(); |
} |
@@ -160,6 +160,8 @@ class Parser { |
return _parseParenthesized(); |
} else if (_token.value == '{') { |
return _parseMapLiteral(); |
+ } else if (_token.value == '[') { |
+ return _parseListLiteral(); |
} |
return null; |
case COLON_TOKEN: |
@@ -171,6 +173,19 @@ class Parser { |
} |
} |
+ ListLiteral _parseListLiteral() { |
+ var items = []; |
+ do { |
+ _advance(); |
+ if (_token.kind == GROUPER_TOKEN && _token.value == ']') { |
+ break; |
+ } |
+ items.add(_parseExpression()); |
+ } while(_token != null && _token.value == ','); |
+ _advance(GROUPER_TOKEN, ']'); |
+ return new ListLiteral(items); |
+ } |
+ |
MapLiteral _parseMapLiteral() { |
var entries = []; |
do { |