| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 dart_tree_printer; | 5 library dart_tree_printer; |
| 6 | 6 |
| 7 import 'dart_printer.dart'; | 7 import 'dart_printer.dart'; |
| 8 import '../tree/tree.dart' as tree; | 8 import '../tree/tree.dart' as tree; |
| 9 import '../scanner/scannerlib.dart'; | 9 import '../scanner/scannerlib.dart'; |
| 10 import '../util/util.dart'; | 10 import '../util/util.dart'; |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 selector = makeIdentifier(left.fieldName); | 261 selector = makeIdentifier(left.fieldName); |
| 262 arguments = singleton(makeExpression(exp.right)); | 262 arguments = singleton(makeExpression(exp.right)); |
| 263 } else if (left is IndexExpression) { | 263 } else if (left is IndexExpression) { |
| 264 receiver = makeExp(left.object, PRIMARY, beginStmt: beginStmt); | 264 receiver = makeExp(left.object, PRIMARY, beginStmt: beginStmt); |
| 265 selector = new tree.Operator(indexToken); | 265 selector = new tree.Operator(indexToken); |
| 266 arguments = bracketList(',', | 266 arguments = bracketList(',', |
| 267 [makeExpression(left.index), makeExpression(exp.right)]); | 267 [makeExpression(left.index), makeExpression(exp.right)]); |
| 268 } else { | 268 } else { |
| 269 throw "Unexpected left-hand side of assignment: ${left}"; | 269 throw "Unexpected left-hand side of assignment: ${left}"; |
| 270 } | 270 } |
| 271 tree.Operator op = new tree.Operator(assignmentToken(exp.operatorName)); | 271 tree.Operator op = new tree.Operator(assignmentToken(exp.operator)); |
| 272 result = new tree.SendSet(receiver, selector, op, arguments); | 272 result = new tree.SendSet(receiver, selector, op, arguments); |
| 273 if (left is Identifier) { | 273 if (left is Identifier) { |
| 274 setElement(result, element, exp); | 274 setElement(result, element, exp); |
| 275 } | 275 } |
| 276 precedence = EXPRESSION; | 276 precedence = EXPRESSION; |
| 277 } else if (exp is BinaryOperator) { | 277 } else if (exp is BinaryOperator) { |
| 278 precedence = BINARY_PRECEDENCE[exp.operatorName]; | 278 precedence = BINARY_PRECEDENCE[exp.operator]; |
| 279 int deltaLeft = isAssociativeBinaryOperator(precedence) ? 0 : 1; | 279 int deltaLeft = isAssociativeBinaryOperator(precedence) ? 0 : 1; |
| 280 result = new tree.Send( | 280 result = new tree.Send( |
| 281 makeExp(exp.left, precedence + deltaLeft, beginStmt: beginStmt), | 281 makeExp(exp.left, precedence + deltaLeft, beginStmt: beginStmt), |
| 282 new tree.Operator(binopToken(exp.operatorName)), | 282 new tree.Operator(binopToken(exp.operator)), |
| 283 singleton(makeExp(exp.right, precedence + 1))); | 283 singleton(makeExp(exp.right, precedence + 1))); |
| 284 } else if (exp is CallFunction) { | 284 } else if (exp is CallFunction) { |
| 285 precedence = CALLEE; | 285 precedence = CALLEE; |
| 286 tree.Node selector; | 286 tree.Node selector; |
| 287 Expression callee = exp.callee; | 287 Expression callee = exp.callee; |
| 288 if (callee is Identifier) { | 288 if (callee is Identifier) { |
| 289 selector = makeIdentifier(callee.name); | 289 selector = makeIdentifier(callee.name); |
| 290 } else { | 290 } else { |
| 291 selector = makeExp(callee, CALLEE, beginStmt: beginStmt); | 291 selector = makeExp(callee, CALLEE, beginStmt: beginStmt); |
| 292 } | 292 } |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 } else if (lvalue is FieldExpression) { | 372 } else if (lvalue is FieldExpression) { |
| 373 receiver = makeExp(lvalue.object, PRIMARY, beginStmt: innerBeginStmt); | 373 receiver = makeExp(lvalue.object, PRIMARY, beginStmt: innerBeginStmt); |
| 374 selector = makeIdentifier(lvalue.fieldName); | 374 selector = makeIdentifier(lvalue.fieldName); |
| 375 } else if (lvalue is IndexExpression) { | 375 } else if (lvalue is IndexExpression) { |
| 376 receiver = makeExp(lvalue.object, PRIMARY, beginStmt: innerBeginStmt); | 376 receiver = makeExp(lvalue.object, PRIMARY, beginStmt: innerBeginStmt); |
| 377 selector = new tree.Operator(indexToken); | 377 selector = new tree.Operator(indexToken); |
| 378 argument = makeExpression(lvalue.index); | 378 argument = makeExpression(lvalue.index); |
| 379 } else { | 379 } else { |
| 380 throw "Unrecognized left-hand side: ${lvalue}"; | 380 throw "Unrecognized left-hand side: ${lvalue}"; |
| 381 } | 381 } |
| 382 tree.Operator op = new tree.Operator(incrementToken(exp.operatorName)); | 382 tree.Operator op = new tree.Operator(incrementToken(exp.operator)); |
| 383 if (exp.isPrefix) { | 383 if (exp.isPrefix) { |
| 384 precedence = UNARY; | 384 precedence = UNARY; |
| 385 result = new tree.SendSet.prefix(receiver, selector, op, argument); | 385 result = new tree.SendSet.prefix(receiver, selector, op, argument); |
| 386 } else { | 386 } else { |
| 387 precedence = POSTFIX_INCREMENT; | 387 precedence = POSTFIX_INCREMENT; |
| 388 result = new tree.SendSet.postfix(receiver, selector, op, argument); | 388 result = new tree.SendSet.postfix(receiver, selector, op, argument); |
| 389 } | 389 } |
| 390 } else if (exp is IndexExpression) { | 390 } else if (exp is IndexExpression) { |
| 391 precedence = CALLEE; | 391 precedence = CALLEE; |
| 392 result = new tree.Send( | 392 result = new tree.Send( |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 } else if (exp is Throw) { | 458 } else if (exp is Throw) { |
| 459 precedence = EXPRESSION; // ??? | 459 precedence = EXPRESSION; // ??? |
| 460 result = new tree.Throw( | 460 result = new tree.Throw( |
| 461 makeExpression(exp.expression), | 461 makeExpression(exp.expression), |
| 462 throwToken, | 462 throwToken, |
| 463 throwToken); // endToken not used by unparser | 463 throwToken); // endToken not used by unparser |
| 464 } else if (exp is TypeOperator) { | 464 } else if (exp is TypeOperator) { |
| 465 precedence = RELATIONAL; | 465 precedence = RELATIONAL; |
| 466 tree.Operator operator; | 466 tree.Operator operator; |
| 467 tree.Node rightOperand = makeType(exp.type); | 467 tree.Node rightOperand = makeType(exp.type); |
| 468 if (exp.operatorName == 'is!') { | 468 if (exp.operator == 'is!') { |
| 469 operator = new tree.Operator(typeOpToken('is')); | 469 operator = new tree.Operator(typeOpToken('is')); |
| 470 rightOperand = new tree.Send( | 470 rightOperand = new tree.Send( |
| 471 rightOperand, | 471 rightOperand, |
| 472 new tree.Operator(bang), | 472 new tree.Operator(bang), |
| 473 blankList()); | 473 blankList()); |
| 474 } else { | 474 } else { |
| 475 operator = new tree.Operator(typeOpToken(exp.operatorName)); | 475 operator = new tree.Operator(typeOpToken(exp.operator)); |
| 476 } | 476 } |
| 477 result = new tree.Send( | 477 result = new tree.Send( |
| 478 makeExp(exp.expression, BITWISE_OR, beginStmt: beginStmt), | 478 makeExp(exp.expression, BITWISE_OR, beginStmt: beginStmt), |
| 479 operator, | 479 operator, |
| 480 singleton(rightOperand)); | 480 singleton(rightOperand)); |
| 481 } else if (exp is UnaryOperator) { | 481 } else if (exp is UnaryOperator) { |
| 482 precedence = UNARY; | 482 precedence = UNARY; |
| 483 result = new tree.Send.prefix( | 483 result = new tree.Send.prefix( |
| 484 makeExp(exp.operand, UNARY), | 484 makeExp(exp.operand, UNARY), |
| 485 new tree.Operator(unopToken(exp.operatorName))); | 485 new tree.Operator(unopToken(exp.operatorName))); |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 906 printStringChunk(chunk.previous), | 906 printStringChunk(chunk.previous), |
| 907 node); | 907 node); |
| 908 } else { | 908 } else { |
| 909 return node; | 909 return node; |
| 910 } | 910 } |
| 911 } | 911 } |
| 912 return printStringChunk(output.chunk); | 912 return printStringChunk(output.chunk); |
| 913 } | 913 } |
| 914 | 914 |
| 915 } | 915 } |
| OLD | NEW |