generate_IEC_std.py
changeset 40 49c8ebc1ee25
parent 36 e7d67b27877f
child 43 4a7e80513edd
equal deleted inserted replaced
39:5b04b4670697 40:49c8ebc1ee25
    30     "ANY_NBIT" : "if(search_expression_type->is_nbinary_type(%(paramname)s_type_symbol))",
    30     "ANY_NBIT" : "if(search_expression_type->is_nbinary_type(%(paramname)s_type_symbol))",
    31     "ANY_NUM" : "if(search_expression_type->is_num_type(%(paramname)s_type_symbol))",
    31     "ANY_NUM" : "if(search_expression_type->is_num_type(%(paramname)s_type_symbol))",
    32     "ANY_REAL" : "if(search_expression_type->is_real_type(%(paramname)s_type_symbol))",
    32     "ANY_REAL" : "if(search_expression_type->is_real_type(%(paramname)s_type_symbol))",
    33     "ANY_INT" : "if(search_expression_type->is_integer_type(%(paramname)s_type_symbol))"
    33     "ANY_INT" : "if(search_expression_type->is_integer_type(%(paramname)s_type_symbol))"
    34     }.get(typename,
    34     }.get(typename,
    35         "if (typeid(*last_type_symbol) == typeid(%(typename)s_type_name_c))")%{
    35         #"if (typeid(*last_type_symbol) == typeid(%(typename)s_type_name_c))")%{
       
    36         "if(search_expression_type->is_same_type(&search_constant_type_c::%(typename)s_type_name, last_type_symbol))")%{
    36                 "paramname" : paramname, "typename": typename.lower()}
    37                 "paramname" : paramname, "typename": typename.lower()}
    37 
    38 
    38 def recurse_and_indent(fdecls, indent, do_type_search_only = False, do_il = False):
    39 def recurse_and_indent(fdecls, indent, do_type_search_only = False, do_il = False):
    39     """
    40     """
    40     This function generate visit(function_invocation) code for 
    41     This function generate visit(function_invocation) code for 
   114             code_gen_dic_decl["param_count"] = '");\ns4o.print_integer(nb_param);\ns4o.print("'
   115             code_gen_dic_decl["param_count"] = '");\ns4o.print_integer(nb_param);\ns4o.print("'
   115             code_gen_dic_decl["start_bool_filter"] = '");\nif (search_expression_type->is_bool_type(last_type_symbol))\n  s4o.print("('
   116             code_gen_dic_decl["start_bool_filter"] = '");\nif (search_expression_type->is_bool_type(last_type_symbol))\n  s4o.print("('
   116             code_gen_dic_decl["end_bool_filter"] = '");\nif (search_expression_type->is_bool_type(last_type_symbol)) {\n  s4o.print("&1");\n  s4o.print(")");\n}\ns4o.print("'
   117             code_gen_dic_decl["end_bool_filter"] = '");\nif (search_expression_type->is_bool_type(last_type_symbol)) {\n  s4o.print("&1");\n  s4o.print(")");\n}\ns4o.print("'
   117             
   118             
   118             if type(code_gen) == type(tuple()):
   119             if type(code_gen) == type(tuple()):
   119                 res += 's4o.print("%s");\n'%(code_gen[0]%code_gen_dic_decl)
   120                 res += 's4o.indent_right();\n'
       
   121                 res += 's4o.print("%s\\n" + s4o.indent_spaces);\n'%(code_gen[0]%code_gen_dic_decl)
   120                 static_param_accept_list = []
   122                 static_param_accept_list = []
   121                 for paramname,paramtype,unused in fdecl["inputs"]:
   123                 for paramname,paramtype,unused in fdecl["inputs"]:
   122                     static_param_accept_list.append("%s_param_value->accept(*this);\n"%(paramname))
   124                     static_param_accept_list.append("%s_param_value->accept(*this);\n"%(paramname))
   123                 res += ('s4o.print("%s");\n'%(code_gen[1])).join(static_param_accept_list)
   125                 res += ('s4o.print("%s\\n" + s4o.indent_spaces);\n'%(code_gen[1])).join(static_param_accept_list)
   124                 code = 's4o.print("%s");\nparam_value->accept(*this);\n'%(code_gen[1])
   126                 code = 's4o.print("%s\\n" + s4o.indent_spaces);\nparam_value->accept(*this);\n'%(code_gen[1])
   125                 end_code = 's4o.print("%s");\nreturn NULL;\n'%(code_gen[2]%code_gen_dic_decl)
   127                 end_code = 's4o.print("%s");\ns4o.indent_left();\nreturn NULL;\n'%(code_gen[2]%code_gen_dic_decl)
   126             else:
   128             else:
   127                 code = ''
   129                 code = ''
   128                 end_code = ('s4o.print("' + code_gen%code_gen_dic_decl + '");\nreturn NULL;\n').replace('s4o.print("");\n','')
   130                 end_code = ('s4o.print("' + code_gen%code_gen_dic_decl + '");\nreturn NULL;\n').replace('s4o.print("");\n','')
   129 
   131 
   130             if fdecl["extensible"]:
   132             if fdecl["extensible"]: