equal
deleted
inserted
replaced
48 stepcount_sd, |
48 stepcount_sd, |
49 stepdef_sd, |
49 stepdef_sd, |
50 stepundef_sd, |
50 stepundef_sd, |
51 actiondef_sd, |
51 actiondef_sd, |
52 actionundef_sd, |
52 actionundef_sd, |
53 actioncount_sd |
53 actioncount_sd, |
|
54 transitioncount_sd |
54 } sfcdeclaration_t; |
55 } sfcdeclaration_t; |
55 |
56 |
56 private: |
57 private: |
57 char step_number; |
58 char step_number; |
58 char action_number; |
59 char action_number; |
105 |
106 |
106 /* transitions debug table declaration */ |
107 /* transitions debug table declaration */ |
107 s4o.print(s4o.indent_spaces + "__IEC_BOOL_t __debug_transition_list["); |
108 s4o.print(s4o.indent_spaces + "__IEC_BOOL_t __debug_transition_list["); |
108 s4o.print_integer(transition_number); |
109 s4o.print_integer(transition_number); |
109 s4o.print("];\n"); |
110 s4o.print("];\n"); |
|
111 s4o.print(s4o.indent_spaces + "UINT __nb_transitions;\n"); |
110 |
112 |
111 /* last_ticktime declaration */ |
113 /* last_ticktime declaration */ |
112 s4o.print(s4o.indent_spaces + "TIME __lasttick_time;\n"); |
114 s4o.print(s4o.indent_spaces + "TIME __lasttick_time;\n"); |
113 break; |
115 break; |
114 case sfcinit_sd: |
116 case sfcinit_sd: |
163 print_variable_prefix(); |
165 print_variable_prefix(); |
164 s4o.print("__action_list[i] = temp_action;\n"); |
166 s4o.print("__action_list[i] = temp_action;\n"); |
165 s4o.indent_left(); |
167 s4o.indent_left(); |
166 s4o.print(s4o.indent_spaces + "}\n"); |
168 s4o.print(s4o.indent_spaces + "}\n"); |
167 |
169 |
|
170 /* transitions table count */ |
|
171 wanted_sfcdeclaration = transitioncount_sd; |
|
172 for(int i = 0; i < symbol->n; i++) |
|
173 symbol->elements[i]->accept(*this); |
|
174 s4o.print(s4o.indent_spaces); |
|
175 print_variable_prefix(); |
|
176 s4o.print("__nb_transitions = "); |
|
177 s4o.print_integer(transition_number); |
|
178 s4o.print(";\n"); |
|
179 transition_number = 0; |
|
180 wanted_sfcdeclaration = sfcinit_sd; |
|
181 |
168 /* last_ticktime initialisation */ |
182 /* last_ticktime initialisation */ |
169 s4o.print(s4o.indent_spaces); |
183 s4o.print(s4o.indent_spaces); |
170 print_variable_prefix(); |
184 print_variable_prefix(); |
171 s4o.print("__lasttick_time = __CURRENT_TIME;\n"); |
185 s4o.print("__lasttick_time = __CURRENT_TIME;\n"); |
172 break; |
186 break; |
266 } |
280 } |
267 |
281 |
268 void *visit(transition_c *symbol) { |
282 void *visit(transition_c *symbol) { |
269 switch (wanted_sfcdeclaration) { |
283 switch (wanted_sfcdeclaration) { |
270 case sfcdecl_sd: |
284 case sfcdecl_sd: |
|
285 case transitioncount_sd: |
271 transition_number++; |
286 transition_number++; |
272 break; |
287 break; |
273 default: |
288 default: |
274 break; |
289 break; |
275 } |
290 } |