Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def visit(self, node):
""" Visit a node.
"""
method = 'visit_' + node.__class__.__name__
visitor = getattr(self, method, self.generic_visit)
return visitor(node)
def generic_visit(self, node):
""" Called if no explicit visitor function exists for a
node. Implements preorder visiting of the node.
"""
for c_name, c in node.children():
self.visit(c)
class ArrayDecl(Node):
def __init__(self, type, dim, coord=None):
self.type = type
self.dim = dim
self.coord = coord
def children(self):
nodelist = []
if self.type is not None: nodelist.append(("type", self.type))
if self.dim is not None: nodelist.append(("dim", self.dim))
return tuple(nodelist)
attr_names = ()
class ArrayRef(Node):
def __init__(self, name, subscript, coord=None):
self.name = name
for input_port in logic.inputs:
#input_port = input_port_inst_name.replace(local_inst_name+C_TO_LOGIC.SUBMODULE_MARKER,"")
vhdl_input_port = VHDL.WIRE_TO_VHDL_NAME(input_port, logic)
#print "input_port",input_port
# ref toks not from port name
driven_ref_toks = driven_ref_toks_list[driven_ref_toks_i]
driven_ref_toks_i += 1
var_ref_toks = not C_TO_LOGIC.C_AST_REF_TOKS_ARE_CONST(driven_ref_toks)
# Read just the variable indicies from the right side
# Get ref tok index of variable indicies
var_ref_tok_indicies = []
for ref_tok_i in range(0,len(driven_ref_toks)):
driven_ref_tok = driven_ref_toks[ref_tok_i]
if isinstance(driven_ref_tok, c_ast.Node):
var_ref_tok_indicies.append(ref_tok_i)
expanded_ref_tok_list = C_TO_LOGIC.EXPAND_REF_TOKS_OR_STRS(driven_ref_toks, logic.c_ast_node, parser_state_copy)
for expanded_ref_toks in expanded_ref_tok_list:
# Build vhdl str doing the reference assignment to base
vhdl_ref_str = ""
for ref_tok in expanded_ref_toks[1:]: # Dont need base var name
if type(ref_tok) == int:
vhdl_ref_str += "(" + str(ref_tok) + ")"
elif type(ref_tok) == str:
vhdl_ref_str += "." + ref_tok
else:
print "Only constant references here!", c_ast_ref.coord
sys.exit(0)
self.storage = storage
self.type = type
self.coord = coord
def children(self):
nodelist = []
if self.type is not None: nodelist.append(("type", self.type))
return tuple(nodelist)
def __iter__(self):
if self.type is not None:
yield self.type
attr_names = ('name', 'quals', 'storage', )
class Typename(Node):
__slots__ = ('name', 'quals', 'type', 'coord', '__weakref__')
def __init__(self, name, quals, type, coord=None):
self.name = name
self.quals = quals
self.type = type
self.coord = coord
def children(self):
nodelist = []
if self.type is not None: nodelist.append(("type", self.type))
return tuple(nodelist)
def __iter__(self):
if self.type is not None:
yield self.type
def compileNode(node, loopParent=None, parentLoopCondition=None):
global refs, localVars, localVarTypes, args, xmlInfo
nodeOut = []
if isinstance(node, list):
for i in node:
nodeOut += compileNode(i, loopParent, parentLoopCondition)
return nodeOut
elif not isinstance(node, c_ast.Node):
raise ValueError("That's no node that's a "+str(type(node)))
# Macro for getting the last command (skip any labels)
def getLastCommand():
if len(nodeOut) > 0:
i = 1
while i <= len(nodeOut):
if type(nodeOut[-i]) == Command:
return nodeOut[-i]
i += 1
# Macro for marking the last command as an argument for the current command
def addArg():
if len(nodeOut) > 0:
i = 1
while i <= len(nodeOut):
attr_names = ()
class InitList(Node):
def __init__(self, exprs, coord=None):
self.exprs = exprs
self.coord = coord
def children(self):
nodelist = []
for i, child in enumerate(self.exprs or []):
nodelist.append(("exprs[%d]" % i, child))
return tuple(nodelist)
attr_names = ()
class Label(Node):
def __init__(self, name, stmt, coord=None):
self.name = name
self.stmt = stmt
self.coord = coord
def children(self):
nodelist = []
if self.stmt is not None: nodelist.append(("stmt", self.stmt))
return tuple(nodelist)
attr_names = ('name',)
class NamedInitializer(Node):
def __init__(self, name, expr, coord=None):
self.name = name
self.expr = expr
self.decls = decls
self.coord = coord
def children(self):
nodelist = []
for i, child in enumerate(self.decls or []):
nodelist.append(("decls[%d]" % i, child))
return tuple(nodelist)
def __iter__(self):
for child in (self.decls or []):
yield child
attr_names = ()
class Default(Node):
__slots__ = ('stmts', 'coord', '__weakref__')
def __init__(self, stmts, coord=None):
self.stmts = stmts
self.coord = coord
def children(self):
nodelist = []
for i, child in enumerate(self.stmts or []):
nodelist.append(("stmts[%d]" % i, child))
return tuple(nodelist)
def __iter__(self):
for child in (self.stmts or []):
yield child
attr_names = ()
attr_names = ()
class Compound(Node):
def __init__(self, block_items, coord=None):
self.block_items = block_items
self.coord = coord
def children(self):
nodelist = []
for i, child in enumerate(self.block_items or []):
nodelist.append(("block_items[%d]" % i, child))
return tuple(nodelist)
attr_names = ()
class CompoundLiteral(Node):
def __init__(self, type, init, coord=None):
self.type = type
self.init = init
self.coord = coord
def children(self):
nodelist = []
if self.type is not None: nodelist.append(("type", self.type))
if self.init is not None: nodelist.append(("init", self.init))
return tuple(nodelist)
attr_names = ()
class Constant(Node):
def __init__(self, type, value, coord=None):
self.type = type
def children(self):
nodelist = []
if self.left is not None: nodelist.append(("left", self.left))
if self.right is not None: nodelist.append(("right", self.right))
return tuple(nodelist)
def __iter__(self):
if self.left is not None:
yield self.left
if self.right is not None:
yield self.right
attr_names = ('op', )
class Break(Node):
__slots__ = ('coord', '__weakref__')
def __init__(self, coord=None):
self.coord = coord
def children(self):
return ()
def __iter__(self):
return
yield
attr_names = ()
class Case(Node):
__slots__ = ('expr', 'stmts', 'coord', '__weakref__')
def __init__(self, expr, stmts, coord=None):
def children(self):
nodelist = []
if self.to_type is not None: nodelist.append(("to_type", self.to_type))
if self.expr is not None: nodelist.append(("expr", self.expr))
return tuple(nodelist)
def __iter__(self):
if self.to_type is not None:
yield self.to_type
if self.expr is not None:
yield self.expr
attr_names = ()
class Compound(Node):
__slots__ = ('block_items', 'coord', '__weakref__')
def __init__(self, block_items, coord=None):
self.block_items = block_items
self.coord = coord
def children(self):
nodelist = []
for i, child in enumerate(self.block_items or []):
nodelist.append(("block_items[%d]" % i, child))
return tuple(nodelist)
def __iter__(self):
for child in (self.block_items or []):
yield child
attr_names = ()
self.ext = ext
self.coord = coord
def children(self):
nodelist = []
for i, child in enumerate(self.ext or []):
nodelist.append(("ext[%d]" % i, child))
return tuple(nodelist)
def __iter__(self):
for child in (self.ext or []):
yield child
attr_names = ()
class For(Node):
__slots__ = ('init', 'cond', 'next', 'stmt', 'coord', '__weakref__')
def __init__(self, init, cond, next, stmt, coord=None):
self.init = init
self.cond = cond
self.next = next
self.stmt = stmt
self.coord = coord
def children(self):
nodelist = []
if self.init is not None: nodelist.append(("init", self.init))
if self.cond is not None: nodelist.append(("cond", self.cond))
if self.next is not None: nodelist.append(("next", self.next))
if self.stmt is not None: nodelist.append(("stmt", self.stmt))
return tuple(nodelist)