comparison dmdscript_tango/textgen/textgen.d @ 0:55c2951c07be

initial, files origin, premoved tree
author saaadel
date Sun, 24 Jan 2010 12:34:47 +0200
parents
children 987135a700f2
comparison
equal deleted inserted replaced
-1:000000000000 0:55c2951c07be
1
2 /* Digital Mars DMDScript source code.
3 * Copyright (c) 2000-2002 by Chromium Communications
4 * D version Copyright (c) 2004-2005 by Digital Mars
5 * All Rights Reserved
6 * written by Walter Bright
7 * www.digitalmars.com
8 * Use at your own risk. There is no warranty, express or implied.
9 * License for redistribution is by the GNU General Public License in gpl.txt.
10 *
11 * A binary, non-exclusive license for commercial use can be
12 * purchased from www.digitalmars.com/dscript/buy.html.
13 *
14 * DMDScript is implemented in the D Programming Language,
15 * www.digitalmars.com/d/
16 *
17 * For a C++ implementation of DMDScript, including COM support,
18 * see www.digitalmars.com/dscript/cppscript.html.
19 */
20
21 // Program to generate string files in script data structures.
22 // Saves much tedious typing, and eliminates typo problems.
23 // Generates:
24 // text.d
25
26 import std.c.stdio;
27 import std.c.stdlib;
28 import std.stdio;
29
30
31 struct Msgtable
32 {
33 char[] name;
34 int value;
35 char[] ident;
36 }
37
38
39 Msgtable errtable[] =
40 [
41 { "DMDScript fatal runtime error: ", 0, "ERR_RUNTIME_PREFIX" },
42 { "No default value for COM object", 0, "ERR_COM_NO_DEFAULT_VALUE" },
43 { "%s does not have a [[Construct]] property", 0, "ERR_COM_NO_CONSTRUCT_PROPERTY" },
44 { "argument type mismatch for %s", 0, "ERR_DISP_E_TYPEMISMATCH" },
45 { "wrong number of arguments for %s", 0, "ERR_DISP_E_BADPARAMCOUNT" },
46 { "%s Invoke() fails with COM error %x", 0, "ERR_COM_FUNCTION_ERROR" },
47 { "Dcomobject: %s.%s fails with COM error %x", 0, "ERR_COM_OBJECT_ERROR" },
48 { "unrecognized switch '%s'", 0, "ERR_BAD_SWITCH" },
49 { "undefined label '%s' in function '%s'", 0, "ERR_UNDEFINED_LABEL" },
50 { "unterminated /* */ comment", 0, "ERR_BAD_C_COMMENT" },
51 { "<!-- comment does not end in newline", 0, "ERR_BAD_HTML_COMMENT" },
52 { "unsupported char '%s'", 0, "ERR_BAD_CHAR_C" },
53 { "unsupported char 0x%02x", 0, "ERR_BAD_CHAR_X" },
54 { "escape hex sequence requires 2 hex digits", 0, "ERR_BAD_HEX_SEQUENCE" },
55 { "undefined escape sequence \\\\%c", 0, "ERR_UNDEFINED_ESC_SEQUENCE" },
56 { "string is missing an end quote %s", 0, "ERR_STRING_NO_END_QUOTE" },
57 { "end of file before end of string", 0, "ERR_UNTERMINATED_STRING" },
58 { "\\\\u sequence must be followed by 4 hex characters", 0, "ERR_BAD_U_SEQUENCE" },
59 { "unrecognized numeric literal", 0, "ERR_UNRECOGNIZED_N_LITERAL" },
60 { "Identifier expected in FormalParameterList, not %s", 0, "ERR_FPL_EXPECTED_IDENTIFIER" },
61 { "comma expected in FormalParameterList, not %s", 0, "ERR_FPL_EXPECTED_COMMA" },
62 { "identifier expected", 0, "ERR_EXPECTED_IDENTIFIER" },
63 { "found '%s' when expecting '%s'", 0, "ERR_EXPECTED_GENERIC" },
64 { "identifier expected instead of '%s'", 0, "ERR_EXPECTED_IDENTIFIER_PARAM" },
65 { "identifier expected following '%s', not '%s'", 0, "ERR_EXPECTED_IDENTIFIER_2PARAM" },
66 { "EOF found before closing ']' of block statement", 0, "ERR_UNTERMINATED_BLOCK" },
67 { "only one variable can be declared for 'in', not %d", 0, "ERR_TOO_MANY_IN_VARS" },
68 { "';' or 'in' expected, not '%s'", 0, "ERR_IN_EXPECTED" },
69 { "label expected after goto, not '%s'", 0, "ERR_GOTO_LABEL_EXPECTED" },
70 { "catch or finally expected following try", 0, "ERR_TRY_CATCH_EXPECTED" },
71 { "found '%s' instead of statement", 0, "ERR_STATEMENT_EXPECTED" },
72 { "expression expected, not '%s'", 0, "ERR_EXPECTED_EXPRESSION" },
73 { "Object literal in initializer", 0, "ERR_OBJ_LITERAL_IN_INITIALIZER" },
74 { "label '%s' is already defined", 0, "ERR_LABEL_ALREADY_DEFINED" },
75 { "redundant case %s", 0, "ERR_SWITCH_REDUNDANT_CASE" },
76 { "case %s: is not in a switch statement", 0, "ERR_MISPLACED_SWITCH_CASE" },
77 { "redundant default in switch statement", 0, "ERR_SWITCH_REDUNDANT_DEFAULT" },
78 { "default is not in a switch statement", 0, "ERR_MISPLACED_SWITCH_DEFAULT" },
79 { "init statement must be expression or var", 0, "ERR_INIT_NOT_EXPRESSION" },
80 { "can only break from within loop or switch", 0, "ERR_MISPLACED_BREAK" },
81 { "continue is not in a loop", 0, "ERR_MISPLACED_CONTINUE" },
82 { "Statement label '%s' is undefined", 0, "ERR_UNDEFINED_STATEMENT_LABEL" },
83 { "cannot goto into with statement", 0, "ERR_GOTO_INTO_WITH" },
84 { "can only return from within function", 0, "ERR_MISPLACED_RETURN" },
85 { "no expression for throw", 0, "ERR_NO_THROW_EXPRESSION" },
86 { "%s.%s is undefined", 0, "ERR_UNDEFINED_OBJECT_SYMBOL" },
87 { "Number.prototype.%s() expects a Number not a %s", 0, "ERR_FUNCTION_WANTS_NUMBER" },
88 { "String.prototype.%s() expects a String not a %s", 0, "ERR_FUNCTION_WANTS_STRING" },
89 { "Date.prototype.%s() expects a Date not a %s", 0, "ERR_FUNCTION_WANTS_DATE" },
90 { "%s %s is undefined and has no Call method", 0, "ERR_UNDEFINED_NO_CALL2"},
91 { "%s %s.%s is undefined and has no Call method", 0, "ERR_UNDEFINED_NO_CALL3"},
92 { "Boolean.prototype.%s() expects a Boolean not a %s", 0, "ERR_FUNCTION_WANTS_BOOL" },
93 { "arg to Array(len) must be 0 .. 2**32-1, not %.16g", 0, "ERR_ARRAY_LEN_OUT_OF_BOUNDS" },
94 { "Number.prototype.%s() %s out of range", 0, "ERR_VALUE_OUT_OF_RANGE" },
95 { "TypeError in %s", 0, "ERR_TYPE_ERROR" },
96 { "Error compiling regular expression", 0, "ERR_REGEXP_COMPILE" },
97 { "%s not transferrable", 0, "ERR_NOT_TRANSFERRABLE" },
98 { "%s %s cannot convert to Object", 0, "ERR_CANNOT_CONVERT_TO_OBJECT2" },
99 { "%s %s.%s cannot convert to Object", 0, "ERR_CANNOT_CONVERT_TO_OBJECT3" },
100 { "cannot convert %s to Object", 0, "ERR_CANNOT_CONVERT_TO_OBJECT4" },
101 { "cannot assign to %s", 0, "ERR_CANNOT_ASSIGN_TO" },
102 { "cannot assign %s to %s", 0, "ERR_CANNOT_ASSIGN" },
103 { "cannot assign to %s.%s", 0, "ERR_CANNOT_ASSIGN_TO2" },
104 { "cannot assign to function", 0, "ERR_FUNCTION_NOT_LVALUE"},
105 { "RHS of %s must be an Object, not a %s", 0, "ERR_RHS_MUST_BE_OBJECT" },
106 { "can't Put('%s', %s) to a primitive %s", 0, "ERR_CANNOT_PUT_TO_PRIMITIVE" },
107 { "can't Put(%u, %s) to a primitive %s", 0, "ERR_CANNOT_PUT_INDEX_TO_PRIMITIVE" },
108 { "object cannot be converted to a primitive type", 0, "ERR_OBJECT_CANNOT_BE_PRIMITIVE" },
109 { "can't Get(%s) from primitive %s(%s)", 0, "ERR_CANNOT_GET_FROM_PRIMITIVE" },
110 { "can't Get(%d) from primitive %s(%s)", 0, "ERR_CANNOT_GET_INDEX_FROM_PRIMITIVE" },
111 { "primitive %s has no Construct method", 0, "ERR_PRIMITIVE_NO_CONSTRUCT" },
112 { "primitive %s has no Call method", 0, "ERR_PRIMITIVE_NO_CALL" },
113 { "for-in must be on an object, not a primitive", 0, "ERR_FOR_IN_MUST_BE_OBJECT" },
114 { "assert() line %d", 0, "ERR_ASSERT"},
115 { "object does not have a [[Call]] property", 0, "ERR_OBJECT_NO_CALL"},
116 { "%s: %s", 0, "ERR_S_S"},
117 { "no Default Put for object", 0, "ERR_NO_DEFAULT_PUT"},
118 { "%s does not have a [[Construct]] property", 0, "ERR_S_NO_CONSTRUCT"},
119 { "%s does not have a [[Call]] property", 0, "ERR_S_NO_CALL"},
120 { "%s does not have a [[HasInstance]] property", 0, "ERR_S_NO_INSTANCE"},
121 { "length property must be an integer", 0, "ERR_LENGTH_INT"},
122 { "Array.prototype.toLocaleString() not transferrable", 0, "ERR_TLS_NOT_TRANSFERRABLE"},
123 { "Function.prototype.toString() not transferrable", 0, "ERR_TS_NOT_TRANSFERRABLE"},
124 { "Function.prototype.apply(): argArray must be array or arguments object", 0, "ERR_ARRAY_ARGS"},
125 { ".prototype must be an Object, not a %s", 0, "ERR_MUST_BE_OBJECT"},
126 { "VBArray expected, not a %s", 0, "ERR_VBARRAY_EXPECTED"},
127 { "VBArray subscript out of range", 0, "ERR_VBARRAY_SUBSCRIPT"},
128 { "Type mismatch", 0, "ERR_ACTIVEX"},
129 { "no property %s", 0, "ERR_NO_PROPERTY"},
130 { "Put of %s failed", 0, "ERR_PUT_FAILED"},
131 { "Get of %s failed", 0, "ERR_GET_FAILED"},
132 { "argument not a collection", 0, "ERR_NOT_COLLECTION"},
133 { "%s.%s expects a valid UTF codepoint not \\\\u%x", 0, "ERR_NOT_VALID_UTF"},
134
135 // COM error messages
136 { "Unexpected", 0, "ERR_E_UNEXPECTED"},
137 ];
138
139 int main()
140 {
141 FILE* fp;
142 uint i;
143
144 fp = fopen("errmsgs.d","w");
145 if (!fp)
146 {
147 printf("can't open errmsgs.d\n");
148 exit(EXIT_FAILURE);
149 }
150
151 fprintf(fp, "// File generated by textgen.d\n");
152 fprintf(fp, "//\n");
153
154 fprintf(fp, "// *** ERROR MESSAGES ***\n");
155 fprintf(fp, "//\n");
156 fprintf(fp, "module dmdscript.errmsgs;\n");
157 fprintf(fp, "enum {\n");
158 for (i = 0; i < errtable.length; i++)
159 { char[] id = errtable[i].ident;
160
161 if (!id)
162 id = errtable[i].name;
163 fwritefln(fp,"\t%s = %d,", id, i);
164 }
165 fprintf(fp, "};\n");
166
167 fprintf(fp, "// *** ERROR MESSAGES ***\n");
168 fprintf(fp, "//\n");
169 fprintf(fp, "char[][] errmsgtbl = [\n");
170 for (i = 0; i < errtable.length; i++)
171 { char[] id = errtable[i].ident;
172 char[] p = errtable[i].name;
173
174 fwritefln(fp,"\t\"%s\",", p);
175 }
176 fprintf(fp, "];\n");
177
178 fclose(fp);
179
180 return EXIT_SUCCESS;
181 }