summaryrefslogtreecommitdiffstats
path: root/filter
diff options
context:
space:
mode:
authorPavel Machek <pavel@ucw.cz>1999-11-04 15:03:45 +0100
committerPavel Machek <pavel@ucw.cz>1999-11-04 15:03:45 +0100
commitae3e1af2a86c428f473ef0270151cead16cc0e8e (patch)
treefea76813c0fcc924e3a7d7c72a903d712a187d89 /filter
parentf30b25f9625d5542ace217bb6b3610d0a09f228a (diff)
downloadbird-ae3e1af2a86c428f473ef0270151cead16cc0e8e.tar
bird-ae3e1af2a86c428f473ef0270151cead16cc0e8e.zip
Add possibility of local variables.
Diffstat (limited to 'filter')
-rw-r--r--filter/config.Y22
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();
}
;