0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-11-09 20:58:44 +00:00

Filter: Simplify handling of command sequences

Command sequences in curly braces used a separate nonterminal in grammar.
Handle them as a regular command.
This commit is contained in:
Ondrej Zajicek (work) 2022-03-09 00:31:39 +01:00
parent 537baf3e1c
commit d07893fb9b

View File

@ -296,7 +296,7 @@ CF_KEYWORDS(FUNCTION, PRINT, PRINTN, UNSET, RETURN,
%nonassoc ELSE %nonassoc ELSE
%type <xp> cmds_int cmd_prep %type <xp> cmds_int cmd_prep
%type <x> term block cmd cmds constant constructor print_list var_list function_call symbol_value bgp_path_expr bgp_path bgp_path_tail %type <x> term cmd cmds constant constructor print_list var_list function_call symbol_value bgp_path_expr bgp_path bgp_path_tail
%type <fda> dynamic_attr %type <fda> dynamic_attr
%type <fsa> static_attr %type <fsa> static_attr
%type <f> filter where_filter %type <f> filter where_filter
@ -514,15 +514,6 @@ cmds_int: cmd_prep
} }
; ;
block:
cmd {
$$=$1;
}
| '{' cmds '}' {
$$=$2;
}
;
/* /*
* Complex types, their bison value is struct f_val * Complex types, their bison value is struct f_val
*/ */
@ -864,10 +855,13 @@ print_list: /* EMPTY */ { $$ = NULL; }
; ;
cmd: cmd:
IF term THEN block { '{' cmds '}' {
$$ = $2;
}
| IF term THEN cmd {
$$ = f_new_inst(FI_CONDITION, $2, $4, NULL); $$ = f_new_inst(FI_CONDITION, $2, $4, NULL);
} }
| IF term THEN block ELSE block { | IF term THEN cmd ELSE cmd {
$$ = f_new_inst(FI_CONDITION, $2, $4, $6); $$ = f_new_inst(FI_CONDITION, $2, $4, $6);
} }
| CF_SYM_KNOWN '=' term ';' { | CF_SYM_KNOWN '=' term ';' {