aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>1997-02-17 04:15:48 +0000
committerEric S. Raymond <esr@thyrsus.com>1997-02-17 04:15:48 +0000
commit1bf8bb4b2751ef3d4007221cbe0e9bc39de34117 (patch)
tree454b81fb5ed405fc4dfab262ea9495f37dc04f49
parent39a1e45b96f6dd43acf3692c12e9ed340a9431c1 (diff)
downloadfetchmail-1bf8bb4b2751ef3d4007221cbe0e9bc39de34117.tar.gz
fetchmail-1bf8bb4b2751ef3d4007221cbe0e9bc39de34117.tar.bz2
fetchmail-1bf8bb4b2751ef3d4007221cbe0e9bc39de34117.zip
Pull negation into the grammar, simplifying the lexer.
svn path=/trunk/; revision=892
-rw-r--r--rcfile_l.l26
-rw-r--r--rcfile_y.y26
2 files changed, 26 insertions, 26 deletions
diff --git a/rcfile_l.l b/rcfile_l.l
index a2fe2cbb..4b1d9603 100644
--- a/rcfile_l.l
+++ b/rcfile_l.l
@@ -17,8 +17,6 @@ int prc_lineno = 1;
%o 5000
%a 4000
-WS [ \t]*
-
%%
set { return SET; }
@@ -55,21 +53,15 @@ to { return TO; }
= { return MAP; }
"*" { return WILDCARD; }
-keep { yylval.flag = FLAG_TRUE; return KEEP; }
-flush { yylval.flag = FLAG_TRUE; return FLUSH; }
-fetchall { yylval.flag = FLAG_TRUE; return FETCHALL; }
-rewrite { yylval.flag = FLAG_TRUE; return REWRITE; }
-stripcr { yylval.flag = FLAG_TRUE; return STRIPCR; }
-dns { yylval.flag = FLAG_TRUE; return DNS; }
-received { yylval.flag = FLAG_TRUE; return RECEIVED; }
-
-no{WS}keep { yylval.flag = FLAG_FALSE; return KEEP; }
-no{WS}flush { yylval.flag = FLAG_FALSE; return FLUSH; }
-no{WS}fetchall { yylval.flag = FLAG_FALSE; return FETCHALL; }
-no{WS}rewrite { yylval.flag = FLAG_FALSE; return REWRITE; }
-no{WS}stripcr { yylval.flag = FLAG_FALSE; return REWRITE; }
-no{WS}dns { yylval.flag = FLAG_FALSE; return DNS; }
-no{WS}received { yylval.flag = FLAG_FALSE; return RECEIVED; }
+no/.* { return NO;}
+
+keep { return KEEP; }
+flush { return FLUSH; }
+fetchall { return FETCHALL; }
+rewrite { return REWRITE; }
+stripcr { return STRIPCR; }
+dns { return DNS; }
+received { return RECEIVED; }
limit { return LIMIT; }
diff --git a/rcfile_y.y b/rcfile_y.y
index 84c0d000..fdc295d5 100644
--- a/rcfile_y.y
+++ b/rcfile_y.y
@@ -36,7 +36,6 @@ static void user_reset();
%union {
int proto;
- int flag;
int number;
char *sval;
}
@@ -49,7 +48,7 @@ static void user_reset();
%token <proto> PROTO
%token <sval> STRING
%token <number> NUMBER
-%token <flag> KEEP FLUSH FETCHALL REWRITE STRIPCR DNS PORT RECEIVED
+%token NO KEEP FLUSH FETCHALL REWRITE STRIPCR DNS PORT RECEIVED
%%
@@ -123,8 +122,10 @@ serv_option : AKA alias_list
fprintf(stderr, "fetchmail: monitor option is only supported under Linux\n");
#endif /* linux */
}
- | DNS {current.server.dns = $1;}
- | RECEIVED {current.server.received = $1;}
+ | DNS {current.server.dns = FLAG_TRUE;}
+ | RECEIVED {current.server.received = FLAG_TRUE;}
+ | NO DNS {current.server.dns = FLAG_FALSE;}
+ | NO RECEIVED {current.server.received = FLAG_FALSE;}
;
/*
@@ -188,11 +189,18 @@ user_option : TO localnames HERE
| MDA STRING {current.mda = xstrdup($2);}
| PRECONNECT STRING {current.preconnect = xstrdup($2);}
- | KEEP {current.keep = $1;}
- | FLUSH {current.flush = $1;}
- | FETCHALL {current.fetchall = $1;}
- | REWRITE {current.rewrite = $1;}
- | STRIPCR {current.stripcr = $1;}
+ | KEEP {current.keep = FLAG_TRUE;}
+ | FLUSH {current.flush = FLAG_TRUE;}
+ | FETCHALL {current.fetchall = FLAG_TRUE;}
+ | REWRITE {current.rewrite = FLAG_TRUE;}
+ | STRIPCR {current.stripcr = FLAG_TRUE;}
+
+ | NO KEEP {current.keep = FLAG_FALSE;}
+ | NO FLUSH {current.flush = FLAG_FALSE;}
+ | NO FETCHALL {current.fetchall = FLAG_FALSE;}
+ | NO REWRITE {current.rewrite = FLAG_FALSE;}
+ | NO STRIPCR {current.stripcr = FLAG_FALSE;}
+
| LIMIT NUMBER {current.limit = $2;}
| FETCHLIMIT NUMBER {current.fetchlimit = $2;}
| BATCHLIMIT NUMBER {current.batchlimit = $2;}
/a> 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392