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 */ |