stage4/generate_iec/generate_iec.cc
changeset 8 89902a42698e
parent 7 0df673a4a561
child 10 66f4f7f85d0a
equal deleted inserted replaced
7:0df673a4a561 8:89902a42698e
  1035 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1035 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1036 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1036 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1037 
  1037 
  1038 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1038 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1039 
  1039 
       
  1040 
       
  1041 
       
  1042 
  1040 /* sequential_function_chart {sfc_network} */
  1043 /* sequential_function_chart {sfc_network} */
  1041 void *visit(sequential_function_chart_c *symbol) {
  1044 void *visit(sequential_function_chart_c *symbol) {
  1042   print_list(symbol, "", "\n\n", "");
  1045   print_list(symbol, "", "\n\n", "");
  1043   return NULL;
  1046   return NULL;
  1044 }
  1047 }
  1118   return NULL;
  1121   return NULL;
  1119 }
  1122 }
  1120 
  1123 
  1121 /* N | R | S | P */
  1124 /* N | R | S | P */
  1122 void *visit(qualifier_c *symbol) {
  1125 void *visit(qualifier_c *symbol) {
  1123  symbol->accept(*this);
  1126   symbol->accept(*this);
  1124  return NULL;
  1127   return NULL;
  1125 }
  1128 }
  1126 
  1129 
  1127 /* L | D | SD | DS | SL */
  1130 /* L | D | SD | DS | SL */
  1128 void *visit(timed_qualifier_c *symbol) {
  1131 void *visit(timed_qualifier_c *symbol) {
  1129  symbol->accept(*this);
  1132   symbol->accept(*this);
  1130  return NULL;
  1133   return NULL;
  1131 }
  1134 }
  1132 
  1135 
       
  1136 /* TRANSITION [transition_name] ['(' 'PRIORITY' ':=' integer ')']
       
  1137  *   FROM steps TO steps 
       
  1138  *   transition_condition
       
  1139  * END_TRANSITION
       
  1140  */
  1133 void *visit(transition_c *symbol) {
  1141 void *visit(transition_c *symbol) {
  1134   s4o.print(s4o.indent_spaces);
  1142   s4o.print(s4o.indent_spaces);
  1135   s4o.print("TRANSITION ");
  1143   s4o.print("TRANSITION ");
  1136   if (symbol->transition_name != NULL){
  1144   if (symbol->transition_name != NULL){
  1137     symbol->transition_name->accept(*this);
  1145     symbol->transition_name->accept(*this);
  1158   s4o.print(s4o.indent_spaces);
  1166   s4o.print(s4o.indent_spaces);
  1159   s4o.print("END_TRANSITION");
  1167   s4o.print("END_TRANSITION");
  1160   return NULL;
  1168   return NULL;
  1161 }
  1169 }
  1162 
  1170 
       
  1171 /* step_name | step_name_list */
  1163 void *visit(steps_c *symbol) {
  1172 void *visit(steps_c *symbol) {
  1164   if(symbol->step_name != NULL){
  1173   if(symbol->step_name != NULL){
  1165     symbol->step_name->accept(*this);
  1174     symbol->step_name->accept(*this);
  1166     s4o.print(" ");
  1175     s4o.print(" ");
  1167   }
  1176   }
  1169     symbol->step_name_list->accept(*this);
  1178     symbol->step_name_list->accept(*this);
  1170   }
  1179   }
  1171   return NULL;
  1180   return NULL;
  1172 }
  1181 }
  1173 
  1182 
       
  1183 /* '(' step_name ',' step_name {',' step_name} ')' */
  1174 void *visit(step_name_list_c *symbol) {
  1184 void *visit(step_name_list_c *symbol) {
  1175   print_list(symbol, "(", ", ", ") ");
  1185   print_list(symbol, "(", ", ", ") ");
  1176   return NULL;
  1186   return NULL;
  1177 }
  1187 }
  1178 
  1188 
       
  1189 /* ':' simple_instr_list | ':=' expression */
  1179 void *visit(transition_condition_c *symbol) {
  1190 void *visit(transition_condition_c *symbol) {
  1180   if (symbol->simple_instr_list != NULL) {
  1191   if (symbol->simple_instr_list != NULL) {
  1181     s4o.print(s4o.indent_spaces);
  1192     s4o.print(s4o.indent_spaces);
  1182     s4o.print(":\n");
  1193     s4o.print(":\n");
  1183     symbol->simple_instr_list->accept(*this);
  1194     symbol->simple_instr_list->accept(*this);
  1190     s4o.print(";\n");
  1201     s4o.print(";\n");
  1191   }
  1202   }
  1192   return NULL;
  1203   return NULL;
  1193 }
  1204 }
  1194 
  1205 
       
  1206 /* ACTION action_name ':' function_block_body END_ACTION */
  1195 void *visit(action_c *symbol) {
  1207 void *visit(action_c *symbol) {
  1196  s4o.print(s4o.indent_spaces);
  1208   s4o.print(s4o.indent_spaces);
  1197  s4o.print("ACTION ");
  1209   s4o.print("ACTION ");
  1198  symbol->action_name->accept(*this);
  1210   symbol->action_name->accept(*this);
  1199  s4o.print(": ");
  1211   s4o.print(": ");
  1200  s4o.indent_right();
  1212   s4o.indent_right();
  1201  s4o.print(s4o.indent_spaces);
  1213   s4o.print(s4o.indent_spaces);
  1202  symbol->function_block_body->accept(*this);
  1214   symbol->function_block_body->accept(*this);
  1203  s4o.print("\n ");
  1215   s4o.print("\n ");
  1204  s4o.indent_left();
  1216   s4o.indent_left();
  1205  s4o.print(s4o.indent_spaces);
  1217   s4o.print(s4o.indent_spaces);
  1206  s4o.print("END_ACTION");
  1218   s4o.print("END_ACTION");
  1207  return NULL;
  1219   return NULL;
  1208 }
  1220 }
  1209 
  1221  
  1210 
  1222  
  1211 
  1223  
  1212 /********************************/
  1224 /********************************/
  1213 /* B 1.7 Configuration elements */
  1225 /* B 1.7 Configuration elements */
  1214 /********************************/
  1226 /********************************/
  1215 /*
  1227 /*
  1216 CONFIGURATION configuration_name
  1228 CONFIGURATION configuration_name