stage4/generate_c/il_code_gen.c
changeset 154 9114afe1f64b
parent 153 6aed920024f9
child 165 83963465b773
equal deleted inserted replaced
153:6aed920024f9 154:9114afe1f64b
 12190                     if(search_expression_type->is_num_type(IN2_type_symbol))
 12190                     if(search_expression_type->is_num_type(IN2_type_symbol))
 12191                     {
 12191                     {
 12192                 
 12192                 
 12193                         function_name = (symbol_c*)(new pragma_c("__add_"));
 12193                         function_name = (symbol_c*)(new pragma_c("__add_"));
 12194                         
 12194                         
 12195                         char nb_param_str[10];
 12195                         char* nb_param_str = new char[10];
 12196                         sprintf(nb_param_str, "%d", nb_param);
 12196                         sprintf(nb_param_str, "%d", nb_param);
 12197                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 12197                         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)
 12198                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 12198                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 12199                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 12199                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 12200                         
 12200                         
 12201                         int base_num = 3;
 12201                         int base_num = 3;
 12202                         symbol_c *param_value = NULL;
 12202                         symbol_c *param_value = NULL;
 12363                     if(search_expression_type->is_num_type(IN2_type_symbol))
 12363                     if(search_expression_type->is_num_type(IN2_type_symbol))
 12364                     {
 12364                     {
 12365                 
 12365                 
 12366                         function_name = (symbol_c*)(new pragma_c("__mul_"));
 12366                         function_name = (symbol_c*)(new pragma_c("__mul_"));
 12367                         
 12367                         
 12368                         char nb_param_str[10];
 12368                         char* nb_param_str = new char[10];
 12369                         sprintf(nb_param_str, "%d", nb_param);
 12369                         sprintf(nb_param_str, "%d", nb_param);
 12370                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 12370                         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)
 12371                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 12371                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 12372                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 12372                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 12373                         
 12373                         
 12374                         int base_num = 3;
 12374                         int base_num = 3;
 12375                         symbol_c *param_value = NULL;
 12375                         symbol_c *param_value = NULL;
 13106                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 13106                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 13107                     {
 13107                     {
 13108                 
 13108                 
 13109                         function_name = (symbol_c*)(new pragma_c("__and_"));
 13109                         function_name = (symbol_c*)(new pragma_c("__and_"));
 13110                         
 13110                         
 13111                         char nb_param_str[10];
 13111                         char* nb_param_str = new char[10];
 13112                         sprintf(nb_param_str, "%d", nb_param);
 13112                         sprintf(nb_param_str, "%d", nb_param);
 13113                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13113                         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)
 13114                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13114                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13115                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13115                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13116                         
 13116                         
 13117                         int base_num = 3;
 13117                         int base_num = 3;
 13118                         symbol_c *param_value = NULL;
 13118                         symbol_c *param_value = NULL;
 13186                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 13186                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 13187                     {
 13187                     {
 13188                 
 13188                 
 13189                         function_name = (symbol_c*)(new pragma_c("__or_"));
 13189                         function_name = (symbol_c*)(new pragma_c("__or_"));
 13190                         
 13190                         
 13191                         char nb_param_str[10];
 13191                         char* nb_param_str = new char[10];
 13192                         sprintf(nb_param_str, "%d", nb_param);
 13192                         sprintf(nb_param_str, "%d", nb_param);
 13193                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13193                         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)
 13194                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13194                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13195                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13195                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13196                         
 13196                         
 13197                         int base_num = 3;
 13197                         int base_num = 3;
 13198                         symbol_c *param_value = NULL;
 13198                         symbol_c *param_value = NULL;
 13266                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 13266                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 13267                     {
 13267                     {
 13268                 
 13268                 
 13269                         function_name = (symbol_c*)(new pragma_c("__xor_"));
 13269                         function_name = (symbol_c*)(new pragma_c("__xor_"));
 13270                         
 13270                         
 13271                         char nb_param_str[10];
 13271                         char* nb_param_str = new char[10];
 13272                         sprintf(nb_param_str, "%d", nb_param);
 13272                         sprintf(nb_param_str, "%d", nb_param);
 13273                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13273                         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)
 13274                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13274                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13275                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13275                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13276                         
 13276                         
 13277                         int base_num = 3;
 13277                         int base_num = 3;
 13278                         symbol_c *param_value = NULL;
 13278                         symbol_c *param_value = NULL;
 13452                     
 13452                     
 13453                     {
 13453                     {
 13454                 
 13454                 
 13455                         function_name = (symbol_c*)(new pragma_c("__max_"));
 13455                         function_name = (symbol_c*)(new pragma_c("__max_"));
 13456                         
 13456                         
 13457                         char nb_param_str[10];
 13457                         char* nb_param_str = new char[10];
 13458                         sprintf(nb_param_str, "%d", nb_param);
 13458                         sprintf(nb_param_str, "%d", nb_param);
 13459                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13459                         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)
 13460                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13460                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13461                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13461                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13462                         
 13462                         
 13463                         int base_num = 3;
 13463                         int base_num = 3;
 13464                         symbol_c *param_value = NULL;
 13464                         symbol_c *param_value = NULL;
 13532                     
 13532                     
 13533                     {
 13533                     {
 13534                 
 13534                 
 13535                         function_name = (symbol_c*)(new pragma_c("__min_"));
 13535                         function_name = (symbol_c*)(new pragma_c("__min_"));
 13536                         
 13536                         
 13537                         char nb_param_str[10];
 13537                         char* nb_param_str = new char[10];
 13538                         sprintf(nb_param_str, "%d", nb_param);
 13538                         sprintf(nb_param_str, "%d", nb_param);
 13539                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13539                         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)
 13540                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13540                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13541                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13541                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13542                         
 13542                         
 13543                         int base_num = 3;
 13543                         int base_num = 3;
 13544                         symbol_c *param_value = NULL;
 13544                         symbol_c *param_value = NULL;
 13700                             
 13700                             
 13701                             {
 13701                             {
 13702                         
 13702                         
 13703                                 function_name = (symbol_c*)(new pragma_c("__mux_"));
 13703                                 function_name = (symbol_c*)(new pragma_c("__mux_"));
 13704                                 
 13704                                 
 13705                                 char nb_param_str[10];
 13705                                 char* nb_param_str = new char[10];
 13706                                 sprintf(nb_param_str, "%d", nb_param);
 13706                                 sprintf(nb_param_str, "%d", nb_param);
 13707                                 ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13707                                 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)
 13708                                 ADD_PARAM_LIST(K_param_value, K_type_symbol, function_param_iterator_c::direction_in)
 13708                                 ADD_PARAM_LIST(K_param_value, K_type_symbol, function_param_iterator_c::direction_in)
 13709                                 ADD_PARAM_LIST(IN0_param_value, IN0_type_symbol, function_param_iterator_c::direction_in)
 13709                                 ADD_PARAM_LIST(IN0_param_value, IN0_type_symbol, function_param_iterator_c::direction_in)
 13710                                 ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13710                                 ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13711                                 
 13711                                 
 13712                                 int base_num = 2;
 13712                                 int base_num = 2;
 13787                     
 13787                     
 13788                     {
 13788                     {
 13789                 
 13789                 
 13790                         function_name = (symbol_c*)(new pragma_c("__gt_"));
 13790                         function_name = (symbol_c*)(new pragma_c("__gt_"));
 13791                         
 13791                         
 13792                         char nb_param_str[10];
 13792                         char* nb_param_str = new char[10];
 13793                         sprintf(nb_param_str, "%d", nb_param);
 13793                         sprintf(nb_param_str, "%d", nb_param);
 13794                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13794                         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)
 13795                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13795                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13796                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13796                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13797                         
 13797                         
 13798                         int base_num = 3;
 13798                         int base_num = 3;
 13799                         symbol_c *param_value = NULL;
 13799                         symbol_c *param_value = NULL;
 13867                     
 13867                     
 13868                     {
 13868                     {
 13869                 
 13869                 
 13870                         function_name = (symbol_c*)(new pragma_c("__ge_"));
 13870                         function_name = (symbol_c*)(new pragma_c("__ge_"));
 13871                         
 13871                         
 13872                         char nb_param_str[10];
 13872                         char* nb_param_str = new char[10];
 13873                         sprintf(nb_param_str, "%d", nb_param);
 13873                         sprintf(nb_param_str, "%d", nb_param);
 13874                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13874                         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)
 13875                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13875                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13876                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13876                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13877                         
 13877                         
 13878                         int base_num = 3;
 13878                         int base_num = 3;
 13879                         symbol_c *param_value = NULL;
 13879                         symbol_c *param_value = NULL;
 13947                     
 13947                     
 13948                     {
 13948                     {
 13949                 
 13949                 
 13950                         function_name = (symbol_c*)(new pragma_c("__eq_"));
 13950                         function_name = (symbol_c*)(new pragma_c("__eq_"));
 13951                         
 13951                         
 13952                         char nb_param_str[10];
 13952                         char* nb_param_str = new char[10];
 13953                         sprintf(nb_param_str, "%d", nb_param);
 13953                         sprintf(nb_param_str, "%d", nb_param);
 13954                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 13954                         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)
 13955                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13955                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 13956                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13956                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 13957                         
 13957                         
 13958                         int base_num = 3;
 13958                         int base_num = 3;
 13959                         symbol_c *param_value = NULL;
 13959                         symbol_c *param_value = NULL;
 14027                     
 14027                     
 14028                     {
 14028                     {
 14029                 
 14029                 
 14030                         function_name = (symbol_c*)(new pragma_c("__lt_"));
 14030                         function_name = (symbol_c*)(new pragma_c("__lt_"));
 14031                         
 14031                         
 14032                         char nb_param_str[10];
 14032                         char* nb_param_str = new char[10];
 14033                         sprintf(nb_param_str, "%d", nb_param);
 14033                         sprintf(nb_param_str, "%d", nb_param);
 14034                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14034                         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)
 14035                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14035                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14036                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14036                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14037                         
 14037                         
 14038                         int base_num = 3;
 14038                         int base_num = 3;
 14039                         symbol_c *param_value = NULL;
 14039                         symbol_c *param_value = NULL;
 14107                     
 14107                     
 14108                     {
 14108                     {
 14109                 
 14109                 
 14110                         function_name = (symbol_c*)(new pragma_c("__le_"));
 14110                         function_name = (symbol_c*)(new pragma_c("__le_"));
 14111                         
 14111                         
 14112                         char nb_param_str[10];
 14112                         char* nb_param_str = new char[10];
 14113                         sprintf(nb_param_str, "%d", nb_param);
 14113                         sprintf(nb_param_str, "%d", nb_param);
 14114                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14114                         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)
 14115                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14115                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14116                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14116                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14117                         
 14117                         
 14118                         int base_num = 3;
 14118                         int base_num = 3;
 14119                         symbol_c *param_value = NULL;
 14119                         symbol_c *param_value = NULL;
 14187                     
 14187                     
 14188                     {
 14188                     {
 14189                 
 14189                 
 14190                         function_name = (symbol_c*)(new pragma_c("__ne_"));
 14190                         function_name = (symbol_c*)(new pragma_c("__ne_"));
 14191                         
 14191                         
 14192                         char nb_param_str[10];
 14192                         char* nb_param_str = new char[10];
 14193                         sprintf(nb_param_str, "%d", nb_param);
 14193                         sprintf(nb_param_str, "%d", nb_param);
 14194                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14194                         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)
 14195                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14195                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14196                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14196                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14197                         
 14197                         
 14198                         int base_num = 3;
 14198                         int base_num = 3;
 14199                         symbol_c *param_value = NULL;
 14199                         symbol_c *param_value = NULL;
 14506                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14506                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14507                     {
 14507                     {
 14508                 
 14508                 
 14509                         function_name = (symbol_c*)(new pragma_c("__concat"));
 14509                         function_name = (symbol_c*)(new pragma_c("__concat"));
 14510                         
 14510                         
 14511                         char nb_param_str[10];
 14511                         char* nb_param_str = new char[10];
 14512                         sprintf(nb_param_str, "%d", nb_param);
 14512                         sprintf(nb_param_str, "%d", nb_param);
 14513                         ADD_PARAM_LIST((symbol_c*)(new integer_c(nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
 14513                         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)
 14514                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14514                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14515                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14515                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14516                         
 14516                         
 14517                         int base_num = 3;
 14517                         int base_num = 3;
 14518                         symbol_c *param_value = NULL;
 14518                         symbol_c *param_value = NULL;