From 4733b49ed6ec11669061e15680417961d13c7a61 Mon Sep 17 00:00:00 2001 From: Ondrej Filip Date: Tue, 3 Aug 2010 15:14:26 +0200 Subject: Syntax of sets improved. --- filter/config.Y | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'filter/config.Y') diff --git a/filter/config.Y b/filter/config.Y index 0b507ff..698f920 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -45,7 +45,7 @@ CF_KEYWORDS(FUNCTION, PRINT, PRINTN, UNSET, RETURN, %type term block cmds cmds_int cmd function_body constant print_one print_list var_list var_listn dynamic_attr static_attr function_call symbol dpair bgp_path_expr %type filter filter_body where_filter -%type type break_command cpair +%type type break_command %type set_item set_items switch_body %type fprefix_set %type set_atom fprefix fprefix_s fipa @@ -220,13 +220,6 @@ block: } ; -/* - * Simple types, their bison value is int - */ -cpair: - '(' NUM ',' NUM ')' { $$ = make_pair($2, $4); } - ; - /* * Complex types, their bison value is struct f_val */ @@ -237,13 +230,30 @@ fipa: set_atom: NUM { $$.type = T_INT; $$.val.i = $1; } | RTRID { $$.type = T_QUAD; $$.val.i = $1; } - | cpair { $$.type = T_PAIR; $$.val.i = $1; } | fipa { $$ = $1; } | ENUM { $$.type = $1 >> 16; $$.val.i = $1 & 0xffff; } ; set_item: - '(' NUM ',' '*' ')' { + '(' expr ',' expr ')' { + $$ = f_new_tree(); + $$->from.type = $$->to.type = T_PAIR; + $$->from.val.i = make_pair($2, $4); + $$->to.val.i = make_pair($2, $4); + } + | '(' expr ',' expr '.' '.' expr ')' { + $$ = f_new_tree(); + $$->from.type = $$->to.type = T_PAIR; + $$->from.val.i = make_pair($2, $4); + $$->to.val.i = make_pair($2, $7); + } + | '(' expr ',' expr ')' '.' '.' '(' expr ',' expr ')' { + $$ = f_new_tree(); + $$->from.type = $$->to.type = T_PAIR; + $$->from.val.i = make_pair($2, $4); + $$->to.val.i = make_pair($9, $11); + } + | '(' expr ',' '*' ')' { $$ = f_new_tree(); $$->from.type = $$->to.type = T_PAIR; $$->from.val.i = make_pair($2, 0); -- cgit v1.2.3