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

Unified Diff: lib/src/codegen/ast_builder.dart

Issue 1069493002: implement opassign, fix bugs in pre/postfix, introduce a let* helper (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: lib/src/codegen/ast_builder.dart
diff --git a/lib/src/codegen/ast_builder.dart b/lib/src/codegen/ast_builder.dart
index 66c00f95b9332c5985670e7218fdee07f4c2cbc2..5c4e6a1a536a99e402c6b6a7f130ab5ceb18ec1b 100644
--- a/lib/src/codegen/ast_builder.dart
+++ b/lib/src/codegen/ast_builder.dart
@@ -95,18 +95,133 @@ class AstBuilder {
return parenthesizedExpression(exp);
}
- static Token _binaryOperation(String oper) {
- switch (oper) {
- case '==':
- return new Token(TokenType.EQ_EQ, 0);
- case '+':
- return new Token(TokenType.PLUS, 0);
- case '-':
- return new Token(TokenType.MINUS, 0);
+ static TokenType getTokenType(String lexeme) {
+ switch (lexeme) {
+ case "&":
+ return TokenType.AMPERSAND;
+ case "&&":
+ return TokenType.AMPERSAND_AMPERSAND;
+ case "&=":
+ return TokenType.AMPERSAND_EQ;
+ case "@":
+ return TokenType.AT;
+ case "!":
+ return TokenType.BANG;
+ case "!=":
+ return TokenType.BANG_EQ;
+ case "|":
+ return TokenType.BAR;
+ case "||":
+ return TokenType.BAR_BAR;
+ case "|=":
+ return TokenType.BAR_EQ;
+ case ":":
+ return TokenType.COLON;
+ case ",":
+ return TokenType.COMMA;
+ case "^":
+ return TokenType.CARET;
+ case "^=":
+ return TokenType.CARET_EQ;
+ case "}":
+ return TokenType.CLOSE_CURLY_BRACKET;
+ case ")":
+ return TokenType.CLOSE_PAREN;
+ case "]":
+ return TokenType.CLOSE_SQUARE_BRACKET;
+ case "=":
+ return TokenType.EQ;
+ case "==":
+ return TokenType.EQ_EQ;
+ case "=>":
+ return TokenType.FUNCTION;
+ case ">":
+ return TokenType.GT;
+ case ">=":
+ return TokenType.GT_EQ;
+ case ">>":
+ return TokenType.GT_GT;
+ case ">>=":
+ return TokenType.GT_GT_EQ;
+ case "#":
+ return TokenType.HASH;
+ case "[]":
+ return TokenType.INDEX;
+ case "[]=":
+ return TokenType.INDEX_EQ;
+ case "is":
+ return TokenType.IS;
+ case "<":
+ return TokenType.LT;
+ case "<=":
+ return TokenType.LT_EQ;
+ case "<<":
+ return TokenType.LT_LT;
+ case "<<=":
+ return TokenType.LT_LT_EQ;
+ case "-":
+ return TokenType.MINUS;
+ case "-=":
+ return TokenType.MINUS_EQ;
+ case "--":
+ return TokenType.MINUS_MINUS;
+ case "{":
+ return TokenType.OPEN_CURLY_BRACKET;
+ case "(":
+ return TokenType.OPEN_PAREN;
+ case "[":
+ return TokenType.OPEN_SQUARE_BRACKET;
+ case "%":
+ return TokenType.PERCENT;
+ case "%=":
+ return TokenType.PERCENT_EQ;
+ case ".":
+ return TokenType.PERIOD;
+ case "..":
+ return TokenType.PERIOD_PERIOD;
+ case "+":
+ return TokenType.PLUS;
+ case "+=":
+ return TokenType.PLUS_EQ;
+ case "++":
+ return TokenType.PLUS_PLUS;
+ case "?":
+ return TokenType.QUESTION;
+ case ";":
+ return TokenType.SEMICOLON;
+ case "/":
+ return TokenType.SLASH;
+ case "/=":
+ return TokenType.SLASH_EQ;
+ case "*":
+ return TokenType.STAR;
+ case "*=":
+ return TokenType.STAR_EQ;
+ case "\${":
+ return TokenType.STRING_INTERPOLATION_EXPRESSION;
+ case "\$":
+ return TokenType.STRING_INTERPOLATION_IDENTIFIER;
+ case "~":
+ return TokenType.TILDE;
+ case "~/":
+ return TokenType.TILDE_SLASH;
+ case "~/=":
+ return TokenType.TILDE_SLASH_EQ;
+ case "`":
+ return TokenType.BACKPING;
+ case "\\":
+ return TokenType.BACKSLASH;
+ case "...":
+ return TokenType.PERIOD_PERIOD_PERIOD;
+ default:
+ return null;
}
- // TODO(vsm): Add cases as needed.
- assert(false);
- return null;
+ }
+
+ static Token _binaryOperation(String oper) {
+ var type = getTokenType(oper);
+ assert(type != null);
+ return new Token(type, 0);
}
static BinaryExpression binaryExpression(

Powered by Google App Engine
This is Rietveld 408576698