OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library dev_compiler.src.codegen.ast_builder; | 5 library dev_compiler.src.codegen.ast_builder; |
6 | 6 |
7 import 'package:analyzer/src/generated/ast.dart'; | 7 import 'package:analyzer/src/generated/ast.dart'; |
8 import 'package:analyzer/src/generated/scanner.dart'; | 8 import 'package:analyzer/src/generated/scanner.dart'; |
9 import 'package:analyzer/src/generated/utilities_dart.dart'; | 9 import 'package:analyzer/src/generated/utilities_dart.dart'; |
10 import 'package:logging/logging.dart' as logger; | 10 import 'package:logging/logging.dart' as logger; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 } | 93 } |
94 | 94 |
95 static Expression parenthesize(Expression exp) { | 95 static Expression parenthesize(Expression exp) { |
96 if (exp is Identifier || | 96 if (exp is Identifier || |
97 exp is ParenthesizedExpression || | 97 exp is ParenthesizedExpression || |
98 exp is FunctionExpressionInvocation || | 98 exp is FunctionExpressionInvocation || |
99 exp is MethodInvocation) return exp; | 99 exp is MethodInvocation) return exp; |
100 return parenthesizedExpression(exp); | 100 return parenthesizedExpression(exp); |
101 } | 101 } |
102 | 102 |
| 103 static PropertyAccess propertyAccess( |
| 104 Expression target, SimpleIdentifier name) { |
| 105 var p = new Token(TokenType.PERIOD, 0); |
| 106 return new PropertyAccess(target, p, name); |
| 107 } |
| 108 |
| 109 static MethodInvocation methodInvoke( |
| 110 Expression target, SimpleIdentifier name, NodeList<Expression> args) { |
| 111 var p = new Token(TokenType.PERIOD, 0); |
| 112 return new MethodInvocation(target, p, name, null, argumentList(args)); |
| 113 } |
| 114 |
103 static TokenType getTokenType(String lexeme) { | 115 static TokenType getTokenType(String lexeme) { |
104 switch (lexeme) { | 116 switch (lexeme) { |
105 case "&": | 117 case "&": |
106 return TokenType.AMPERSAND; | 118 return TokenType.AMPERSAND; |
107 case "&&": | 119 case "&&": |
108 return TokenType.AMPERSAND_AMPERSAND; | 120 return TokenType.AMPERSAND_AMPERSAND; |
109 case "&=": | 121 case "&=": |
110 return TokenType.AMPERSAND_EQ; | 122 return TokenType.AMPERSAND_EQ; |
111 case "@": | 123 case "@": |
112 return TokenType.AT; | 124 return TokenType.AT; |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 case "~/": | 223 case "~/": |
212 return TokenType.TILDE_SLASH; | 224 return TokenType.TILDE_SLASH; |
213 case "~/=": | 225 case "~/=": |
214 return TokenType.TILDE_SLASH_EQ; | 226 return TokenType.TILDE_SLASH_EQ; |
215 case "`": | 227 case "`": |
216 return TokenType.BACKPING; | 228 return TokenType.BACKPING; |
217 case "\\": | 229 case "\\": |
218 return TokenType.BACKSLASH; | 230 return TokenType.BACKSLASH; |
219 case "...": | 231 case "...": |
220 return TokenType.PERIOD_PERIOD_PERIOD; | 232 return TokenType.PERIOD_PERIOD_PERIOD; |
| 233 case "??": |
| 234 return TokenType.QUESTION_QUESTION; |
| 235 case "??=": |
| 236 return TokenType.QUESTION_QUESTION_EQ; |
221 default: | 237 default: |
222 return null; | 238 return null; |
223 } | 239 } |
224 } | 240 } |
225 | 241 |
226 static Token _binaryOperation(String oper) { | 242 static Token _binaryOperation(String oper) { |
227 var type = getTokenType(oper); | 243 var type = getTokenType(oper); |
228 assert(type != null); | 244 assert(type != null); |
229 return new Token(type, 0); | 245 return new Token(type, 0); |
230 } | 246 } |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 Label l = new Label(s, new Token(TokenType.COLON, 0)); | 586 Label l = new Label(s, new Token(TokenType.COLON, 0)); |
571 return new NamedExpression(l, e); | 587 return new NamedExpression(l, e); |
572 } | 588 } |
573 | 589 |
574 static VariableDeclarationStatement variableDeclarationStatement( | 590 static VariableDeclarationStatement variableDeclarationStatement( |
575 VariableDeclarationList varDecl) { | 591 VariableDeclarationList varDecl) { |
576 var semi = new Token(TokenType.SEMICOLON, 0); | 592 var semi = new Token(TokenType.SEMICOLON, 0); |
577 return new VariableDeclarationStatement(varDecl, semi); | 593 return new VariableDeclarationStatement(varDecl, semi); |
578 } | 594 } |
579 } | 595 } |
OLD | NEW |