Mercurial > lcfOS
comparison python/ppci/c3/visitor.py @ 313:04cf4d26a3bc
Added constant function
author | Windel Bouwman |
---|---|
date | Wed, 18 Dec 2013 18:02:26 +0100 |
parents | e609d5296ee9 |
children | 084cccaa5deb |
comparison
equal
deleted
inserted
replaced
312:2c9768114877 | 313:04cf4d26a3bc |
---|---|
57 elif type(node) is Member: | 57 elif type(node) is Member: |
58 self.do(node.base) | 58 self.do(node.base) |
59 elif type(node) is Deref: | 59 elif type(node) is Deref: |
60 self.do(node.ptr) | 60 self.do(node.ptr) |
61 elif type(node) is Constant: | 61 elif type(node) is Constant: |
62 self.do(node.typ) | |
62 self.do(node.value) | 63 self.do(node.value) |
63 elif type(node) is DefinedType: | 64 elif type(node) is DefinedType: |
64 self.do(node.typ) | 65 self.do(node.typ) |
65 elif isinstance(node, Variable): | 66 elif isinstance(node, Variable): |
66 self.do(node.typ) | 67 self.do(node.typ) |
84 self.f_post(node) | 85 self.f_post(node) |
85 | 86 |
86 | 87 |
87 class AstPrinter: | 88 class AstPrinter: |
88 """ Prints an AST as text """ | 89 """ Prints an AST as text """ |
89 def printAst(self, pkg): | 90 def printAst(self, pkg, f): |
90 self.indent = 0 | 91 self.indent = 2 |
92 self.f = f | |
91 visitor = Visitor() | 93 visitor = Visitor() |
92 visitor.visit(pkg, self.print1, self.print2) | 94 visitor.visit(pkg, self.print1, self.print2) |
93 | 95 |
94 def print1(self, node): | 96 def print1(self, node): |
95 print(' ' * self.indent + str(node)) | 97 print(' ' * self.indent + str(node), file=self.f) |
96 self.indent += 2 | 98 self.indent += 2 |
97 | 99 |
98 def print2(self, node): | 100 def print2(self, node): |
99 self.indent -= 2 | 101 self.indent -= 2 |