stage4/generate_cc/generate_cc.cc
changeset 30 83201ec94ef4
parent 29 3ba8ef691003
child 32 289256ec66f1
equal deleted inserted replaced
29:3ba8ef691003 30:83201ec94ef4
   191 #include "generate_cc_base.cc"
   191 #include "generate_cc_base.cc"
   192 #include "generate_cc_sfcdecl.cc"
   192 #include "generate_cc_sfcdecl.cc"
   193 #include "generate_cc_typedecl.cc"
   193 #include "generate_cc_typedecl.cc"
   194 #include "generate_cc_vardecl.cc"
   194 #include "generate_cc_vardecl.cc"
   195 #include "generate_cc_configbody.cc"
   195 #include "generate_cc_configbody.cc"
       
   196 #include "generate_location_list.cc"
   196 
   197 
   197 /***********************************************************************/
   198 /***********************************************************************/
   198 /***********************************************************************/
   199 /***********************************************************************/
   199 /***********************************************************************/
   200 /***********************************************************************/
   200 /***********************************************************************/
   201 /***********************************************************************/
   454       : generate_cc_typedecl_c(s4o_ptr) {};
   455       : generate_cc_typedecl_c(s4o_ptr) {};
   455     virtual ~generate_cc_pous_c(void) {}
   456     virtual ~generate_cc_pous_c(void) {}
   456 
   457 
   457 
   458 
   458   public:
   459   public:
   459 /***************************/
       
   460 /* B 0 - Programming Model */
       
   461 /***************************/
       
   462 void *visit(library_c *symbol) {
       
   463   TRACE("library_c");
       
   464 
       
   465   /* Insert the header... */
       
   466   s4o.print("/*******************************************/\n");
       
   467   s4o.print("/*     FILE GENERATED BY iec2cc            */\n");
       
   468   s4o.print("/* Editing this file is not recommended... */\n");
       
   469   s4o.print("/*******************************************/\n");
       
   470   s4o.print("\n\n\n\n\n");
       
   471   s4o.print("#include \"plciec.h\"\n");
       
   472   s4o.print("\n\n\n\n\n");
       
   473 
       
   474   /* now do the actual code... */
       
   475   print_list(symbol);
       
   476   s4o.print("\n\n");
       
   477 
       
   478   /* Finish off with the main() */
       
   479   s4o.print("#include \"plciec.cc\"\n");
       
   480   s4o.print("\n\n");
       
   481 
       
   482   // function_symtable.print();
       
   483   return NULL;
       
   484 }
       
   485 
   460 
   486 /*************************/
   461 /*************************/
   487 /* B.1 - Common elements */
   462 /* B.1 - Common elements */
   488 /*************************/
   463 /*************************/
   489 /*******************************************/
   464 /*******************************************/
   944 SYM_REF6(configuration_declaration_c, configuration_name, global_var_declarations, resource_declarations, access_declarations, instance_specific_initializations, unused)
   919 SYM_REF6(configuration_declaration_c, configuration_name, global_var_declarations, resource_declarations, access_declarations, instance_specific_initializations, unused)
   945 */
   920 */
   946 void *visit(configuration_declaration_c *symbol) {
   921 void *visit(configuration_declaration_c *symbol) {
   947   generate_cc_vardecl_c *vardecl;
   922   generate_cc_vardecl_c *vardecl;
   948   
   923   
       
   924   /* Insert the header... */
       
   925   s4o.print("/*******************************************/\n");
       
   926   s4o.print("/*     FILE GENERATED BY iec2cc            */\n");
       
   927   s4o.print("/* Editing this file is not recommended... */\n");
       
   928   s4o.print("/*******************************************/\n\n");
       
   929   s4o.print("#include \"plciec.h\"\n\n");
       
   930   
   949   /* (A) configuration declaration... */
   931   /* (A) configuration declaration... */
   950   /* (A.1) configuration name in comment */
   932   /* (A.1) configuration name in comment */
   951   s4o.print("// CONFIGURATION ");
   933   s4o.print("// CONFIGURATION ");
   952   symbol->configuration_name->accept(*this);
   934   symbol->configuration_name->accept(*this);
   953   s4o.print("\n");
   935   s4o.print("\n");
  1149     	bool single_resource = current_resource_name == NULL;
  1131     	bool single_resource = current_resource_name == NULL;
  1150       if (single_resource)
  1132       if (single_resource)
  1151         current_resource_name = new identifier_c("RESOURCE");
  1133         current_resource_name = new identifier_c("RESOURCE");
  1152       generate_cc_vardecl_c *vardecl;
  1134       generate_cc_vardecl_c *vardecl;
  1153       
  1135       
       
  1136       /* Insert the header... */
       
  1137       s4o.print("/*******************************************/\n");
       
  1138       s4o.print("/*     FILE GENERATED BY iec2cc            */\n");
       
  1139       s4o.print("/* Editing this file is not recommended... */\n");
       
  1140       s4o.print("/*******************************************/\n\n");
       
  1141       s4o.print("#include \"plciec.h\"\n\n");
       
  1142       
  1154       /* (A) resource declaration... */
  1143       /* (A) resource declaration... */
  1155       /* (A.1) resource name in comment */
  1144       /* (A.1) resource name in comment */
  1156       s4o.print("// RESOURCE ");
  1145       s4o.print("// RESOURCE ");
  1157       current_resource_name->accept(*this);
  1146       current_resource_name->accept(*this);
  1158       s4o.print("\n");
  1147       s4o.print("\n");
  1246         current_program_name = ((identifier_c*)(symbol->program_name))->value;
  1235         current_program_name = ((identifier_c*)(symbol->program_name))->value;
  1247         if (symbol->task_name != NULL) {
  1236         if (symbol->task_name != NULL) {
  1248           s4o.print(s4o.indent_spaces);
  1237           s4o.print(s4o.indent_spaces);
  1249           s4o.print("if (");
  1238           s4o.print("if (");
  1250           symbol->task_name->accept(*this);
  1239           symbol->task_name->accept(*this);
  1251           s4o.print(") {\n");
  1240           s4o.print(" == 0) {\n");
  1252           s4o.indent_right(); 
  1241           s4o.indent_right(); 
  1253         }
  1242         }
  1254         
  1243         
  1255         wanted_assigntype = assign_at;
  1244         wanted_assigntype = assign_at;
  1256         symbol->prog_conf_elements->accept(*this);
  1245         symbol->prog_conf_elements->accept(*this);
  1405       current_configuration = NULL;
  1394       current_configuration = NULL;
  1406     }
  1395     }
  1407             
  1396             
  1408     ~generate_cc_c(void) {}
  1397     ~generate_cc_c(void) {}
  1409 
  1398 
       
  1399 /***************************/
       
  1400 /* B 0 - Programming Model */
       
  1401 /***************************/
       
  1402     void *visit(library_c *symbol) {
       
  1403       generate_location_list_c generate_location_list(&s4o);
       
  1404       symbol->accept(generate_location_list);
       
  1405       
       
  1406       for(int i = 1; i < symbol->n; i++) {
       
  1407         symbol->elements[i]->accept(*this);
       
  1408       }
       
  1409       return NULL;
       
  1410     }
       
  1411 
  1410 /*************************/
  1412 /*************************/
  1411 /* B.1 - Common elements */
  1413 /* B.1 - Common elements */
  1412 /*************************/
  1414 /*************************/
  1413 /*******************************************/
  1415 /*******************************************/
  1414 /* B 1.1 - Letters, digits and identifiers */
  1416 /* B 1.1 - Letters, digits and identifiers */