From 4107df1d1b7454a16e6f45ea55aae13b01c9f566 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 17 May 1999 20:06:19 +0000 Subject: Implemented two new symbol handling functions: o cf_define_symbol() -- it assigns a meaning to a symbol, bailing out if it already has one. o cf_find_symbol() -- finds symbol by name and creates it if not found. Also modified filter/config.Y to make use of the first function. --- filter/config.Y | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'filter') diff --git a/filter/config.Y b/filter/config.Y index 4fd1815..c7f2014 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -40,9 +40,7 @@ CF_GRAMMAR CF_ADDTO(conf, filter_def) filter_def: FILTER SYM filter_body { - if ($2->class != SYM_VOID) cf_error("Symbol already defined" ); - $2->class = SYM_FILTER; - $2->def = $3; + cf_define_symbol($2, SYM_FILTER, $3); $3->name = $2->name; printf( "We have new filter defined (%s)\n", $2->name ) } @@ -67,8 +65,7 @@ type: decls: /* EMPTY */ | type SYM ';' decls { - if ($2->class != SYM_VOID) cf_error("Symbol already defined, can not use as variable\n" ); - $2->class = SYM_VARIABLE | $1; + cf_define_symbol($2, SYM_VARIABLE | $1, NULL); printf( "New variable %s type %x\n", $2->name, $1 ); } ; @@ -104,9 +101,7 @@ CF_ADDTO(conf, function_def) function_def: FUNCTION SYM function_params function_body { extern struct f_inst *startup_func; - if ($2->class != SYM_VOID) cf_error("Symbol already defined" ); - $2->class = SYM_FUNCTION; - $2->def = $4; + cf_define_symbol($2, SYM_FUNCTION, $4); if (!strcasecmp($2->name, "startup")) startup_func = $4; printf("Hmm, we've got one function here - %s\n", $2->name); -- cgit v1.2.3