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

Unified Diff: dart/frog/leg/scanner/parser.dart

Issue 8660004: Parse parenthesized expressions. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: frogsh Created 9 years, 1 month 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
« no previous file with comments | « dart/frog/leg/scanner/listener.dart ('k') | dart/frog/leg/ssa/builder.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « dart/frog/leg/scanner/listener.dart ('k') | dart/frog/leg/ssa/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698