Chromium Code Reviews| Index: dart/frog/leg/scanner/parser.dart |
| diff --git a/dart/frog/leg/scanner/parser.dart b/dart/frog/leg/scanner/parser.dart |
| index b276a970ce9003ee0f1544c93313e62e40485f48..506107eecbd4e21c7ad0ff4ac7c1f4e0d71ca120 100644 |
| --- a/dart/frog/leg/scanner/parser.dart |
| +++ b/dart/frog/leg/scanner/parser.dart |
| @@ -305,13 +305,19 @@ class Parser<L extends Listener> { |
| } |
| token = parseIdentifier(previous); |
| bool isField; |
| - if (optional('(', token)) { |
| - isField = false; |
| - } else if (optional('=', token) || optional(';', token)) { |
| - isField = true; |
| - } else { |
| - token = listener.unexpected(token); |
| - } |
| + do { |
|
kasperl
2011/11/09 12:59:18
Why do you prefer do { } while (true) over while (
ahe
2011/11/09 13:07:55
No particular reason. I was thinking about writing
|
| + // Loop to allow the listener to rewrite the token stream to |
| + // make the parser happy. |
| + if (optional('(', token)) { |
| + isField = false; |
| + break; |
| + } else if (optional('=', token) || optional(';', token)) { |
| + isField = true; |
| + break; |
| + } else { |
| + token = listener.unexpected(token); |
| + } |
| + } while (true); |
| while (token !== null && |
| token.kind !== LBRACE_TOKEN && |
| token.kind !== SEMICOLON_TOKEN) { |