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

Side by Side Diff: pkg/compiler/lib/src/js/builder.dart

Issue 839323003: Implementation of async-await transformation on js ast. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Implement new ssa-nodes in ssa-tracer. Created 5 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // Utilities for building JS ASTs at runtime. Contains a builder class 5 // Utilities for building JS ASTs at runtime. Contains a builder class
6 // and a parser that parses part of the language. 6 // and a parser that parses part of the language.
7 7
8 part of js; 8 part of js;
9 9
10 10
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 String last = lastToken; 709 String last = lastToken;
710 if (acceptCategory(ALPHA)) { 710 if (acceptCategory(ALPHA)) {
711 if (last == "true") { 711 if (last == "true") {
712 return new LiteralBool(true); 712 return new LiteralBool(true);
713 } else if (last == "false") { 713 } else if (last == "false") {
714 return new LiteralBool(false); 714 return new LiteralBool(false);
715 } else if (last == "null") { 715 } else if (last == "null") {
716 return new LiteralNull(); 716 return new LiteralNull();
717 } else if (last == "function") { 717 } else if (last == "function") {
718 return parseFunctionExpression(); 718 return parseFunctionExpression();
719 } else if (last == "this") {
720 return new This();
719 } else { 721 } else {
720 return new VariableUse(last); 722 return new VariableUse(last);
721 } 723 }
722 } else if (acceptCategory(LPAREN)) { 724 } else if (acceptCategory(LPAREN)) {
723 Expression expression = parseExpression(); 725 Expression expression = parseExpression();
724 expectCategory(RPAREN); 726 expectCategory(RPAREN);
725 return expression; 727 return expression;
726 } else if (acceptCategory(STRING)) { 728 } else if (acceptCategory(STRING)) {
727 return new LiteralString(last); 729 return new LiteralString(last);
728 } else if (acceptCategory(NUMERIC)) { 730 } else if (acceptCategory(NUMERIC)) {
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 if (acceptString('while')) return parseWhile(); 1111 if (acceptString('while')) return parseWhile();
1110 1112
1111 if (acceptString('do')) return parseDo(); 1113 if (acceptString('do')) return parseDo();
1112 1114
1113 if (acceptString('switch')) return parseSwitch(); 1115 if (acceptString('switch')) return parseSwitch();
1114 1116
1115 if (lastToken == 'case') error("Case outside switch."); 1117 if (lastToken == 'case') error("Case outside switch.");
1116 1118
1117 if (lastToken == 'default') error("Default outside switch."); 1119 if (lastToken == 'default') error("Default outside switch.");
1118 1120
1121 if (lastToken == 'yield') return parseYield();
1122
1119 if (lastToken == 'with') { 1123 if (lastToken == 'with') {
1120 error('Not implemented in mini parser'); 1124 error('Not implemented in mini parser');
1121 } 1125 }
1126
1122 } 1127 }
1123 1128
1124 bool checkForInterpolatedStatement = lastCategory == HASH; 1129 bool checkForInterpolatedStatement = lastCategory == HASH;
1125 1130
1126 Expression expression = parseExpression(); 1131 Expression expression = parseExpression();
1127 1132
1128 if (expression is VariableUse && acceptCategory(COLON)) { 1133 if (expression is VariableUse && acceptCategory(COLON)) {
1129 return new LabeledStatement(expression.name, parseStatement()); 1134 return new LabeledStatement(expression.name, parseStatement());
1130 } 1135 }
1131 1136
(...skipping 14 matching lines...) Expand all
1146 return new ExpressionStatement(expression); 1151 return new ExpressionStatement(expression);
1147 } 1152 }
1148 1153
1149 Statement parseReturn() { 1154 Statement parseReturn() {
1150 if (acceptSemicolon()) return new Return(); 1155 if (acceptSemicolon()) return new Return();
1151 Expression expression = parseExpression(); 1156 Expression expression = parseExpression();
1152 expectSemicolon(); 1157 expectSemicolon();
1153 return new Return(expression); 1158 return new Return(expression);
1154 } 1159 }
1155 1160
1161 Statement parseYield() {
1162 bool hasStar = acceptString('*');
1163 Expression expression = parseExpression();
1164 expectSemicolon();
1165 return new Yield(expression, hasStar);
1166 }
1167
1156 Statement parseThrow() { 1168 Statement parseThrow() {
1157 if (skippedNewline) error('throw expression must be on same line'); 1169 if (skippedNewline) error('throw expression must be on same line');
1158 Expression expression = parseExpression(); 1170 Expression expression = parseExpression();
1159 expectSemicolon(); 1171 expectSemicolon();
1160 return new Throw(expression); 1172 return new Throw(expression);
1161 } 1173 }
1162 1174
1163 Statement parseBreakOrContinue(constructor) { 1175 Statement parseBreakOrContinue(constructor) {
1164 var identifier = lastToken; 1176 var identifier = lastToken;
1165 if (!skippedNewline && acceptCategory(ALPHA)) { 1177 if (!skippedNewline && acceptCategory(ALPHA)) {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 Catch parseCatch() { 1327 Catch parseCatch() {
1316 expectCategory(LPAREN); 1328 expectCategory(LPAREN);
1317 String identifier = lastToken; 1329 String identifier = lastToken;
1318 expectCategory(ALPHA); 1330 expectCategory(ALPHA);
1319 expectCategory(RPAREN); 1331 expectCategory(RPAREN);
1320 expectCategory(LBRACE); 1332 expectCategory(LBRACE);
1321 Block body = parseBlock(); 1333 Block body = parseBlock();
1322 return new Catch(new VariableDeclaration(identifier), body); 1334 return new Catch(new VariableDeclaration(identifier), body);
1323 } 1335 }
1324 } 1336 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698