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