diff options
author | Pavel Machek <pavel@ucw.cz> | 1999-11-04 15:03:45 +0100 |
---|---|---|
committer | Pavel Machek <pavel@ucw.cz> | 1999-11-04 15:03:45 +0100 |
commit | ae3e1af2a86c428f473ef0270151cead16cc0e8e (patch) | |
tree | fea76813c0fcc924e3a7d7c72a903d712a187d89 /filter | |
parent | f30b25f9625d5542ace217bb6b3610d0a09f228a (diff) | |
download | bird-ae3e1af2a86c428f473ef0270151cead16cc0e8e.tar bird-ae3e1af2a86c428f473ef0270151cead16cc0e8e.zip |
Add possibility of local variables.
Diffstat (limited to 'filter')
-rw-r--r-- | filter/config.Y | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/filter/config.Y b/filter/config.Y index a0881ae..c72f3e0 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -9,8 +9,6 @@ FIXME: create ip.mask(x) function FIXME: whole system of paths, path ~ string, path.prepend(), path.originate FIXME: create community lists - FIXME: access to dynamic attributes - FIXME: local namespace for functions FIXME: enumerational types FIXME: defined() keyword */ @@ -49,10 +47,11 @@ CF_GRAMMAR CF_ADDTO(conf, filter_def) filter_def: - FILTER SYM filter_body { - cf_define_symbol($2, SYM_FILTER, $3); - $3->name = $2->name; - printf( "We have new filter defined (%s)\n", $2->name ) + FILTER SYM { cf_push_scope( $2->name ); } filter_body { + cf_define_symbol($2, SYM_FILTER, $4); + $4->name = $2->name; + printf( "We have new filter defined (%s)\n", $2->name ); + cf_pop_scope(); } ; @@ -136,14 +135,15 @@ function_body: CF_ADDTO(conf, function_def) function_def: - FUNCTION SYM function_params function_body { + FUNCTION SYM { printf( "Begining of function %s\n", $2->name ); cf_push_scope($2->name); } function_params function_body { extern struct f_inst *startup_func; - cf_define_symbol($2, SYM_FUNCTION, $4); + cf_define_symbol($2, SYM_FUNCTION, $5); if (!strcasecmp($2->name, "startup")) - startup_func = $4; - $2->aux = $3; - $2->aux2 = $4; + startup_func = $5; + $2->aux = $4; + $2->aux2 = $5; printf("Hmm, we've got one function here - %s\n", $2->name); + cf_pop_scope(); } ; |