15 tree root; /* The root of the built syntax tree. */
24 printf("Missing input file.\n");
28 if(freopen(argv[1], "r", stdin) == NULL) {
29 fprintf(stderr, "Cannot open %s.\n", argv[1]);
33 while(argv[1][i+1] != 0)
35 if(! (argv[1][i-3] == '.' &&
36 argv[1][i-2] == 'u' &&
37 argv[1][i-1] == 'g' &&
39 fprintf(stderr, "Not a .ugn file\n");
45 fc = fopen(argv[1], "w"); /* .c file */
47 fh = fopen(argv[1], "w"); /* .h file */
50 fhs = fopen(argv[1], "w"); /* .hs file */
54 /* No syntax errors. */
56 fprintf(fc, "#include \"%s\"\n", argv[1]);
61 /* There was a syntax error. */
62 /* ToDo: this stuff is now *WWRROONNGG* (WDP 94/10) */
66 fprintf(stderr, "Nothing generated.\n");
75 ge_typdef(t); /* Generate the .h - file. */
77 /* Generate the struct definitions. */
78 /*partain:moved gs_typlist(gtdeflist(t), gtid(t));
80 /* Generate constructors and selectors. */
81 g_consels(gtdeflist(t), gtid(t));
83 fprintf(fh, "#endif\n"); /* for .h multi-slurp protector */
85 /* Generate Haskell reader */
86 gen_hs_reader(gtid(t), gtdeflist(t));