NAPA Compiler V4.50
Author: Yves Leduc, yves.leduc.be@gmail.com
Loading...
Searching...
No Matches
C:/Simulate/Napados/Source/main.c File Reference
#include "./napa.h"
#include "./proto.h"

Go to the source code of this file.

Macros

#define EXTERN   /* defined empty in this file only */
#define DEBUG_IT(f, c)

Functions

int main (int argc, char **argv)

Macro Definition Documentation

◆ DEBUG_IT

#define DEBUG_IT ( f,
c )

Definition at line 142 of file main.c.

Referenced by main().

◆ EXTERN

#define EXTERN   /* defined empty in this file only */

Definition at line 106 of file main.c.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 149 of file main.c.

149 {
150
151 /* time of compilation is added to executable for identification and traceability ............................................. */
152
153 tag_executable(__DATE__, __TIME__); DEBUG_IT("cl.c", 'a');
154
155
156 /* parse line of command, syntax options ...................................................................................... */
157
158 default_control_variables(); DEBUG_IT("fc.c", ' ');
159 process_command_line(argc, argv); DEBUG_IT("cl.c", ' ');
160
161 /* input file reading, parsing, and table building, cross reference on demand ................................................. */
162
163 line_parsing(); DEBUG_IT("lp.c", 'b');
164 process_aliases(); DEBUG_IT("fc.c", ' ');
165 build_cross_reference(); DEBUG_IT("xr.c", ' ');
166 build_usage_comment(); DEBUG_IT("pr.c", ' ');
167 process_error_if_any(); DEBUG_IT("fc.c", ' ');
168
169
170 /* postprocess parsed data .................................................................................................... */
171
172 redefine_random_seed(); DEBUG_IT("rd.c", 'c');
173 redefine_node_segments(); DEBUG_IT("rd.c", ' ');
174 separe_qualifiers(); DEBUG_IT("rd.c", ' ');
175 redefine_nodes(); DEBUG_IT("rd.c", ' ');
176 create_nodes(); DEBUG_IT("rd.c", ' ');
177 inject_nodes(); DEBUG_IT("rd.c", ' ');
178 process_error_if_any(); DEBUG_IT("fc.c", ' ');
179
180 expand_update_definitions(); DEBUG_IT("fc.c", 'd');
181 expand_IO_definitions(); DEBUG_IT("fc.c", ' ');
182 expand_dump_definitions(); DEBUG_IT("fc.c", ' ');
183 complete_directives(); DEBUG_IT("fc.c", ' ');
184 process_error_if_any(); DEBUG_IT("fc.c", ' ');
185
186
187 /* syntax parsed data ......................................................................................................... */
188
189 syntax_command_line(); DEBUG_IT("sx.c", 'e');
190 syntax_fs(); DEBUG_IT("sx.c", ' ');
191 syntax_directives(); DEBUG_IT("sx.c", ' ');
192 syntax_nodes(); DEBUG_IT("sx.c", ' ');
193 syntax_variables(); DEBUG_IT("sx.c", ' ');
194 syntax_records(); DEBUG_IT("sx.c", ' ');
195 syntax_terminate(); DEBUG_IT("sx.c", ' ');
196 syntax_segment_value(); DEBUG_IT("sx.c", ' ');
197 syntax_updates(); DEBUG_IT("sx.c", ' ');
198 process_error_if_any(); DEBUG_IT("fc.c", ' ');
199
200
201 /* determine and check the type of nodes ...................................................................................... */
202
203 declaration_type_A(); DEBUG_IT("dc.c", 'f');
204 node_determination(); DEBUG_IT("nd.c", ' ');
205 process_error_if_any(); DEBUG_IT("fc.c", ' ');
206
207 stuck_nodes(); DEBUG_IT("rd.c", 'g');
208 declaration_type_B(); DEBUG_IT("dc.c", ' ');
209 check_types(); DEBUG_IT("tp.c", ' ');
210 process_error_if_any(); DEBUG_IT("fc.c", ' ');
211
212
213 /* determine the sampling frequencies of each segment ......................................................................... */
214
215 determine_simulation_rate(); DEBUG_IT("fc.c", 'h');
217 compact_segment(); DEBUG_IT("fc.c", ' ');
219 process_error_if_any(); DEBUG_IT("fc.c", ' ');
220
221
222 /* expand records ............................................................................................................. */
223
224 build_record_dependencies(); DEBUG_IT("sv.c", 'i');
225 sort_records(); DEBUG_IT("sv.c", ' ');
226 expand_records(); DEBUG_IT("fc.c", ' ');
227 process_error_if_any(); DEBUG_IT("fc.c", ' ');
228
229
230 /* prepare the sorting of data ................................................................................................ */
231
232 build_node_dependencies(); DEBUG_IT("sn.c", 'j');
233 build_var_dependencies(); DEBUG_IT("sv.c", ' ');
234 build_update_dependencies(); DEBUG_IT("sv.c", ' ');
235 process_error_if_any(); DEBUG_IT("fc.c", ' ');
237 process_error_if_any(); DEBUG_IT("fc.c", ' ');
238
239
240 /* sort data .................................................................................................................. */
241
242 sort_nodes(); DEBUG_IT("sn.c", 'k');
243 sort_vars(); DEBUG_IT("sv.c", ' ');
244 sort_updates(); DEBUG_IT("sv.c", ' ');
245 process_error_if_any(); DEBUG_IT("fc.c", ' ');
246
247
248 /* process data to prepare the building of the production of C code ........................................................... */
249
250 name_mangling(); DEBUG_IT("rd.c", 'l');
251 collect_functions(); DEBUG_IT("rd.c", ' ');
252 process_init(); DEBUG_IT("rd.c", ' ');
253 process_error_if_any(); DEBUG_IT("fc.c", ' ');
254
255 expand_string_variables(); DEBUG_IT("fc.c", 'm');
256 mark_updates_if_constant(); DEBUG_IT("id.c", ' ');
257 mark_constants(); DEBUG_IT("id.c", ' ');
258 process_error_if_any(); DEBUG_IT("fc.c", ' ');
259
260 check_array_usage(); DEBUG_IT("fc.c", 'n');
261 check_record_usage(); DEBUG_IT("fc.c", ' ');
262 check_directive_usage(); DEBUG_IT("fc.c", ' ');
263 process_error_if_any(); DEBUG_IT("fc.c", ' ');
264
265
266 /* identify instructions and functions which will require a special processing ................................................ */
267
268 purge_constants_in_options(); DEBUG_IT("rd.c", 'o');
269 collect_string_of_options(); DEBUG_IT("co.c", ' ');
271 collect_export_definitions(); DEBUG_IT("fc.c", ' ');
272 purge_constants_in_ganging(); DEBUG_IT("rd.c", ' ');
273 process_error_if_any(); DEBUG_IT("fc.c", ' ');
274
275
276 /* write output C code, proceed to final verifications ....................................................................... */
277
278 print_C_code_banner_a(); DEBUG_IT("pr.c", 'p');
279 print_C_code_banner_b(); DEBUG_IT("pr.c", ' ');
281 define_macros(); DEBUG_IT("pr.c", ' ');
282 declare_global_values(); DEBUG_IT("pr.c", ' ');
283 declare_function_pointers(); DEBUG_IT("pr.c", ' ');
284 declare_prototypes(); DEBUG_IT("pr.c", ' ');
285 define_directives(); DEBUG_IT("pr.c", ' ');
286 declare_file_handles(); DEBUG_IT("pr.c", ' ');
287 declare_vars(); DEBUG_IT("pr.c", ' ');
288 declare_nodes(); DEBUG_IT("pr.c", ' ');
289 declare_records(); DEBUG_IT("pr.c", ' ');
290 declare_arrays(); DEBUG_IT("pr.c", ' ');
291 include_napa_header_files(); DEBUG_IT("pr.c", ' ');
292 process_error_if_any(); DEBUG_IT("fc.c", ' ');
293
294 open_main(); DEBUG_IT("pr.c", 'q');
295 call_ping_1(); DEBUG_IT("pr.c", ' ');
298
299 open_ping_file(); DEBUG_IT("pr.c", 'r');
300 open_IO_files(); DEBUG_IT("pr.c", ' ');
302 print_check_output(); DEBUG_IT("pr.c", ' ');
303 print_output_banner_0(); DEBUG_IT("pr.c", ' ');
304 call_ping_2(); DEBUG_IT("pr.c", ' ');
305 load_files(); DEBUG_IT("pr.c", ' ');
306 process_error_if_any(); DEBUG_IT("fc.c", ' ');
307
308 build_main_loop(); DEBUG_IT("pr.c", 's');
309 process_error_if_any(); DEBUG_IT("fc.c", ' ');
310
311 print_check_arrays(); DEBUG_IT("pr.c", 't');
312 close_IO_files(); DEBUG_IT("pr.c", ' ');
313 call_closedown_functions(); DEBUG_IT("pr.c", ' ');
314
315 close_main(); DEBUG_IT("pr.c", 'u');
316 process_error_if_any(); DEBUG_IT("fc.c", ' ');
317
318 control_init_function(); DEBUG_IT("pr.c", 'v');
319 reset_variables_function(); DEBUG_IT("pr.c", ' ');
320 reset_nodes_function(); DEBUG_IT("pr.c", ' ');
321 reset_arrays_function(); DEBUG_IT("pr.c", ' ');
322 reset_records_function(); DEBUG_IT("pr.c", ' ');
324 process_error_if_any(); DEBUG_IT("fc.c", ' ');
325
326 load_function(); DEBUG_IT("pr.c", 'w');
327 dump_function(); DEBUG_IT("pr.c", ' ');
328 process_error_if_any(); DEBUG_IT("fc.c", ' ');
329
331 check_option_function(); DEBUG_IT("co.c", ' ');
332 check_directive_function(); DEBUG_IT("pr.c", ' ');
333 napa_IO_manager_function(); DEBUG_IT("rm.c", ' ');
334 napa_data_record_function(); DEBUG_IT("rm.c", ' ');
335 process_error_if_any(); DEBUG_IT("fc.c", ' ');
336
337 randomizer_functions(); DEBUG_IT("rg.c", 'y');
338 random_functions(); DEBUG_IT("rg.c", ' ');
339 print_ping_function(); DEBUG_IT("pr.c", ' ');
340 napa_timer_function(); DEBUG_IT("pr.c", ' ');
341 napa_exit_functions(); DEBUG_IT("pr.c", ' ');
342 process_error_if_any(); DEBUG_IT("fc.c", ' ');
343
344
345 /* end of compilation ......................................................................................................... */
346
347 that_s_all(); DEBUG_IT("pr.c", 'z');
348 process_error_if_any(); DEBUG_IT("fc.c", ' ');
349 DEBUG_IT("", ' ');
350 return EXIT_SUCCESS;
351}
void build_main_loop(void)
Definition bl.c:45
void process_command_line(long c, char **v)
Definition cl.c:108
void tag_executable(const char *d, const char *t)
Definition cl.c:62
void collect_string_of_options(void)
Definition co.c:379
void collect_string_of_functions(void)
Definition co.c:561
void check_option_function(void)
Definition co.c:87
void declaration_type_B(void)
Definition dc.c:227
void declaration_type_A(void)
Definition dc.c:25
void check_record_usage(void)
Definition fc.c:560
void process_error_if_any(void)
Definition fc.c:1467
void compact_segment(void)
Definition fc.c:1273
void expand_string_variables(void)
Definition fc.c:323
void determine_segment_processing_rate(void)
Definition fc.c:1080
void complete_directives(void)
Definition fc.c:310
void check_array_usage(void)
Definition fc.c:503
void build_to_be_delayed_node_list(void)
Definition fc.c:998
void expand_records(void)
Definition fc.c:377
void determine_output_segment_rate(void)
Definition fc.c:1135
void check_directive_usage(void)
Definition fc.c:631
void expand_update_definitions(void)
Definition fc.c:777
void expand_dump_definitions(void)
Definition fc.c:887
void collect_export_definitions(void)
Definition fc.c:671
void expand_IO_definitions(void)
Definition fc.c:844
void process_aliases(void)
Definition fc.c:1328
void default_control_variables(void)
Definition fc.c:184
void determine_simulation_rate(void)
Definition fc.c:1025
void mark_updates_if_constant(void)
Definition id.c:919
void mark_constants(void)
Definition id.c:1064
void line_parsing(void)
Definition lp.c:118
#define DEBUG_IT(f, c)
Definition main.c:142
void node_determination(void)
Definition nd.c:37
void check_directive_function(void)
Definition pr.c:3627
void print_ping_function(void)
Definition pr.c:4963
void declare_records(void)
Definition pr.c:2117
void open_main(void)
Definition pr.c:2410
void reset_arrays_function(void)
Definition pr.c:3074
void call_initialization_functions_B(void)
Definition pr.c:4850
void include_napa_header_files(void)
Definition pr.c:1883
void print_check_arrays(void)
Definition pr.c:4886
void include_ANSI_C_header_files(void)
Definition pr.c:588
void dump_function(void)
Definition pr.c:4324
void call_initialization_functions_A(void)
Definition pr.c:4722
void reset_records_function(void)
Definition pr.c:3430
void reset_nodes_function(void)
Definition pr.c:3678
void open_ping_file(void)
Definition pr.c:4739
void print_output_banner_0(void)
Definition pr.c:5042
void define_macros(void)
Definition pr.c:607
void declare_prototypes(void)
Definition pr.c:1698
void print_check_output(void)
Definition pr.c:4950
void command_line_usage_function(void)
Definition pr.c:2476
void napa_timer_function(void)
Definition pr.c:4622
void load_function(void)
Definition pr.c:4309
void call_ping_1(void)
Definition pr.c:4924
void build_usage_comment(void)
Definition pr.c:77
void declare_function_pointers(void)
Definition pr.c:1689
void print_C_code_banner_a(void)
Definition pr.c:158
void control_init_function(void)
Definition pr.c:2596
void declare_file_handles(void)
Definition pr.c:1914
void call_napa_initialization_function(void)
Definition pr.c:4705
void reset_variables_function(void)
Definition pr.c:2641
void that_s_all(void)
Definition pr.c:5506
void declare_global_values(void)
Definition pr.c:1261
void define_directives(void)
Definition pr.c:1764
void napa_exit_functions(void)
Definition pr.c:4638
void close_IO_files(void)
Definition pr.c:5394
void declare_arrays(void)
Definition pr.c:2063
void close_main(void)
Definition pr.c:5473
void call_ping_2(void)
Definition pr.c:4937
void declare_vars(void)
Definition pr.c:1947
void load_files(void)
Definition pr.c:4299
void print_C_code_banner_b(void)
Definition pr.c:424
void declare_nodes(void)
Definition pr.c:2137
void call_closedown_functions(void)
Definition pr.c:5334
void print_output_banner_function(void)
Definition pr.c:5250
void open_IO_files(void)
Definition pr.c:4772
void syntax_command_line(void)
Definition sx.c:45
void purge_constants_in_ganging(void)
Definition rd.c:1320
void stuck_nodes(void)
Definition rd.c:1689
void check_types(void)
Definition tp.c:28
void syntax_updates(void)
Definition sx.c:1462
void syntax_fs(void)
Definition sx.c:138
void name_mangling(void)
Definition rd.c:1050
void inject_nodes(void)
Definition rd.c:1002
void redefine_random_seed(void)
Definition rd.c:1038
void separe_qualifiers(void)
Definition rd.c:158
void syntax_directives(void)
Definition sx.c:113
void sort_nodes(void)
Definition sn.c:115
void build_cross_reference(void)
Definition xr.c:20
void syntax_variables(void)
Definition sx.c:1506
void purge_constants_in_options(void)
Definition rd.c:1389
void sort_records(void)
Definition sv.c:444
void redefine_node_segments(void)
Definition rd.c:58
void process_init(void)
Definition rd.c:1735
void sort_updates(void)
Definition sv.c:325
void sort_vars(void)
Definition sv.c:209
void build_var_dependencies(void)
Definition sv.c:40
void syntax_records(void)
Definition sx.c:1362
void build_record_dependencies(void)
Definition sv.c:159
void syntax_nodes(void)
Definition sx.c:159
void syntax_terminate(void)
Definition sx.c:1441
void create_nodes(void)
Definition rd.c:715
void random_functions(void)
Definition rg.c:148
void randomizer_functions(void)
Definition rg.c:120
void redefine_nodes(void)
Definition rd.c:350
void napa_IO_manager_function(void)
Definition rm.c:58
void build_node_dependencies(void)
Definition sn.c:40
void collect_functions(void)
Definition rd.c:1148
void syntax_segment_value(void)
Definition sx.c:1414
void napa_data_record_function(void)
Definition rm.c:509
void build_update_dependencies(void)
Definition sv.c:92

References build_cross_reference(), build_main_loop(), build_node_dependencies(), build_record_dependencies(), build_to_be_delayed_node_list(), build_update_dependencies(), build_usage_comment(), build_var_dependencies(), call_closedown_functions(), call_initialization_functions_A(), call_initialization_functions_B(), call_napa_initialization_function(), call_ping_1(), call_ping_2(), check_array_usage(), check_directive_function(), check_directive_usage(), check_option_function(), check_record_usage(), check_types(), close_IO_files(), close_main(), collect_export_definitions(), collect_functions(), collect_string_of_functions(), collect_string_of_options(), command_line_usage_function(), compact_segment(), complete_directives(), control_init_function(), create_nodes(), DEBUG_IT, declaration_type_A(), declaration_type_B(), declare_arrays(), declare_file_handles(), declare_function_pointers(), declare_global_values(), declare_nodes(), declare_prototypes(), declare_records(), declare_vars(), default_control_variables(), define_directives(), define_macros(), determine_output_segment_rate(), determine_segment_processing_rate(), determine_simulation_rate(), dump_function(), expand_dump_definitions(), expand_IO_definitions(), expand_records(), expand_string_variables(), expand_update_definitions(), include_ANSI_C_header_files(), include_napa_header_files(), inject_nodes(), line_parsing(), load_files(), load_function(), mark_constants(), mark_updates_if_constant(), name_mangling(), napa_data_record_function(), napa_exit_functions(), napa_IO_manager_function(), napa_timer_function(), node_determination(), open_IO_files(), open_main(), open_ping_file(), print_C_code_banner_a(), print_C_code_banner_b(), print_check_arrays(), print_check_output(), print_output_banner_0(), print_output_banner_function(), print_ping_function(), process_aliases(), process_command_line(), process_error_if_any(), process_init(), purge_constants_in_ganging(), purge_constants_in_options(), random_functions(), randomizer_functions(), redefine_node_segments(), redefine_nodes(), redefine_random_seed(), reset_arrays_function(), reset_nodes_function(), reset_records_function(), reset_variables_function(), separe_qualifiers(), sort_nodes(), sort_records(), sort_updates(), sort_vars(), stuck_nodes(), syntax_command_line(), syntax_directives(), syntax_fs(), syntax_nodes(), syntax_records(), syntax_segment_value(), syntax_terminate(), syntax_updates(), syntax_variables(), tag_executable(), and that_s_all().