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

Side by Side Diff: third_party/pkg/angular/lib/core/parser/syntax.dart

Issue 148453003: Updating Angular version (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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
(Empty)
1 library angular.core.parser.syntax;
2
3 import 'package:angular/core/parser/parser.dart' show LocalsWrapper;
4 import 'package:angular/core/parser/unparser.dart' show Unparser;
5 import 'package:angular/core/parser/utils.dart' show EvalError;
6
7 abstract class Visitor {
8 visit(Expression expression)
9 => expression.accept(this);
10
11 visitExpression(Expression expression)
12 => null;
13 visitChain(Chain expression)
14 => visitExpression(expression);
15 visitFilter(Filter expression)
16 => visitExpression(expression);
17
18 visitAssign(Assign expression)
19 => visitExpression(expression);
20 visitConditional(Conditional expression)
21 => visitExpression(expression);
22
23 visitAccessScope(AccessScope expression)
24 => visitExpression(expression);
25 visitAccessMember(AccessMember expression)
26 => visitExpression(expression);
27 visitAccessKeyed(AccessKeyed expression)
28 => visitExpression(expression);
29
30 visitCallScope(CallScope expression)
31 => visitExpression(expression);
32 visitCallFunction(CallFunction expression)
33 => visitExpression(expression);
34 visitCallMember(CallMember expression)
35 => visitExpression(expression);
36
37 visitBinary(Binary expression)
38 => visitExpression(expression);
39
40 visitPrefix(Prefix expression)
41 => visitExpression(expression);
42
43 visitLiteral(Literal expression)
44 => visitExpression(expression);
45 visitLiteralPrimitive(LiteralPrimitive expression)
46 => visitLiteral(expression);
47 visitLiteralString(LiteralString expression)
48 => visitLiteral(expression);
49 visitLiteralArray(LiteralArray expression)
50 => visitLiteral(expression);
51 visitLiteralObject(LiteralObject expression)
52 => visitLiteral(expression);
53 }
54
55 abstract class Expression {
56 bool get isAssignable => false;
57 bool get isChain => false;
58
59 eval(scope)
60 => throw new EvalError("Cannot evaluate $this");
61 assign(scope, value)
62 => throw new EvalError("Cannot assign to $this");
63 bind(context, [LocalsWrapper wrapper])
64 => new BoundExpression(this, context, wrapper);
65
66 accept(Visitor visitor);
67 String toString() => Unparser.unparse(this);
68 }
69
70 class BoundExpression {
71 final Expression expression;
72 final _context;
73 final LocalsWrapper _wrapper;
74 BoundExpression(this.expression, this._context, this._wrapper);
75
76 call([locals]) => expression.eval(_computeContext(locals));
77 assign(value, [locals]) => expression.assign(_computeContext(locals), value);
78
79 _computeContext(locals) {
80 if (locals == null) return _context;
81 if (_wrapper != null) return _wrapper(_context, locals);
82 throw new StateError("Locals $locals provided, but missing wrapper.");
83 }
84 }
85
86 class Chain extends Expression {
87 final List<Expression> expressions;
88 Chain(this.expressions);
89 bool get isChain => true;
90 accept(Visitor visitor) => visitor.visitChain(this);
91 }
92
93 class Filter extends Expression {
94 final Expression expression;
95 final String name;
96 final List<Expression> arguments;
97 Filter(this.expression, this.name, this.arguments);
98 accept(Visitor visitor) => visitor.visitFilter(this);
99 }
100
101 class Assign extends Expression {
102 final Expression target;
103 final Expression value;
104 Assign(this.target, this.value);
105 accept(Visitor visitor) => visitor.visitAssign(this);
106 }
107
108 class Conditional extends Expression {
109 final Expression condition;
110 final Expression yes;
111 final Expression no;
112 Conditional(this.condition, this.yes, this.no);
113 accept(Visitor visitor) => visitor.visitConditional(this);
114 }
115
116 class AccessScope extends Expression {
117 final String name;
118 AccessScope(this.name);
119 bool get isAssignable => true;
120 accept(Visitor visitor) => visitor.visitAccessScope(this);
121 }
122
123 class AccessMember extends Expression {
124 final Expression object;
125 final String name;
126 AccessMember(this.object, this.name);
127 bool get isAssignable => true;
128 accept(Visitor visitor) => visitor.visitAccessMember(this);
129 }
130
131 class AccessKeyed extends Expression {
132 final Expression object;
133 final Expression key;
134 AccessKeyed(this.object, this.key);
135 bool get isAssignable => true;
136 accept(Visitor visitor) => visitor.visitAccessKeyed(this);
137 }
138
139 class CallScope extends Expression {
140 final String name;
141 final List<Expression> arguments;
142 CallScope(this.name, this.arguments);
143 accept(Visitor visitor) => visitor.visitCallScope(this);
144 }
145
146 class CallFunction extends Expression {
147 final Expression function;
148 final List<Expression> arguments;
149 CallFunction(this.function, this.arguments);
150 accept(Visitor visitor) => visitor.visitCallFunction(this);
151 }
152
153 class CallMember extends Expression {
154 final Expression object;
155 final String name;
156 final List<Expression> arguments;
157 CallMember(this.object, this.name, this.arguments);
158 accept(Visitor visitor) => visitor.visitCallMember(this);
159 }
160
161 class Binary extends Expression {
162 final String operation;
163 final Expression left;
164 final Expression right;
165 Binary(this.operation, this.left, this.right);
166 accept(Visitor visitor) => visitor.visitBinary(this);
167 }
168
169 class Prefix extends Expression {
170 final String operation;
171 final Expression expression;
172 Prefix(this.operation, this.expression);
173 accept(Visitor visitor) => visitor.visitPrefix(this);
174 }
175
176 abstract class Literal extends Expression {
177 }
178
179 class LiteralPrimitive extends Literal {
180 final value;
181 LiteralPrimitive(this.value);
182 accept(Visitor visitor) => visitor.visitLiteralPrimitive(this);
183 }
184
185 class LiteralString extends Literal {
186 final String value;
187 LiteralString(this.value);
188 accept(Visitor visitor) => visitor.visitLiteralString(this);
189 }
190
191 class LiteralArray extends Literal {
192 final List<Expression> elements;
193 LiteralArray(this.elements);
194 accept(Visitor visitor) => visitor.visitLiteralArray(this);
195 }
196
197 class LiteralObject extends Literal {
198 final List<String> keys;
199 final List<Expression> values;
200 LiteralObject(this.keys, this.values);
201 accept(Visitor visitor) => visitor.visitLiteralObject(this);
202 }
OLDNEW
« no previous file with comments | « third_party/pkg/angular/lib/core/parser/static_parser.dart ('k') | third_party/pkg/angular/lib/core/parser/unparser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698