stage4/generate_c/st_code_gen.c
changeset 154 9114afe1f64b
parent 153 6aed920024f9
child 165 83963465b773
equal deleted inserted replaced
153:6aed920024f9 154:9114afe1f64b
 13738                     if(search_expression_type->is_num_type(IN2_type_symbol))
 13738                     if(search_expression_type->is_num_type(IN2_type_symbol))
 13739                     {
 13739                     {
 13740                 
 13740                 
 13741                         function_name = (symbol_c*)(new pragma_c("__add_"));
 13741                         function_name = (symbol_c*)(new pragma_c("__add_"));
 13742                         
 13742                         
 13743                         char nb_param_str[10];
 13743                         char* nb_param_str = new char[10];
 13744                         sprintf(nb_param_str, "%d", nb_param);
 13744                         sprintf(nb_param_str, "%d", nb_param);
 13745                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13745                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13746                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13746                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13747                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13747                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13748                         
 13748                         
 13749                         int base_num = 3;
 13749                         int base_num = 3;
 13750                         symbol_c *param_value = NULL;
 13750                         symbol_c *param_value = NULL;
 13915                     if(search_expression_type->is_num_type(IN2_type_symbol))
 13915                     if(search_expression_type->is_num_type(IN2_type_symbol))
 13916                     {
 13916                     {
 13917                 
 13917                 
 13918                         function_name = (symbol_c*)(new pragma_c("__mul_"));
 13918                         function_name = (symbol_c*)(new pragma_c("__mul_"));
 13919                         
 13919                         
 13920                         char nb_param_str[10];
 13920                         char* nb_param_str = new char[10];
 13921                         sprintf(nb_param_str, "%d", nb_param);
 13921                         sprintf(nb_param_str, "%d", nb_param);
 13922                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13922                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13923                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13923                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13924                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13924                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13925                         
 13925                         
 13926                         int base_num = 3;
 13926                         int base_num = 3;
 13927                         symbol_c *param_value = NULL;
 13927                         symbol_c *param_value = NULL;
 14698                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14698                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14699                     {
 14699                     {
 14700                 
 14700                 
 14701                         function_name = (symbol_c*)(new pragma_c("__and_"));
 14701                         function_name = (symbol_c*)(new pragma_c("__and_"));
 14702                         
 14702                         
 14703                         char nb_param_str[10];
 14703                         char* nb_param_str = new char[10];
 14704                         sprintf(nb_param_str, "%d", nb_param);
 14704                         sprintf(nb_param_str, "%d", nb_param);
 14705                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14705                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14706                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14706                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14707                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14707                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14708                         
 14708                         
 14709                         int base_num = 3;
 14709                         int base_num = 3;
 14710                         symbol_c *param_value = NULL;
 14710                         symbol_c *param_value = NULL;
 14782                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14782                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14783                     {
 14783                     {
 14784                 
 14784                 
 14785                         function_name = (symbol_c*)(new pragma_c("__or_"));
 14785                         function_name = (symbol_c*)(new pragma_c("__or_"));
 14786                         
 14786                         
 14787                         char nb_param_str[10];
 14787                         char* nb_param_str = new char[10];
 14788                         sprintf(nb_param_str, "%d", nb_param);
 14788                         sprintf(nb_param_str, "%d", nb_param);
 14789                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14789                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14790                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14790                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14791                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14791                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14792                         
 14792                         
 14793                         int base_num = 3;
 14793                         int base_num = 3;
 14794                         symbol_c *param_value = NULL;
 14794                         symbol_c *param_value = NULL;
 14866                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14866                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14867                     {
 14867                     {
 14868                 
 14868                 
 14869                         function_name = (symbol_c*)(new pragma_c("__xor_"));
 14869                         function_name = (symbol_c*)(new pragma_c("__xor_"));
 14870                         
 14870                         
 14871                         char nb_param_str[10];
 14871                         char* nb_param_str = new char[10];
 14872                         sprintf(nb_param_str, "%d", nb_param);
 14872                         sprintf(nb_param_str, "%d", nb_param);
 14873                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14873                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14874                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14874                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14875                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14875                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14876                         
 14876                         
 14877                         int base_num = 3;
 14877                         int base_num = 3;
 14878                         symbol_c *param_value = NULL;
 14878                         symbol_c *param_value = NULL;
 15064                     
 15064                     
 15065                     {
 15065                     {
 15066                 
 15066                 
 15067                         function_name = (symbol_c*)(new pragma_c("__max_"));
 15067                         function_name = (symbol_c*)(new pragma_c("__max_"));
 15068                         
 15068                         
 15069                         char nb_param_str[10];
 15069                         char* nb_param_str = new char[10];
 15070                         sprintf(nb_param_str, "%d", nb_param);
 15070                         sprintf(nb_param_str, "%d", nb_param);
 15071                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15071                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15072                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15072                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15073                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15073                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15074                         
 15074                         
 15075                         int base_num = 3;
 15075                         int base_num = 3;
 15076                         symbol_c *param_value = NULL;
 15076                         symbol_c *param_value = NULL;
 15148                     
 15148                     
 15149                     {
 15149                     {
 15150                 
 15150                 
 15151                         function_name = (symbol_c*)(new pragma_c("__min_"));
 15151                         function_name = (symbol_c*)(new pragma_c("__min_"));
 15152                         
 15152                         
 15153                         char nb_param_str[10];
 15153                         char* nb_param_str = new char[10];
 15154                         sprintf(nb_param_str, "%d", nb_param);
 15154                         sprintf(nb_param_str, "%d", nb_param);
 15155                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15155                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15156                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15156                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15157                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15157                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15158                         
 15158                         
 15159                         int base_num = 3;
 15159                         int base_num = 3;
 15160                         symbol_c *param_value = NULL;
 15160                         symbol_c *param_value = NULL;
 15324                             
 15324                             
 15325                             {
 15325                             {
 15326                         
 15326                         
 15327                                 function_name = (symbol_c*)(new pragma_c("__mux_"));
 15327                                 function_name = (symbol_c*)(new pragma_c("__mux_"));
 15328                                 
 15328                                 
 15329                                 char nb_param_str[10];
 15329                                 char* nb_param_str = new char[10];
 15330                                 sprintf(nb_param_str, "%d", nb_param);
 15330                                 sprintf(nb_param_str, "%d", nb_param);
 15331                                 ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15331                                 ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15332                                 ADD_PARAM_LIST(K_param_value, K_type_symbol, function_param_iterator_c::direction_in)
 15332                                 ADD_PARAM_LIST(K_param_value, K_type_symbol, function_param_iterator_c::direction_in)
 15333                                 ADD_PARAM_LIST(IN0_param_value, IN0_type_symbol, function_param_iterator_c::direction_in)
 15333                                 ADD_PARAM_LIST(IN0_param_value, IN0_type_symbol, function_param_iterator_c::direction_in)
 15334                                 ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15334                                 ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15335                                 
 15335                                 
 15336                                 int base_num = 2;
 15336                                 int base_num = 2;
 15415                     
 15415                     
 15416                     {
 15416                     {
 15417                 
 15417                 
 15418                         function_name = (symbol_c*)(new pragma_c("__gt_"));
 15418                         function_name = (symbol_c*)(new pragma_c("__gt_"));
 15419                         
 15419                         
 15420                         char nb_param_str[10];
 15420                         char* nb_param_str = new char[10];
 15421                         sprintf(nb_param_str, "%d", nb_param);
 15421                         sprintf(nb_param_str, "%d", nb_param);
 15422                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15422                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15423                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15423                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15424                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15424                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15425                         
 15425                         
 15426                         int base_num = 3;
 15426                         int base_num = 3;
 15427                         symbol_c *param_value = NULL;
 15427                         symbol_c *param_value = NULL;
 15499                     
 15499                     
 15500                     {
 15500                     {
 15501                 
 15501                 
 15502                         function_name = (symbol_c*)(new pragma_c("__ge_"));
 15502                         function_name = (symbol_c*)(new pragma_c("__ge_"));
 15503                         
 15503                         
 15504                         char nb_param_str[10];
 15504                         char* nb_param_str = new char[10];
 15505                         sprintf(nb_param_str, "%d", nb_param);
 15505                         sprintf(nb_param_str, "%d", nb_param);
 15506                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15506                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15507                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15507                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15508                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15508                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15509                         
 15509                         
 15510                         int base_num = 3;
 15510                         int base_num = 3;
 15511                         symbol_c *param_value = NULL;
 15511                         symbol_c *param_value = NULL;
 15583                     
 15583                     
 15584                     {
 15584                     {
 15585                 
 15585                 
 15586                         function_name = (symbol_c*)(new pragma_c("__eq_"));
 15586                         function_name = (symbol_c*)(new pragma_c("__eq_"));
 15587                         
 15587                         
 15588                         char nb_param_str[10];
 15588                         char* nb_param_str = new char[10];
 15589                         sprintf(nb_param_str, "%d", nb_param);
 15589                         sprintf(nb_param_str, "%d", nb_param);
 15590                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15590                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15591                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15591                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15592                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15592                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15593                         
 15593                         
 15594                         int base_num = 3;
 15594                         int base_num = 3;
 15595                         symbol_c *param_value = NULL;
 15595                         symbol_c *param_value = NULL;
 15667                     
 15667                     
 15668                     {
 15668                     {
 15669                 
 15669                 
 15670                         function_name = (symbol_c*)(new pragma_c("__lt_"));
 15670                         function_name = (symbol_c*)(new pragma_c("__lt_"));
 15671                         
 15671                         
 15672                         char nb_param_str[10];
 15672                         char* nb_param_str = new char[10];
 15673                         sprintf(nb_param_str, "%d", nb_param);
 15673                         sprintf(nb_param_str, "%d", nb_param);
 15674                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15674                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15675                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15675                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15676                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15676                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15677                         
 15677                         
 15678                         int base_num = 3;
 15678                         int base_num = 3;
 15679                         symbol_c *param_value = NULL;
 15679                         symbol_c *param_value = NULL;
 15751                     
 15751                     
 15752                     {
 15752                     {
 15753                 
 15753                 
 15754                         function_name = (symbol_c*)(new pragma_c("__le_"));
 15754                         function_name = (symbol_c*)(new pragma_c("__le_"));
 15755                         
 15755                         
 15756                         char nb_param_str[10];
 15756                         char* nb_param_str = new char[10];
 15757                         sprintf(nb_param_str, "%d", nb_param);
 15757                         sprintf(nb_param_str, "%d", nb_param);
 15758                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15758                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15759                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15759                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15760                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15760                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15761                         
 15761                         
 15762                         int base_num = 3;
 15762                         int base_num = 3;
 15763                         symbol_c *param_value = NULL;
 15763                         symbol_c *param_value = NULL;
 15835                     
 15835                     
 15836                     {
 15836                     {
 15837                 
 15837                 
 15838                         function_name = (symbol_c*)(new pragma_c("__ne_"));
 15838                         function_name = (symbol_c*)(new pragma_c("__ne_"));
 15839                         
 15839                         
 15840                         char nb_param_str[10];
 15840                         char* nb_param_str = new char[10];
 15841                         sprintf(nb_param_str, "%d", nb_param);
 15841                         sprintf(nb_param_str, "%d", nb_param);
 15842                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15842                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 15843                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15843                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15844                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15844                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 15845                         
 15845                         
 15846                         int base_num = 3;
 15846                         int base_num = 3;
 15847                         symbol_c *param_value = NULL;
 15847                         symbol_c *param_value = NULL;
 16174                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16174                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16175                     {
 16175                     {
 16176                 
 16176                 
 16177                         function_name = (symbol_c*)(new pragma_c("__concat"));
 16177                         function_name = (symbol_c*)(new pragma_c("__concat"));
 16178                         
 16178                         
 16179                         char nb_param_str[10];
 16179                         char* nb_param_str = new char[10];
 16180                         sprintf(nb_param_str, "%d", nb_param);
 16180                         sprintf(nb_param_str, "%d", nb_param);
 16181                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 16181                         ADD_PARAM_LIST((symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 16182                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 16182                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 16183                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 16183                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 16184                         
 16184                         
 16185                         int base_num = 3;
 16185                         int base_num = 3;
 16186                         symbol_c *param_value = NULL;
 16186                         symbol_c *param_value = NULL;