]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
Allow newlines in sets and maps
authorPatrick McHardy <kaber@trash.net>
Wed, 18 Mar 2009 09:32:56 +0000 (10:32 +0100)
committerPatrick McHardy <kaber@trash.net>
Wed, 18 Mar 2009 09:32:56 +0000 (10:32 +0100)
Signed-off-by: Patrick McHardy <kaber@trash.net>
src/parser.y

index c3ade912d8d4bef36341c8307d0af2deffd23949..c527ce1fe4968ff329cb71fc1969f16a663c3d09 100644 (file)
@@ -359,8 +359,8 @@ static void location_update(struct location *loc, struct location *rhs, int n)
 %type <expr>                   verdict_map_expr verdict_map_list verdict_map_list_expr
 %destructor { expr_free($$); } verdict_map_expr verdict_map_list verdict_map_list_expr
 
-%type <expr>                   set_expr
-%destructor { expr_free($$); } set_expr
+%type <expr>                   set_expr set_list_expr set_list_member_expr
+%destructor { expr_free($$); } set_expr set_list_expr set_list_member_expr
 
 %type <expr>                   expr
 %destructor { expr_free($$); } expr
@@ -432,6 +432,10 @@ stmt_seperator             :       NEWLINE
                        |       SEMICOLON
                        ;
 
+opt_newline            :       NEWLINE
+                       |       /* empty */
+                       ;
+
 common_block           :       INCLUDE         QUOTED_STRING   stmt_seperator
                        {
                                if (scanner_include_file(scanner, $2, &@$) < 0) {
@@ -935,12 +939,14 @@ verdict_map_list  :       verdict_map_list_expr
                                $1->location = @$;
                                $$ = $1;
                        }
-                       |       verdict_map_list        COMMA
+                       |       verdict_map_list        COMMA   opt_newline
                        ;
 
-verdict_map_list_expr  :       map_lhs_expr    ARROW   verdict_expr
+verdict_map_list_expr  :       opt_newline     map_lhs_expr    opt_newline
+                                               ARROW           opt_newline
+                                               verdict_expr    opt_newline
                        {
-                               $$ = mapping_expr_alloc(&@$, $1, $3);
+                               $$ = mapping_expr_alloc(&@$, $2, $6);
                        }
                        ;
 
@@ -979,24 +985,36 @@ relational_op             :       EQ              { $$ = OP_EQ; }
                        |       LTE             { $$ = OP_LTE; }
                        ;
 
-membership_expr                :       expr    '{'     set_expr        '}'
+membership_expr                :       expr    set_expr
                        {
-                               $3->location = @$;
-                               $$ = relational_expr_alloc(&@$, OP_LOOKUP, $1, $3);
+                               $$ = relational_expr_alloc(&@$, OP_LOOKUP, $1, $2);
+                       }
+                       ;
+
+set_expr               :       '{'     set_list_expr           '}'
+                       {
+                               $2->location = @$;
+                               $$ = $2;
                        }
                        ;
 
-set_expr               :       expr
+set_list_expr          :       set_list_member_expr
                        {
                                $$ = set_expr_alloc(&@1);
                                compound_expr_add($$, $1);
                        }
-                       |       set_expr        COMMA   expr
+                       |       set_list_expr           COMMA   set_list_member_expr
                        {
                                compound_expr_add($1, $3);
                                $$ = $1;
                        }
-                       |       set_expr        COMMA
+                       |       set_list_expr           COMMA   opt_newline
+                       ;
+
+set_list_member_expr   :       opt_newline     expr    opt_newline
+                       {
+                               $$ = $2;
+                       }
                        ;
 
 verdict_expr           :       ACCEPT