ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/preprocess
(Generate patch)

Comparing deliantra/server/include/preprocess (file contents):
Revision 1.2 by root, Thu Aug 31 09:19:34 2006 UTC vs.
Revision 1.3 by root, Thu Aug 31 17:54:14 2006 UTC

1#!/opt/bin/perl 1#!/opt/bin/perl
2
3use List::Util;
2 4
3# todo: gather dynamically 5# todo: gather dynamically
4my @kw = qw( 6my @kw = qw(
5 ac 7 ac
6 activate_on_push 8 activate_on_push
251struct keyword_idx { const char *name; enum keyword index; }; 253struct keyword_idx { const char *name; enum keyword index; };
252%% 254%%
253EOF 255EOF
254 256
255for (@kw) { 257for (@kw) {
256 printf GPERF "%s,%s\n", $_, "KW_" . uc; 258 printf GPERF "%s,%s\n", $_, "KW_$_";
257} 259}
258 260
259print GPERF <<EOF; 261print GPERF <<EOF;
260%% 262%%
261const char *const keyword_str [] = { 263extern const char *const keyword_str [] = {
262 "<EOF>", 264 "<EOF>",
263 "<ERROR>", 265 "<ERROR>",
264EOF 266EOF
265 267
266for (@kw) { 268for (@kw) {
267 printf GPERF " \"%s\",\n", $_; 269 printf GPERF " \"%s\",\n", $_;
268} 270}
269 271
270print GPERF "};\n\n"; 272print GPERF "};\n";
273
274printf GPERF "\nextern const unsigned char keyword_len [] = { 5, 7, %s };\n\n",
275 join ", ", map length, @kw;
271 276
272open KW, ">", "keyword.h"; 277open KW, ">", "keyword.h";
273 278
274print KW <<EOF; 279print KW <<EOF;
275#ifndef KW_H__ 280#ifndef KW_H__
276#define KW_H__ 281#define KW_H__
277 282
278enum keyword { 283enum keyword {
279 KW_eof, KW_error, 284 KW_EOF, KW_ERROR,
280EOF 285EOF
281 286
282for (@kw) { 287for (@kw) {
283 printf KW " %s,\n", "KW_" . uc; 288 printf KW " %s,\n", "KW_$_",
284} 289}
285 290
286print KW <<EOF; 291print KW <<EOF;
287 NUM_KEYWORD, 292 NUM_KEYWORD,
288}; 293};
289 294
290extern const char *const keyword_str []; 295extern const char *const keyword_str [];
296extern const unsigned char keyword_len [];
297
298EOF
299
300printf KW "#define MAX_KEYWORD_LEN %d\n", List::Util::max map length, @kw;
301
302print KW <<EOF;
291 303
292#endif 304#endif
293 305
294EOF 306EOF
295 307

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines