コード例 #1
0
ファイル: analyzer.py プロジェクト: ThomasBollmeier/hackeme
 def _group_varargs_in_list(self, args, arity):
     num_fixed_params = arity.get_min_num_params()
     arguments = args.get_children()
     args.remove_children()
     for fixed_argument in arguments[:num_fixed_params]:
         args.add_child(fixed_argument)
     var_args = Ast("list")
     args.add_child(var_args)
     for var_argument in arguments[num_fixed_params:]:
         var_args.add_child(var_argument)
コード例 #2
0
 def _trans_value(self, ast):
     children = ast.get_children()
     if len(children) == 1:
         child = children[0]
         if child.name == "TRUE" or child.name == "FALSE":
             return Ast(child.name.lower())
     ret = Ast("pin")
     ret.set_attr("name", ast.find_children_by_id('pin')[0].value)
     from_ = ast.find_children_by_id('from')
     if from_:
         from_ = from_[0].value
         to = ast.find_children_by_id('to')[0].value
         ret.set_attr("from", from_)
         ret.set_attr("to", to)
     return ret
コード例 #3
0
 def _trans_inout(self, ast):
     ret = Ast("pin")
     name = ast.get_children()[0]
     ret.set_attr("name", name.value)
     size = ast.find_children_by_id('size')
     if size:
         size = size[0]
         ret.set_attr("bus-size", size.value)
     return ret
コード例 #4
0
 def _trans_connection(self, ast):
     ret = Ast('connection')
     lhs = Ast('pin')
     ret.add_child(lhs)
     lhs.set_attr("name", ast.find_children_by_id('param')[0].value)
     from_ = ast.find_children_by_id('from')
     if from_:
         from_ = from_[0].value
         to = ast.find_children_by_id('to')[0].value
         lhs.set_attr("from", from_)
         lhs.set_attr("to", to)
     value = ast.get_children()[-1]
     ret.add_child(value)
     return ret
コード例 #5
0
 def _trans_part(self, ast):
     ret = Ast('part')
     chip = ast.find_children_by_id("chip")[0].value
     ret.set_attr("chip-name", chip)
     ret.add_children_by_id(ast, "conn")
     return ret
コード例 #6
0
 def _trans_parts(self, ast):
     ret = Ast('parts')
     ret.add_children_by_id(ast, "part")
     return ret
コード例 #7
0
    def _trans_outputs(self, ast):

        ret = Ast("outputs")
        ret.add_children_by_id(ast, "out")

        return ret
コード例 #8
0
    def _trans_inputs(self, ast):

        ret = Ast("inputs")
        ret.add_children_by_id(ast, "in")

        return ret
コード例 #9
0
    def _trans_chip(self, ast):

        ret = Ast("chip")
        ret.set_attr("name", ast.find_children_by_id('name')[0].value)

        ret.add_children_by_name(ast, "inputs")
        ret.add_children_by_name(ast, "outputs")
        ret.add_children_by_name(ast, "parts")
        ret.add_children_by_name(ast, "builtin")

        return ret
コード例 #10
0
 def _trans_builtin(self, ast):
     ret = Ast("builtin")
     ret.set_attr("chip-name", ast.find_children_by_id("chip")[0].value)
     return ret