16 tree root; /* The root of the built syntax tree. */
25 printf("Missing input file.\n");
29 if(freopen(argv[1], "r", stdin) == NULL) {
30 fprintf(stderr, "Cannot open %s.\n", argv[1]);
34 while(argv[1][i+1] != 0)
36 if(! (argv[1][i-3] == '.' &&
37 argv[1][i-2] == 'u' &&
38 argv[1][i-1] == 'g' &&
40 fprintf(stderr, "Not a .ugn file\n");
46 fc = fopen(argv[1], "w"); /* .c file */
48 fh = fopen(argv[1], "w"); /* .h file */
51 fhs = fopen(argv[1], "w"); /* .hs file */
56 /* No syntax errors. */
58 fprintf(fc, "#include \"%s\"\n", argv[1]);
63 /* There was a syntax error. */
64 /* ToDo: this stuff is now *WWRROONNGG* (WDP 94/10) */
68 fprintf(stderr, "Nothing generated.\n");
77 ge_typdef(t); /* Generate the .h - file. */
79 /* Generate the struct definitions. */
80 /*partain:moved gs_typlist(gtdeflist(t), gtid(t));
82 /* Generate constructors and selectors. */
83 g_consels(gtdeflist(t), gtid(t));
85 fprintf(fh, "#endif\n"); /* for .h multi-slurp protector */
87 /* Generate Haskell reader */
88 gen_hs_reader(gtid(t), gtdeflist(t));