stage4/generate_iec/generate_iec.cc
changeset 17 38754701ac41
parent 16 e8b99f896416
child 27 667721cf52c5
equal deleted inserted replaced
16:e8b99f896416 17:38754701ac41
  1116   return NULL;
  1116   return NULL;
  1117 }
  1117 }
  1118 
  1118 
  1119 /* TRANSITION [transition_name] ['(' 'PRIORITY' ':=' integer ')']
  1119 /* TRANSITION [transition_name] ['(' 'PRIORITY' ':=' integer ')']
  1120  *   FROM steps TO steps 
  1120  *   FROM steps TO steps 
  1121  *   transition_condition
  1121  *   ':' simple_instr_list | ':=' expression
  1122  * END_TRANSITION
  1122  * END_TRANSITION
  1123  */
  1123  */
  1124 void *visit(transition_c *symbol) {
  1124 void *visit(transition_c *symbol) {
  1125   s4o.print(s4o.indent_spaces);
  1125   s4o.print(s4o.indent_spaces);
  1126   s4o.print("TRANSITION ");
  1126   s4o.print("TRANSITION ");
  1137   symbol->from_steps->accept(*this);
  1137   symbol->from_steps->accept(*this);
  1138   s4o.print(" TO ");
  1138   s4o.print(" TO ");
  1139   symbol->to_steps->accept(*this);
  1139   symbol->to_steps->accept(*this);
  1140   s4o.indent_right();
  1140   s4o.indent_right();
  1141   if (symbol->transition_condition_il != NULL) {
  1141   if (symbol->transition_condition_il != NULL) {
  1142   	symbol->transition_condition_il->accept(*this);
  1142   	s4o.print(":\n");
       
  1143     symbol->transition_condition_il->accept(*this);
  1143   }
  1144   }
  1144   if (symbol->transition_condition_st != NULL) {
  1145   if (symbol->transition_condition_st != NULL) {
  1145   	symbol->transition_condition_st->accept(*this);
  1146   	s4o.print("\n");
       
  1147     s4o.print(s4o.indent_spaces);
       
  1148     s4o.print(":= ");
       
  1149     symbol->transition_condition_st->accept(*this);
       
  1150     s4o.print(";\n");
  1146   }
  1151   }
  1147   s4o.indent_left();
  1152   s4o.indent_left();
  1148   s4o.print(s4o.indent_spaces);
  1153   s4o.print(s4o.indent_spaces);
  1149   s4o.print("END_TRANSITION\n");
  1154   s4o.print("END_TRANSITION\n");
  1150   return NULL;
  1155   return NULL;
  1162 }
  1167 }
  1163 
  1168 
  1164 /* '(' step_name ',' step_name {',' step_name} ')' */
  1169 /* '(' step_name ',' step_name {',' step_name} ')' */
  1165 void *visit(step_name_list_c *symbol) {
  1170 void *visit(step_name_list_c *symbol) {
  1166   print_list(symbol, "(", ", ", ")");
  1171   print_list(symbol, "(", ", ", ")");
  1167   return NULL;
       
  1168 }
       
  1169 
       
  1170 /* ':' simple_instr_list | ':=' expression */
       
  1171 void *visit(transition_condition_c *symbol) {
       
  1172   if (symbol->simple_instr_list != NULL) {
       
  1173     s4o.print(":\n");
       
  1174     symbol->simple_instr_list->accept(*this);
       
  1175   }
       
  1176   if (symbol->expression != NULL) {
       
  1177     s4o.print("\n");
       
  1178     s4o.print(s4o.indent_spaces);
       
  1179     s4o.print(":= ");
       
  1180     symbol->expression->accept(*this);
       
  1181     s4o.print(";\n");
       
  1182   }
       
  1183   return NULL;
  1172   return NULL;
  1184 }
  1173 }
  1185 
  1174 
  1186 /* ACTION action_name ':' function_block_body END_ACTION */
  1175 /* ACTION action_name ':' function_block_body END_ACTION */
  1187 void *visit(action_c *symbol) {
  1176 void *visit(action_c *symbol) {