Lines Matching refs:self
95 def __init__(self, builder, filtered_targets):
96 self.builder = builder
97 self.filtered_targets = filtered_targets
98 self.current_target = None
100 def Traverse(self, tree):
101 self.builder.BuildPrologue()
102 self.TraverseTargets(tree)
103 self.builder.BuildEpilogue()
105 def TraverseTargets(self, tree):
114 if target not in self.filtered_targets:
116 self.current_target = target
117 self._Target(target_type, target, stmt.children[2].children)
119 def _Target(self, target_type, target, stmts):
120 stmts = self._StatementList(stmts)
121 return self.builder.BuildTarget(target_type, target, stmts)
123 def _StatementList(self, stmts):
126 built_stmts.append(self._Statement(stmt))
129 def _Statement(self, stmt):
132 return self.STATEMENTS[stmt.data](self, *stmt.children)
134 def _Assignment(self, left, op, right):
135 return self.ASSIGN_TYPES[op.data](self, left, right)
137 def _AssignEq(self, left, right):
139 return self.builder.BuildSourcesList(
140 self.current_target, [str(token) for token in right.children])
142 def _AssignAdd(self, left, right):
144 return self.builder.BuildAppendSources(
145 self.current_target, [str(token) for token in right.children])
147 def _AssignSub(self, left, right):
149 return self.builder.BuildRemoveSources(
150 self.current_target, [str(token) for token in right.children])
152 def _Condition(self, cond_expr, then_stmts, else_stmts=None):
154 cond_expr = self._Expr(cond_expr)
155 then_stmts = self._StatementList(then_stmts.children)
160 return self.builder.BuildCondition(cond_expr, then_stmts)
162 else_cond = self._Condition(*else_stmts.children)
163 return self.builder.BuildConditionWithElseCond(
167 else_stmts = self._StatementList(else_stmts.children)
168 return self.builder.BuildConditionWithElseStmts(
171 def _Expr(self, expr):
175 return self.builder.BuildIdentifier(str(expr))
177 return self.builder.BuildInteger(str(expr))
179 return self.builder.BuildString(str(expr))
181 return self.builder.BuildParenthesizedOperation(
182 self._Expr(*expr.children))
187 return self._UnaryExpr(expr.data, *expr.children)
189 return self._BinaryExpr(expr.data, *expr.children)
192 def _UnaryExpr(self, op, right):
193 right = self._Expr(right)
194 return self.builder.BuildUnaryOperation(op, right)
196 def _BinaryExpr(self, op, left, right):
197 left = self._Expr(left)
198 right = self._Expr(right)
199 return self.builder.BuildBinaryOperation(left, op, right)
227 def __init__(self):
228 self.result = []
229 self.source_sets = {}
231 def BuildPrologue(self):
232 self.result.append(f"""
314 def BuildEpilogue(self):
315 self.result.extend(
316 self._GenTargetString(target, sets)
317 for target, sets in self.source_sets.items())
318 self.result.append("\ninstall(TARGETS cppgc)")
320 def BuildTarget(self, target_type, target, rules):
324 # {self._CMakeTarget(target)} sources.
326 self.result.append(comment)
327 self.result.extend(rules)
328 self.source_sets.setdefault(
329 TARGETS[target], []).append('${' + self._SourceVar(target) + '}')
331 def BuildSourcesList(self, target, sources):
332 sources = self._ExpandSources(target, sources)
333 return f'set({self._SourceVar(target)} {sources})'
335 def BuildAppendSources(self, target, sources):
336 sources = self._ExpandSources(target, sources)
337 return f'list(APPEND {self._SourceVar(target)} {sources})'
339 def BuildRemoveSources(self, target, sources):
340 sources = self._ExpandSources(target, sources)
341 return f'list(REMOVE_ITEM {self._SourceVar(target)} {sources})'
343 def BuildCondition(self, cond, then_stmts):
350 def BuildConditionWithElseStmts(self, cond, then_stmts, else_stmts):
358 def BuildConditionWithElseCond(self, cond, then_stmts, else_cond):
365 def BuildParenthesizedOperation(self, operation):
368 def BuildUnaryOperation(self, op, right):
374 def BuildBinaryOperation(self, left, op, right):
376 neg_result = self.BuildBinaryOperation(left, 'eq', right)
377 return self.BuildUnaryOperation('neg', neg_result)
389 def BuildIdentifier(self, token):
390 return self._CMakeVarRef(token)
392 def BuildInteger(self, integer):
395 def BuildString(self, string):
398 def GetResult(self):
399 return '\n'.join(self.result)