diff 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
line wrap: on
line diff
--- a/src/tokenizer.cpp	Sun Jul 10 14:19:00 2005 -0700
+++ b/src/tokenizer.cpp	Wed Jul 13 23:04:14 2005 -0700
@@ -71,11 +71,11 @@
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x28 (
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x29 )
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x2A *
-    { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x2B +
+    { s_single,   s_token,    s_string,   s_single,  s_eol,      },  // 0x2B +
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x2C ,
     { s_single,   s_token,    s_string,   s_single,  s_eol,      },  // 0x2D -
     { s_single,   s_token,    s_string,   s_single,  s_eol,      },  // 0x2E .
-    { s_slash,    s_term,     s_string,   s_slash,   s_eol,      },  // 0x2F /
+    { s_slash,    s_token,    s_string,   s_slash,   s_eol,      },  // 0x2F /
     { s_token,    s_token,    s_string,   s_token,   s_eol,      },  // 0x30 0
     { s_token,    s_token,    s_string,   s_token,   s_eol,      },  // 0x31 1
     { s_token,    s_token,    s_string,   s_token,   s_eol,      },  // 0x32 2
@@ -89,7 +89,7 @@
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x3A :
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x3B ;
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x3C <
-    { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x3D =
+    { s_single,   s_token,    s_string,   s_single,  s_eol,      },  // 0x3D =
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x3E >
     { s_single,   s_term,     s_string,   s_single,  s_eol,      },  // 0x3F ?
     { s_single,   s_token,    s_string,   s_single,  s_eol,      },  // 0x40 @
@@ -319,7 +319,7 @@
 
 bool TOKEN::next_char(u_char &uc) {
     if (pushed) {
-        uc = pushed_char;
+        uc = (u_char)tolower((char)pushed_char);
         pushed = false;
         return true;
     }
@@ -334,6 +334,7 @@
         int &line = linenumbers.front();
         line++;
     }
+    uc = (u_char)tolower((char)uc);
     return true;
 }
 
@@ -500,13 +501,22 @@
 }
 
 
-void TOKEN::token_error(const char *token, const char *have) {
+void TOKEN::token_error(const char *want, const char *have) {
     token_error();
-    token_error("expecting %s, found %s \n", token, have);
+    token_error("expecting %s, found %s \n", want, have);
 }
 
 
 void TOKEN::token_error() {
     token_error("syntax error at line %d in file %s -- ", cur_line(), cur_fn());
+    line_list::iterator   j = linenumbers.begin();
+    string_list::iterator i = filenames.begin();
+    for (; i!=filenames.end(); i++,j++) {
+        if (i != filenames.begin()) {
+            char *fn = (*i);
+            int   li = (*j);
+            token_error("\n    included from line %d in file %s -- ", li, fn);
+        }
+    }
 }