]>
Commit | Line | Data |
---|---|---|
45df431b | 1 | # $Header$ |
2 | ||
f6fdc1a4 | 3 | BEGIN { numfields = 0; numforms = 0; |
45df431b | 4 | printf("/* This file is machine generated, do not edit. */"); |
5 | printf("\n#include <Xm/Text.h>\n"); | |
04077a7d | 6 | printf("#include \"mmoira.h\"\n\n"); |
45df431b | 7 | } |
8 | ||
9 | /^;/ { next } | |
10 | NF == 0 { next } | |
11 | NF == 1 && $1 == "or" { next } | |
12 | ||
f6fdc1a4 | 13 | $1 == "{" { formname = sprintf("form%d", numforms); |
04077a7d | 14 | formrealname = $2; |
f6fdc1a4 | 15 | numforms++; |
45df431b | 16 | instructions = $3; |
17 | for (i = 4; i <= NF; i++) | |
18 | instructions = sprintf("%s %s", instructions, $i); | |
19 | next | |
20 | } | |
21 | ||
22 | $1 == "}" { printf("static UserPrompt *%s_fields[] = {\n", formname); | |
23 | for (i = 0; i < numfields; i++) | |
24 | printf("\t&%s_fld%d,\n", formname, i); | |
25 | printf("\t(UserPrompt *)NULL\n};\n"); | |
f6fdc1a4 | 26 | printf("static EntryForm %s = {\n\t\"%s\",\n", \ |
04077a7d | 27 | formname, formrealname); |
45df431b | 28 | printf("\t\"%s\",\n\t%s_fields\n};\n", \ |
29 | instructions, formname); | |
30 | numfields = 0; | |
31 | next | |
32 | } | |
33 | ||
34 | $NF == "s" || $NF == "S" \ | |
35 | { printf("static UserPrompt %s_fld%d = { \"", \ | |
36 | formname, numfields); | |
37 | for (i = 1; i < NF; i++) printf("%s ", $i); | |
38 | printf("\", FT_STRING };\n"); | |
39 | numfields++; | |
40 | next | |
41 | } | |
42 | ||
43 | $NF == "b" || $NF == "B" \ | |
44 | { printf("static UserPrompt %s_fld%d = { \"", \ | |
45 | formname, numfields); | |
46 | for (i = 1; i < NF; i++) printf("%s ", $i); | |
47 | printf("\", FT_BOOLEAN };\n"); | |
48 | numfields++; | |
49 | next | |
50 | } | |
51 | ||
52 | $NF == "k" || $NF == "K" \ | |
53 | { printf("static UserPrompt %s_fld%d = { \"", \ | |
54 | formname, numfields); | |
55 | for (i = 1; i < NF; i++) printf("%s ", $i); | |
56 | printf("\", FT_KEYWORD };\n"); | |
57 | numfields++; | |
58 | next | |
59 | } | |
60 | ||
61 | { printf("forms syntax error on line %d of file %s:\n%s\n", \ | |
62 | NR, FILENAME, $0); | |
63 | exit 1 | |
64 | } | |
f6fdc1a4 | 65 | |
66 | END { | |
67 | printf("EntryForm *MoiraForms[] = {\n"); | |
68 | for (i = 0; i < numforms; i++) | |
69 | printf("\t&form%d,\n", i); | |
04077a7d | 70 | printf("\t(EntryForm *)NULL,\n};\n"); |
f6fdc1a4 | 71 | } |