Mercurial > dnsbl
comparison src/tokenizer.cpp @ 75:1142e46be550
start coding on new config syntax
author | carl |
---|---|
date | Wed, 13 Jul 2005 23:04:14 -0700 |
parents | b7449114ebb0 |
children | 91c27c00048f |
comparison
equal
deleted
inserted
replaced
74:b7449114ebb0 | 75:1142e46be550 |
---|---|
69 { s_single, s_term, s_string, s_single, s_eol, }, // 0x26 & | 69 { s_single, s_term, s_string, s_single, s_eol, }, // 0x26 & |
70 { s_single, s_term, s_string, s_single, s_eol, }, // 0x27 ' | 70 { s_single, s_term, s_string, s_single, s_eol, }, // 0x27 ' |
71 { s_single, s_term, s_string, s_single, s_eol, }, // 0x28 ( | 71 { s_single, s_term, s_string, s_single, s_eol, }, // 0x28 ( |
72 { s_single, s_term, s_string, s_single, s_eol, }, // 0x29 ) | 72 { s_single, s_term, s_string, s_single, s_eol, }, // 0x29 ) |
73 { s_single, s_term, s_string, s_single, s_eol, }, // 0x2A * | 73 { s_single, s_term, s_string, s_single, s_eol, }, // 0x2A * |
74 { s_single, s_term, s_string, s_single, s_eol, }, // 0x2B + | 74 { s_single, s_token, s_string, s_single, s_eol, }, // 0x2B + |
75 { s_single, s_term, s_string, s_single, s_eol, }, // 0x2C , | 75 { s_single, s_term, s_string, s_single, s_eol, }, // 0x2C , |
76 { s_single, s_token, s_string, s_single, s_eol, }, // 0x2D - | 76 { s_single, s_token, s_string, s_single, s_eol, }, // 0x2D - |
77 { s_single, s_token, s_string, s_single, s_eol, }, // 0x2E . | 77 { s_single, s_token, s_string, s_single, s_eol, }, // 0x2E . |
78 { s_slash, s_term, s_string, s_slash, s_eol, }, // 0x2F / | 78 { s_slash, s_token, s_string, s_slash, s_eol, }, // 0x2F / |
79 { s_token, s_token, s_string, s_token, s_eol, }, // 0x30 0 | 79 { s_token, s_token, s_string, s_token, s_eol, }, // 0x30 0 |
80 { s_token, s_token, s_string, s_token, s_eol, }, // 0x31 1 | 80 { s_token, s_token, s_string, s_token, s_eol, }, // 0x31 1 |
81 { s_token, s_token, s_string, s_token, s_eol, }, // 0x32 2 | 81 { s_token, s_token, s_string, s_token, s_eol, }, // 0x32 2 |
82 { s_token, s_token, s_string, s_token, s_eol, }, // 0x33 3 | 82 { s_token, s_token, s_string, s_token, s_eol, }, // 0x33 3 |
83 { s_token, s_token, s_string, s_token, s_eol, }, // 0x34 4 | 83 { s_token, s_token, s_string, s_token, s_eol, }, // 0x34 4 |
87 { s_token, s_token, s_string, s_token, s_eol, }, // 0x38 8 | 87 { s_token, s_token, s_string, s_token, s_eol, }, // 0x38 8 |
88 { s_token, s_token, s_string, s_token, s_eol, }, // 0x39 9 | 88 { s_token, s_token, s_string, s_token, s_eol, }, // 0x39 9 |
89 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3A : | 89 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3A : |
90 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3B ; | 90 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3B ; |
91 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3C < | 91 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3C < |
92 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3D = | 92 { s_single, s_token, s_string, s_single, s_eol, }, // 0x3D = |
93 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3E > | 93 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3E > |
94 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3F ? | 94 { s_single, s_term, s_string, s_single, s_eol, }, // 0x3F ? |
95 { s_single, s_token, s_string, s_single, s_eol, }, // 0x40 @ | 95 { s_single, s_token, s_string, s_single, s_eol, }, // 0x40 @ |
96 { s_token, s_token, s_string, s_token, s_eol, }, // 0x41 A | 96 { s_token, s_token, s_string, s_token, s_eol, }, // 0x41 A |
97 { s_token, s_token, s_string, s_token, s_eol, }, // 0x42 B | 97 { s_token, s_token, s_string, s_token, s_eol, }, // 0x42 B |
317 } | 317 } |
318 | 318 |
319 | 319 |
320 bool TOKEN::next_char(u_char &uc) { | 320 bool TOKEN::next_char(u_char &uc) { |
321 if (pushed) { | 321 if (pushed) { |
322 uc = pushed_char; | 322 uc = (u_char)tolower((char)pushed_char); |
323 pushed = false; | 323 pushed = false; |
324 return true; | 324 return true; |
325 } | 325 } |
326 while (!streams.empty() && streams.front()->eof()) { | 326 while (!streams.empty() && streams.front()->eof()) { |
327 pop(); | 327 pop(); |
332 if (is->eof()) return next_char(uc); | 332 if (is->eof()) return next_char(uc); |
333 if (uc == (u_char)'\n') { | 333 if (uc == (u_char)'\n') { |
334 int &line = linenumbers.front(); | 334 int &line = linenumbers.front(); |
335 line++; | 335 line++; |
336 } | 336 } |
337 uc = (u_char)tolower((char)uc); | |
337 return true; | 338 return true; |
338 } | 339 } |
339 | 340 |
340 | 341 |
341 bool TOKEN::include(char *fn) { | 342 bool TOKEN::include(char *fn) { |
498 if (!h) h = "null"; | 499 if (!h) h = "null"; |
499 printf(fmt, t, h); | 500 printf(fmt, t, h); |
500 } | 501 } |
501 | 502 |
502 | 503 |
503 void TOKEN::token_error(const char *token, const char *have) { | 504 void TOKEN::token_error(const char *want, const char *have) { |
504 token_error(); | 505 token_error(); |
505 token_error("expecting %s, found %s \n", token, have); | 506 token_error("expecting %s, found %s \n", want, have); |
506 } | 507 } |
507 | 508 |
508 | 509 |
509 void TOKEN::token_error() { | 510 void TOKEN::token_error() { |
510 token_error("syntax error at line %d in file %s -- ", cur_line(), cur_fn()); | 511 token_error("syntax error at line %d in file %s -- ", cur_line(), cur_fn()); |
511 } | 512 line_list::iterator j = linenumbers.begin(); |
512 | 513 string_list::iterator i = filenames.begin(); |
514 for (; i!=filenames.end(); i++,j++) { | |
515 if (i != filenames.begin()) { | |
516 char *fn = (*i); | |
517 int li = (*j); | |
518 token_error("\n included from line %d in file %s -- ", li, fn); | |
519 } | |
520 } | |
521 } | |
522 |