]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
parser: Consolidate comment production
authorCarlos Falgueras García <carlosfg@riseup.net>
Mon, 30 May 2016 16:35:39 +0000 (18:35 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 30 May 2016 17:27:47 +0000 (19:27 +0200)
Use comment_spec both from rule and set element productions.

Signed-off-by: Carlos Falgueras García <carlosfg@riseup.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/parser_bison.y

index ef10dee26e1d044dc26d797bb1753f611feca3d7..6f51a49da4aa25f3b8b16ceae98fe969cdf0e6db 100644 (file)
@@ -440,7 +440,7 @@ static void location_update(struct location *loc, struct location *rhs, int n)
 %destructor { close_scope(state); table_free($$); }    table_block_alloc
 %type <chain>                  chain_block_alloc chain_block
 %destructor { close_scope(state); chain_free($$); }    chain_block_alloc
-%type <rule>                   rule
+%type <rule>                   rule rule_alloc
 %destructor { rule_free($$); } rule
 
 %type <val>                    set_flag_list   set_flag
@@ -1273,11 +1273,7 @@ ruleid_spec              :       chain_spec      handle_spec     position_spec
                        }
                        ;
 
-comment_spec           :       /* empty */
-                       {
-                               $$ = NULL;
-                       }
-                       |       COMMENT         string
+comment_spec           :       COMMENT         string
                        {
                                $$ = $2;
                        }
@@ -1295,12 +1291,21 @@ ruleset_spec            :       /* empty */
                        }
                        ;
 
-rule                   :       stmt_list       comment_spec
+rule                   :       rule_alloc
+                       {
+                               $$->comment = NULL;
+                       }
+                       |       rule_alloc      comment_spec
+                       {
+                               $$->comment = $2;
+                       }
+                       ;
+
+rule_alloc             :       stmt_list
                        {
                                struct stmt *i;
 
                                $$ = rule_alloc(&@$, NULL);
-                               $$->comment = $2;
                                list_for_each_entry(i, $1, list)
                                        $$->num_stmts++;
                                list_splice_tail($1, &$$->stmts);
@@ -2029,9 +2034,9 @@ set_elem_option           :       TIMEOUT                 time_spec
                        {
                                $<expr>0->timeout = $2 * 1000;
                        }
-                       |       COMMENT                 string
+                       |       comment_spec
                        {
-                               $<expr>0->comment = $2;
+                               $<expr>0->comment = $1;
                        }
                        ;