summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/scanner.l23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/scanner.l b/src/scanner.l
index d1664a8..738ac32 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -1,4 +1,4 @@
-/* $Id: scanner.l,v 1.20 2003-06-20 17:02:13 rjkaes Exp $
+/* $Id: scanner.l,v 1.21 2003-06-26 18:16:09 rjkaes Exp $
*
* This builds the scanner for the tinyproxy configuration file. This
* file needs to stay in sync with grammar.y. If someone knows lex and yacc
@@ -81,17 +81,22 @@ static struct keyword keywords[] = {
#define MAX_REGEXP_LEN 1024
-unsigned int scanner_lineno = 1;
-
char tiny_buf[MAX_REGEXP_LEN];
char *tiny_str;
static int check_reserved_words(char *token);
static void append_string(int length, char *str);
static void append_char(char c);
+
+#ifdef NDEBUG
+/* Turn off debugging if this is a production build. */
+yy_flex_debug = 0;
+#endif
+
+
%}
-%option noyywrap
+%option noyywrap batch yylineno debug
white [ \t]
digit [0-9]
@@ -104,14 +109,15 @@ word [^ \#'"\(\)\{\}\\;\n\t,|\.]
%%
\#.*$ ;
-\n { ++scanner_lineno; return '\n'; }
-: { return ':'; }
+\n { return '\n'; }
+":" { return ':'; }
{white}+ ;
0x{digit}+ { yylval.num = strtol(yytext, NULL, 16); return NUMBER; }
0{digit}+ { yylval.num = strtol(yytext, NULL, 8); return NUMBER; }
{digit}+ { yylval.num = atoi(yytext); return NUMBER; }
-{alpha}+ { return check_reserved_words(yytext); }
-\" {
+{alpha}({alphanum}|[-._])+ { return check_reserved_words(yytext); }
+
+\" {
tiny_str = tiny_buf;
BEGIN(string);
}
@@ -131,7 +137,6 @@ word [^ \#'"\(\)\{\}\\;\n\t,|\.]
({digit}{1,3}\.){3}{digit}{1,3} { yylval.cptr = strdup(yytext); return NUMERIC_ADDRESS; }
({digit}{1,3}\.){3}{digit}{1,3}\/{digit}+ { yylval.cptr = strdup(yytext); return NETMASK_ADDRESS; }
-([-_a-z0-9]+\.)+[a-z]+ { yylval.cptr = strdup(yytext); return STRING_ADDRESS; }
%%