stage4/generate_iec/generate_iec.cc
changeset 7 0df673a4a561
parent 3 38850ee685e6
child 8 89902a42698e
equal deleted inserted replaced
6:94741aa26423 7:0df673a4a561
  1035 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1035 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1036 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1036 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1037 
  1037 
  1038 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1038 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1039 
  1039 
       
  1040 /* sequential_function_chart {sfc_network} */
  1040 void *visit(sequential_function_chart_c *symbol) {
  1041 void *visit(sequential_function_chart_c *symbol) {
  1041   print_list(symbol, "", "\n\n", "");
  1042   print_list(symbol, "", "\n\n", "");
  1042   return NULL;
  1043   return NULL;
  1043 }
  1044 }
  1044 
  1045 
       
  1046 /* sfc_network {step | transition | action} */
  1045 void *visit(sfc_network_c *symbol) {
  1047 void *visit(sfc_network_c *symbol) {
  1046   print_list(symbol, "", "\n\n", "");
  1048   print_list(symbol, "", "\n\n", "");
  1047   return NULL;
  1049   return NULL;
  1048 }
  1050 }
  1049 
  1051 
       
  1052 /* INITIAL_STEP step_name ':' [action_association_list] END_STEP */
  1050 void *visit(initial_step_c *symbol) {
  1053 void *visit(initial_step_c *symbol) {
  1051   s4o.print(s4o.indent_spaces);
  1054   s4o.print(s4o.indent_spaces);
  1052   s4o.print("INITIAL_STEP ");
  1055   s4o.print("INITIAL_STEP ");
  1053   symbol->step_name->accept(*this);
  1056   symbol->step_name->accept(*this);
  1054   s4o.print(" :\n");
  1057   s4o.print(" :\n");
  1059   s4o.print(s4o.indent_spaces);
  1062   s4o.print(s4o.indent_spaces);
  1060   s4o.print("END_STEP ");
  1063   s4o.print("END_STEP ");
  1061   return NULL;
  1064   return NULL;
  1062 }
  1065 }
  1063 
  1066 
       
  1067 /* STEP step_name ':' [action_association_list] END_STEP */
  1064 void *visit(step_c *symbol) {
  1068 void *visit(step_c *symbol) {
  1065   s4o.print(s4o.indent_spaces);
  1069   s4o.print(s4o.indent_spaces);
  1066   s4o.print("STEP ");
  1070   s4o.print("STEP ");
  1067   symbol->step_name->accept(*this);
  1071   symbol->step_name->accept(*this);
  1068   s4o.print(" :\n");
  1072   s4o.print(" :\n");
  1073   s4o.print(s4o.indent_spaces);
  1077   s4o.print(s4o.indent_spaces);
  1074   s4o.print("END_STEP ");
  1078   s4o.print("END_STEP ");
  1075   return NULL;
  1079   return NULL;
  1076 }
  1080 }
  1077 
  1081 
       
  1082 /* action_association_list {action_association} */
  1078 void *visit(action_association_list_c *symbol) {
  1083 void *visit(action_association_list_c *symbol) {
  1079   print_list(symbol, "", "\n", "");
  1084   print_list(symbol, "", "\n", "");
  1080   return NULL;
  1085   return NULL;
  1081 }
  1086 }
  1082 
  1087 
       
  1088 /* action_name '(' [action_qualifier] [indicator_name_list] ')' */
  1083 void *visit(action_association_c *symbol) {
  1089 void *visit(action_association_c *symbol) {
  1084   if(symbol->action_qualifier != NULL){
  1090   if(symbol->action_qualifier != NULL){
  1085     symbol->action_name->accept(*this);
  1091     symbol->action_name->accept(*this);
  1086   }
  1092   }
  1087   s4o.print(" (");
  1093   s4o.print(" (");
  1088   if(symbol->action_qualifier != NULL){
  1094   if(symbol->action_qualifier != NULL){
  1089     symbol->action_qualifier->accept(*this);
  1095     symbol->action_qualifier->accept(*this);
  1090   }
  1096   }
  1091   s4o.print(" ");
  1097   s4o.print(" ");
  1092   if(symbol->action_qualifier != NULL){
  1098   if(symbol->indicator_name_list != NULL){
  1093     symbol->indicator_name_list->accept(*this);
  1099     symbol->indicator_name_list->accept(*this);
  1094   }
  1100   }
  1095   s4o.print(" )");
  1101   s4o.print(" )");
  1096   return NULL;
  1102   return NULL;
  1097 }
  1103 }
  1098 
  1104 
       
  1105 /* indicator_name_list ',' indicator_name */
  1099 void *visit(indicator_name_list_c *symbol) {
  1106 void *visit(indicator_name_list_c *symbol) {
  1100  print_list(symbol, "", ", ", "");
  1107   print_list(symbol, "", ", ", "");
  1101  return NULL;
  1108   return NULL;
  1102 }
  1109 }
  1103 
  1110 
       
  1111 /* action_qualifier [',' action_time] */
  1104 void *visit(action_qualifier_c *symbol) {
  1112 void *visit(action_qualifier_c *symbol) {
  1105  symbol->action_qualifier->accept(*this);
  1113   symbol->action_qualifier->accept(*this);
  1106  symbol->action_time->accept(*this);
  1114   if(symbol->action_time != NULL){
  1107  return NULL;
  1115     s4o.print(", ");
  1108 }
  1116     symbol->action_time->accept(*this);
  1109 
  1117   }
       
  1118   return NULL;
       
  1119 }
       
  1120 
       
  1121 /* N | R | S | P */
  1110 void *visit(qualifier_c *symbol) {
  1122 void *visit(qualifier_c *symbol) {
  1111  symbol->accept(*this);
  1123  symbol->accept(*this);
  1112  return NULL;
  1124  return NULL;
  1113 }
  1125 }
  1114 
  1126 
       
  1127 /* L | D | SD | DS | SL */
  1115 void *visit(timed_qualifier_c *symbol) {
  1128 void *visit(timed_qualifier_c *symbol) {
  1116  symbol->accept(*this);
  1129  symbol->accept(*this);
  1117  return NULL;
  1130  return NULL;
  1118 }
  1131 }
  1119 
  1132