| Index: dart/frog/leg/scanner/parser.dart
|
| diff --git a/dart/frog/leg/scanner/parser.dart b/dart/frog/leg/scanner/parser.dart
|
| index d50f8a95df4c3bdda63e61d4931e28730359c999..ff09e21f6d3aaec971bb25cd68d961b6fc7c5e50 100644
|
| --- a/dart/frog/leg/scanner/parser.dart
|
| +++ b/dart/frog/leg/scanner/parser.dart
|
| @@ -634,12 +634,23 @@ class Parser extends PartialParser/* <NodeListener> Frog bug #320 */ {
|
| throw 'not yet implemented';
|
| }
|
| }
|
| + } else if (kind === LPAREN_TOKEN) {
|
| + return parseParenthesizedExpression(token);
|
| } else {
|
| listener.unexpected(token);
|
| throw 'not yet implemented';
|
| }
|
| }
|
|
|
| + Token parseParenthesizedExpression(Token token) {
|
| + BeginGroupToken begin = token;
|
| + token = expect('(', token);
|
| + token = parseExpression(token);
|
| + assert(begin.endGroup === token);
|
| + listener.handleParenthesizedExpression(begin);
|
| + return expect(')', token);
|
| + }
|
| +
|
| Token parseLiteralInt(Token token) {
|
| listener.handleLiteralInt(token);
|
| return token.next;
|
| @@ -738,8 +749,7 @@ class Parser extends PartialParser/* <NodeListener> Frog bug #320 */ {
|
| Token ifToken = token;
|
| listener.beginIfStatement(ifToken);
|
| token = expect('if', token);
|
| - expect('(', token);
|
| - token = parseArguments(token);
|
| + token = parseParenthesizedExpression(token);
|
| token = parseStatement(token);
|
| Token elseToken = null;
|
| if (optional('else', token)) {
|
| @@ -769,9 +779,7 @@ class Parser extends PartialParser/* <NodeListener> Frog bug #320 */ {
|
| Token whileToken = token;
|
| listener.beginWhileStatement(whileToken);
|
| token = expect('while', token);
|
| - token = expect('(', token);
|
| - token = parseExpression(token);
|
| - token = expect(')', token);
|
| + token = parseParenthesizedExpression(token);
|
| token = parseStatement(token);
|
| listener.endWhileStatement(whileToken, token);
|
| return token;
|
| @@ -784,9 +792,7 @@ class Parser extends PartialParser/* <NodeListener> Frog bug #320 */ {
|
| token = parseStatement(token);
|
| Token whileToken = token;
|
| token = expect('while', token);
|
| - token = expect('(', token);
|
| - token = parseExpression(token);
|
| - token = expect(')', token);
|
| + token = parseParenthesizedExpression(token);
|
| listener.endDoWhileStatement(doToken, whileToken, token);
|
| return expectSemicolon(token);
|
| }
|
|
|