summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1999-01-15 18:04:28 +0000
committerMartin Mares <mj@ucw.cz>1999-01-15 18:04:28 +0000
commitc9b6670608577521c883db4bccd75b871568b7f7 (patch)
treec5ad6bd07b93413875be03c156e4cd7db5e98763
parent3169cf699175a2489712eee955a9ee9890ef00c9 (diff)
Original `expr' is back, filter expressions renamed to `term'.
In the future, we'll allow any filter term in place of `expr' and we'll just evaluate it immediately, but not now as we have no evaluation routines.
-rw-r--r--conf/confbase.Y22
-rw-r--r--filter/config.Y12
2 files changed, 17 insertions, 17 deletions
diff --git a/conf/confbase.Y b/conf/confbase.Y
index 116cc8b6..a5d68382 100644
--- a/conf/confbase.Y
+++ b/conf/confbase.Y
@@ -1,7 +1,7 @@
/*
* BIRD -- Configuration Parser Top
*
- * (c) 1998 Martin Mares <mj@ucw.cz>
+ * (c) 1998--1999 Martin Mares <mj@ucw.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
@@ -34,7 +34,7 @@ CF_DECLS
%token <s> SYM
%token <t> TEXT
-%type <i> cexpr bool pxlen
+%type <i> expr bool pxlen
%left '+' '-'
%left '*' '/' '%'
@@ -59,20 +59,20 @@ CF_ADDTO(conf, /* EMPTY */)
/* Constant expressions */
-cexpr:
+expr:
NUM
- | cexpr '+' cexpr { $$ = $1 + $3; }
- | cexpr '-' cexpr { $$ = $1 - $3; }
- | cexpr '*' cexpr { $$ = $1 * $3; }
- | cexpr '/' cexpr { if ($3) $$ = $1 / $3; else cf_error("Division by zero"); }
- | cexpr '%' cexpr { if ($3) $$ = $1 % $3; else cf_error("Division by zero"); }
- | '(' cexpr ')' { $$ = $2; }
+ | expr '+' expr { $$ = $1 + $3; }
+ | expr '-' expr { $$ = $1 - $3; }
+ | expr '*' expr { $$ = $1 * $3; }
+ | expr '/' expr { if ($3) $$ = $1 / $3; else cf_error("Division by zero"); }
+ | expr '%' expr { if ($3) $$ = $1 % $3; else cf_error("Division by zero"); }
+ | '(' expr ')' { $$ = $2; }
| SYM { if ($1->class != SYM_NUMBER) cf_error("Number expected"); else $$ = $1->aux; }
;
CF_ADDTO(conf, definition)
definition:
- DEFINE SYM '=' cexpr {
+ DEFINE SYM '=' expr {
if ($2->class != SYM_VOID) cf_error("Symbol already defined");
$2->class = SYM_NUMBER;
$2->aux = $4;
@@ -82,7 +82,7 @@ definition:
/* Switches */
bool:
- cexpr {$$ = !!$1; }
+ expr {$$ = !!$1; }
| ON { $$ = 1; }
| YES { $$ = 1; }
| OFF { $$ = 0; }
diff --git a/filter/config.Y b/filter/config.Y
index 265463d3..17f687a2 100644
--- a/filter/config.Y
+++ b/filter/config.Y
@@ -21,7 +21,7 @@ CF_DECLS
CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT)
-%type <x> expr
+%type <x> term
CF_GRAMMAR
@@ -38,7 +38,7 @@ program: /* EMPTY */
CF_ADDTO(conf, function)
function:
- FUNCTION SYM '(' ')' '{' expr '}' {
+ FUNCTION SYM '(' ')' '{' term '}' {
extern struct f_instruction *last_func;
if ($2->class != SYM_VOID) cf_error("Symbol already defined" );
$2->class = SYM_FUNCTION;
@@ -50,7 +50,7 @@ function:
CF_ADDTO(conf, filter)
filter:
- FILTER SYM '{' expr '}' {
+ FILTER SYM '{' term '}' {
if ($2->class != SYM_VOID) cf_error("Symbol already defined" );
$2->class = SYM_FILTER;
$2->aux = $4;
@@ -60,8 +60,8 @@ filter:
/* Programs */
-expr: /* EMPTY */ { $$ = NULL; }
- | expr ';' expr {
+term: /* EMPTY */ { $$ = NULL; }
+ | term ';' term {
$$ = cfg_alloc(sizeof(struct f_instruction));
printf( "We've got statement here\n" );
$$->code = ',';
@@ -74,7 +74,7 @@ expr: /* EMPTY */ { $$ = NULL; }
printf( "New variable\n" );
$$ = NULL;
}
- | SYM '=' cexpr {
+ | SYM '=' expr {
$$ = cfg_alloc(sizeof(struct f_instruction));
printf( "Ook, we'll set value\n" );
if ($1->class != SYM_VARIABLE_INT)