Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 library polymer_expressions.visitor; | 5 library polymer_expressions.visitor; |
| 6 | 6 |
| 7 import 'expression.dart'; | 7 import 'expression.dart'; |
| 8 | 8 |
| 9 abstract class Visitor { | 9 abstract class Visitor { |
| 10 visit(Expression s) => s.accept(this); | 10 visit(Expression s) => s.accept(this); |
| 11 visitEmptyExpression(EmptyExpression e); | 11 visitEmptyExpression(EmptyExpression e); |
| 12 visitParenthesizedExpression(ParenthesizedExpression e); | 12 visitParenthesizedExpression(ParenthesizedExpression e); |
| 13 visitGetter(Getter i); | 13 visitGetter(Getter i); |
| 14 visitIndex(Index i); | 14 visitIndex(Index i); |
| 15 visitInvoke(Invoke i); | 15 visitInvoke(Invoke i); |
| 16 visitLiteral(Literal l); | 16 visitLiteral(Literal l); |
| 17 visitListLiteral(ListLiteral l); | 17 visitListLiteral(ListLiteral l); |
| 18 visitMapLiteral(MapLiteral l); | 18 visitMapLiteral(MapLiteral l); |
| 19 visitMapLiteralEntry(MapLiteralEntry l); | 19 visitMapLiteralEntry(MapLiteralEntry l); |
| 20 visitIdentifier(Identifier i); | 20 visitIdentifier(Identifier i); |
| 21 visitBinaryOperator(BinaryOperator o); | 21 visitBinaryOperator(BinaryOperator o); |
| 22 visitUnaryOperator(UnaryOperator o); | 22 visitUnaryOperator(UnaryOperator o); |
| 23 visitTernaryOperator(TernaryOperator o); | 23 visitTernaryOperator(TernaryOperator o); |
| 24 visitInExpression(InExpression c); | 24 visitInExpression(InExpression c); |
| 25 } | 25 } |
| 26 | 26 |
| 27 abstract class RecursiveVisitor extends Visitor { | 27 class RecursiveVisitor extends Visitor { |
| 28 visitExpression(Expression e); | 28 preVisitExpression(Expression e) {} |
|
Siggi Cherem (dart-lang)
2014/03/21 01:43:46
I'll use this in my codegen change.
| |
| 29 visitExpression(Expression e) {} | |
|
Siggi Cherem (dart-lang)
2014/03/21 01:43:46
I felt I ended up overriding this for no purpose,
Jennifer Messerly
2014/03/21 20:08:54
agree.
| |
| 29 | 30 |
| 30 visitEmptyExpression(EmptyExpression e) => visitExpression(e); | 31 visitEmptyExpression(EmptyExpression e) { |
| 32 preVisitExpression(e); | |
| 33 visitExpression(e); | |
| 34 } | |
| 31 | 35 |
| 32 visitParenthesizedExpression(ParenthesizedExpression e) { | 36 visitParenthesizedExpression(ParenthesizedExpression e) { |
| 37 preVisitExpression(e); | |
| 33 visit(e.child); | 38 visit(e.child); |
| 34 visitExpression(e); | 39 visitExpression(e); |
| 35 } | 40 } |
| 36 | 41 |
| 37 visitGetter(Getter i) { | 42 visitGetter(Getter i) { |
| 43 preVisitExpression(i); | |
| 38 visit(i.receiver); | 44 visit(i.receiver); |
| 39 visitExpression(i); | 45 visitExpression(i); |
| 40 } | 46 } |
| 41 | 47 |
| 42 visitIndex(Index i) { | 48 visitIndex(Index i) { |
| 49 preVisitExpression(i); | |
| 43 visit(i.receiver); | 50 visit(i.receiver); |
| 44 visit(i.argument); | 51 visit(i.argument); |
| 45 visitExpression(i); | 52 visitExpression(i); |
| 46 } | 53 } |
| 47 | 54 |
| 48 visitInvoke(Invoke i) { | 55 visitInvoke(Invoke i) { |
| 56 preVisitExpression(i); | |
| 49 visit(i.receiver); | 57 visit(i.receiver); |
| 50 if (i.arguments != null) { | 58 if (i.arguments != null) { |
| 51 for (var a in i.arguments) { | 59 for (var a in i.arguments) { |
| 52 visit(a); | 60 visit(a); |
| 53 } | 61 } |
| 54 } | 62 } |
| 55 visitExpression(i); | 63 visitExpression(i); |
| 56 } | 64 } |
| 57 | 65 |
| 58 visitLiteral(Literal l) => visitExpression(l); | 66 visitLiteral(Literal l) { |
| 67 preVisitExpression(l); | |
| 68 visitExpression(l); | |
| 69 } | |
| 59 | 70 |
| 60 visitListLiteral(ListLiteral l) { | 71 visitListLiteral(ListLiteral l) { |
| 72 preVisitExpression(l); | |
| 61 for (var i in l.items) { | 73 for (var i in l.items) { |
| 62 visit(i); | 74 visit(i); |
| 63 } | 75 } |
| 64 visitExpression(l); | 76 visitExpression(l); |
| 65 } | 77 } |
| 66 | 78 |
| 67 visitMapLiteral(MapLiteral l) { | 79 visitMapLiteral(MapLiteral l) { |
| 80 preVisitExpression(l); | |
| 68 for (var e in l.entries) { | 81 for (var e in l.entries) { |
| 69 visit(e); | 82 visit(e); |
| 70 } | 83 } |
| 71 visitExpression(l); | 84 visitExpression(l); |
| 72 } | 85 } |
| 73 | 86 |
| 74 visitMapLiteralEntry(MapLiteralEntry e) { | 87 visitMapLiteralEntry(MapLiteralEntry e) { |
| 88 preVisitExpression(e); | |
| 75 visit(e.key); | 89 visit(e.key); |
| 76 visit(e.entryValue); | 90 visit(e.entryValue); |
| 77 visitExpression(e); | 91 visitExpression(e); |
| 78 } | 92 } |
| 79 | 93 |
| 80 visitIdentifier(Identifier i) => visitExpression(i); | 94 visitIdentifier(Identifier i) { |
| 95 preVisitExpression(i); | |
| 96 visitExpression(i); | |
| 97 } | |
| 81 | 98 |
| 82 visitBinaryOperator(BinaryOperator o) { | 99 visitBinaryOperator(BinaryOperator o) { |
| 100 preVisitExpression(o); | |
| 83 visit(o.left); | 101 visit(o.left); |
| 84 visit(o.right); | 102 visit(o.right); |
| 85 visitExpression(o); | 103 visitExpression(o); |
| 86 } | 104 } |
| 87 | 105 |
| 88 visitUnaryOperator(UnaryOperator o) { | 106 visitUnaryOperator(UnaryOperator o) { |
| 107 preVisitExpression(o); | |
| 89 visit(o.child); | 108 visit(o.child); |
| 90 visitExpression(o); | 109 visitExpression(o); |
| 91 } | 110 } |
| 92 | 111 |
| 93 visitTernaryOperator(TernaryOperator o) { | 112 visitTernaryOperator(TernaryOperator o) { |
| 113 preVisitExpression(o); | |
| 94 visit(o.condition); | 114 visit(o.condition); |
| 95 visit(o.trueExpr); | 115 visit(o.trueExpr); |
| 96 visit(o.falseExpr); | 116 visit(o.falseExpr); |
| 97 visitExpression(o); | 117 visitExpression(o); |
| 98 } | 118 } |
| 99 | 119 |
| 100 visitInExpression(InExpression c) { | 120 visitInExpression(InExpression c) { |
| 121 preVisitExpression(c); | |
| 101 visit(c.left); | 122 visit(c.left); |
| 102 visit(c.right); | 123 visit(c.right); |
| 103 visitExpression(c); | 124 visitExpression(c); |
| 104 } | 125 } |
| 105 } | 126 } |
| OLD | NEW |