shithub: mc

Download patch

ref: fe70d97044e43edd472a36ebecec4269759b2fac
parent: a2c40f05af2001f5300b972402edc0ea22a2bb55
author: Ori Bernstein <[email protected]>
date: Wed Feb 19 06:34:28 EST 2014

Cleaner formatting for gram.y

    No weird single space curly indent.

--- a/parse/gram.y
+++ b/parse/gram.y
@@ -192,67 +192,67 @@
         | file Tendln toplev
         ;
 
-toplev
-        : decl
-            {size_t i;
-             for (i = 0; i < $1.nn; i++) {
-                lappend(&file->file.stmts, &file->file.nstmts, $1.nl[i]);
-                $1.nl[i]->decl.isglobl = 1;
-                putdcl(file->file.globls, $1.nl[i]);
-             }}
-        | use
-            {lappend(&file->file.uses, &file->file.nuses, $1);}
-        | package
-        | tydef
-            {puttype(file->file.globls, mkname($1.line, $1.name), $1.type);
-             installucons(file->file.globls, $1.type);}
-        | traitdef
-            {puttrait(file->file.globls, $1->name, $1);}
-        | implstmt
-            {lappend(&file->file.stmts, &file->file.nstmts, $1);}
+toplev  : package
+        | use {lappend(&file->file.uses, &file->file.nuses, $1);}
+        | traitdef {puttrait(file->file.globls, $1->name, $1);}
+        | implstmt {lappend(&file->file.stmts, &file->file.nstmts, $1);}
+        | tydef {
+                puttype(file->file.globls, mkname($1.line, $1.name), $1.type);
+                installucons(file->file.globls, $1.type);
+            }
+        | decl {
+                size_t i;
+                for (i = 0; i < $1.nn; i++) {
+                    lappend(&file->file.stmts, &file->file.nstmts, $1.nl[i]);
+                    $1.nl[i]->decl.isglobl = 1;
+                    putdcl(file->file.globls, $1.nl[i]);
+                }
+            }
         | /* empty */
         ;
 
-decl    : Tvar decllist
-            {$$ = $2;}
-        | Tconst decllist
-            {size_t i;
-             for (i = 0; i < $2.nn; i++)
-                $2.nl[i]->decl.isconst = 1;
-             $$ = $2;}
-        | Tgeneric decllist
-            {size_t i;
+decl    : Tvar decllist {$$ = $2;}
+        | Tconst decllist {
+                size_t i;
+                for (i = 0; i < $2.nn; i++)
+                    $2.nl[i]->decl.isconst = 1;
+                $$ = $2;
+            }
+        | Tgeneric decllist {
+                size_t i;
              for (i = 0; i < $2.nn; i++) {
                 $2.nl[i]->decl.isconst = 1;
                 $2.nl[i]->decl.isgeneric = 1;
              }
              $$ = $2;}
-        | Textern Tvar decllist
-            {size_t i;
-             for (i = 0; i < $3.nn; i++)
-                $3.nl[i]->decl.isextern = 1;
-             $$ = $3;}
-        | Textern Tconst decllist
-            {size_t i;
-             for (i = 0; i < $3.nn; i++) {
-                $3.nl[i]->decl.isconst = 1;
-                $3.nl[i]->decl.isextern = 1;
-             }
-             $$ = $3;}
+        | Textern Tvar decllist {
+                size_t i;
+                for (i = 0; i < $3.nn; i++)
+                    $3.nl[i]->decl.isextern = 1;
+                $$ = $3;
+            }
+        | Textern Tconst decllist {
+                size_t i;
+                for (i = 0; i < $3.nn; i++) {
+                    $3.nl[i]->decl.isconst = 1;
+                    $3.nl[i]->decl.isextern = 1;
+                }
+                $$ = $3;
+            }
         ;
 
-decllist: declbody
-            {$$.nl = NULL; $$.nn = 0;
-             lappend(&$$.nl, &$$.nn, $1);}
-        | declbody Tcomma decllist
-             {linsert(&$3.nl, &$3.nn, 0, $1);
-             $$=$3;}
+decllist: declbody {
+                $$.nl = NULL; $$.nn = 0;
+                lappend(&$$.nl, &$$.nn, $1);
+            }
+        | declbody Tcomma decllist {
+                linsert(&$3.nl, &$3.nn, 0, $1);
+                $$=$3;
+            }
         ;
 
-use     : Tuse Tident
-            {$$ = mkuse($1->line, $2->str, 0);}
-        | Tuse Tstrlit
-            {$$ = mkuse($1->line, $2->str, 1);}
+use     : Tuse Tident {$$ = mkuse($1->line, $2->str, 0);}
+        | Tuse Tstrlit {$$ = mkuse($1->line, $2->str, 1);}
         ;
 
 optident: Tident      {$$ = $1;}
@@ -259,13 +259,13 @@
         | /* empty */ {$$ = NULL;}
         ;
 
-package : Tpkg optident Tasn pkgbody Tendblk
-            {if (file->file.exports->name)
-                 fatal($1->line, "Package already declared\n");
-             if ($2) {
-                 updatens(file->file.exports, $2->str);
-                 updatens(file->file.globls, $2->str);
-             }
+package : Tpkg optident Tasn pkgbody Tendblk {
+                if (file->file.exports->name)
+                    fatal($1->line, "Package already declared\n");
+                if ($2) {
+                    updatens(file->file.exports, $2->str);
+                    updatens(file->file.globls, $2->str);
+                }
             }
         ;
 
@@ -273,16 +273,23 @@
         | pkgbody Tendln pkgitem
         ;
 
-pkgitem : decl
-            {size_t i;
-            for (i = 0; i < $1.nn; i++) {
-                putdcl(file->file.exports, $1.nl[i]);
-                if ($1.nl[i]->decl.init)
-                    lappend(&file->file.stmts, &file->file.nstmts, $1.nl[i]);
-            }}
-        | tydef {puttype(file->file.exports, mkname($1.line, $1.name), $1.type);
-             installucons(file->file.exports, $1.type);}
-        | traitdef
+pkgitem : decl {
+                size_t i;
+                for (i = 0; i < $1.nn; i++) {
+                    putdcl(file->file.exports, $1.nl[i]);
+                    if ($1.nl[i]->decl.init)
+                        lappend(&file->file.stmts, &file->file.nstmts, $1.nl[i]);
+                }
+            }
+        | tydef {
+                puttype(file->file.exports, mkname($1.line, $1.name), $1.type);
+                installucons(file->file.exports, $1.type);
+            }
+        | traitdef {
+            size_t i;
+            for (i = 0; i < $1->trait.nfuncs; i++)
+                 putdecl($file->file.exports, $1->trait.funcs[i]);
+            }
         | implstmt
         | visdef {die("Unimplemented visdef");}
         | /* empty */
@@ -292,78 +299,79 @@
         | Tprotect Tcolon
         ;
 
-declbody: declcore Tasn expr
-            {$$ = $1; $1->decl.init = $3;}
+declbody: declcore Tasn expr {$$ = $1; $1->decl.init = $3;}
         | declcore
         ;
 
-declcore: name
-            {$$ = mkdecl($1->line, $1, mktyvar($1->line));}
-        | name Tcolon type
-            {$$ = mkdecl($1->line, $1, $3);}
+declcore: name {$$ = mkdecl($1->line, $1, mktyvar($1->line));}
+        | name Tcolon type {$$ = mkdecl($1->line, $1, $3);}
         ;
 
-name    : Tident
-            {$$ = mkname($1->line, $1->str);}
-        | Tident Tdot name
-            {$$ = $3; setns($3, $1->str);}
+name    : Tident {$$ = mkname($1->line, $1->str);}
+        | Tident Tdot name {$$ = $3; setns($3, $1->str);}
         ;
 
-implstmt: Timpl name type 
-            {$$ = mkimplstmt($1->line, $2, $3, NULL, 0);}
-        | Timpl name type Tasn Tendln implbody Tendblk 
-            {$$ = mkimplstmt($1->line, $2, $3, $6.nl, $6.nn);}
+implstmt: Timpl name type {$$ = mkimplstmt($1->line, $2, $3, NULL, 0);}
+        | Timpl name type Tasn Tendln implbody Tendblk {
+                $$ = mkimplstmt($1->line, $2, $3, $6.nl, $6.nn);
+            }
         ;
 
 implbody
         : optendlns {$$.nl = NULL; $$.nn = 0;}
-        | implbody Tident Tasn exprln optendlns
-            {Node *d;
-             $$ = $1;
-             d = mkdecl($2->line, mkname($2->line, $2->str), mktyvar($2->line));
-             d->decl.init = $4;
-             lappend(&$$.nl, &$$.nn, d);}
+        | implbody Tident Tasn exprln optendlns {
+                Node *d;
+                $$ = $1;
+                d = mkdecl($2->line, mkname($2->line, $2->str), mktyvar($2->line));
+                d->decl.init = $4;
+                lappend(&$$.nl, &$$.nn, d);
+            }
         ;
 
-traitdef: Ttrait Tident generictype Tendln /* trait prototype */
-            {$$ = mktrait($1->line, mkname($2->line, $2->str), NULL, 0, NULL, 0, 1);}
-        | Ttrait Tident generictype Tasn traitbody Tendblk /* trait definition */
-            {$$ = mktrait($1->line, mkname($2->line, $2->str), NULL, 0, $5.nl, $5.nn, 0);}
+traitdef: Ttrait Tident generictype Tendln /* trait prototype */ {
+                $$ = mktrait($1->line, mkname($2->line, $2->str), NULL, 0, NULL, 0, 1);
+            }
+        | Ttrait Tident generictype Tasn traitbody Tendblk /* trait definition */ {
+                $$ = mktrait($1->line, mkname($2->line, $2->str), NULL, 0, $5.nl, $5.nn, 0);
+            }
         ;
 
 traitbody
         : optendlns {$$.nl = NULL; $$.nn = 0;}
-        | traitbody Tident Tcolon type optendlns
-            {$$ = $1;
-             lappend(&$$.nl, &$$.nn, mkdecl($2->line, mkname($2->line, $2->str), $4));}
+        | traitbody Tident Tcolon type optendlns {
+                $$ = $1;
+                lappend(&$$.nl, &$$.nn, mkdecl($2->line, mkname($2->line, $2->str), $4));
+            }
         ;
 
 
-tydef   : Ttype typeid Tasn type
-            {$$ = $2;
-             $$.type = mktyname($2.line, mkname($2.line, $2.name), $2.params, $2.nparams, $4);}
-        | Ttype typeid
-            {$$ = $2;}
+tydef   : Ttype typeid {$$ = $2;}
+        | Ttype typeid Tasn type {
+                $$ = $2;
+                $$.type = mktyname($2.line, mkname($2.line, $2.name), $2.params, $2.nparams, $4);
+            }
         ;
 
-typeid  : Tident
-            {$$.line = $1->line;
-             $$.name = $1->str;
-             $$.params = NULL;
-             $$.type = NULL;}
-        | Tident Toparen typarams Tcparen
-            {$$.line = $1->line;
-             $$.name = $1->str;
-             $$.params = $3.types;
-             $$.nparams = $3.ntypes;
-             $$.type = NULL;}
+typeid  : Tident {
+                $$.line = $1->line;
+                $$.name = $1->str;
+                $$.params = NULL;
+                $$.type = NULL;
+            }
+        | Tident Toparen typarams Tcparen {
+                $$.line = $1->line;
+                $$.name = $1->str;
+                $$.params = $3.types;
+                $$.nparams = $3.ntypes;
+                $$.type = NULL;
+            }
         ;
 
-typarams: generictype
-            {$$.types = NULL; $$.ntypes = 0;
-             lappend(&$$.types, &$$.ntypes, $1);}
-        | typarams Tcomma generictype
-            {lappend(&$$.types, &$$.ntypes, $3);}
+typarams: generictype {
+                $$.types = NULL; $$.ntypes = 0;
+                lappend(&$$.types, &$$.ntypes, $1);
+            }
+        | typarams Tcomma generictype {lappend(&$$.types, &$$.ntypes, $3);}
         ;
 
 type    : structdef
@@ -375,24 +383,25 @@
         ;
 
 generictype
-        : Ttyparam
-            {$$ = mktyparam($1->line, $1->str);}
-        | Ttyparam Twith name
-            {$$ = mktyparam($1->line, $1->str);
-             addtrait($$, $3->name.name);}
-        | Ttyparam Twith Toparen typaramlist Tcparen
-            {size_t i;
-             $$ = mktyparam($1->line, $1->str);
-             for (i = 0; i < $4.nn; i++)
-                addtrait($$, $4.nl[i]->name.name);}
+        : Ttyparam {$$ = mktyparam($1->line, $1->str);}
+        | Ttyparam Twith name {
+                $$ = mktyparam($1->line, $1->str);
+                addtrait($$, $3->name.name);
+            }
+        | Ttyparam Twith Toparen typaramlist Tcparen {
+                size_t i;
+                $$ = mktyparam($1->line, $1->str);
+                for (i = 0; i < $4.nn; i++)
+                    addtrait($$, $4.nl[i]->name.name);
+            }
         ;
 
 typaramlist
-        : name
-            {$$.nl = NULL; $$.nn = 0;
-             lappend(&$$.nl, &$$.nn, $1);}
-        | typaramlist Tcomma name
-            {lappend(&$$.nl, &$$.nn, $3);}
+        : name {
+                $$.nl = NULL; $$.nn = 0;
+                lappend(&$$.nl, &$$.nn, $1);
+            }
+        | typaramlist Tcomma name {lappend(&$$.nl, &$$.nn, $3);}
         ;
 
 compoundtype
@@ -414,16 +423,17 @@
             {$$ = mktyfunc($1.line, $1.nl, $1.nn, $3);}
         ;
 
-argdefs : declcore
-            {$$.line = $1->line;
-             $$.nl = NULL;
-             $$.nn = 0; lappend(&$$.nl, &$$.nn, $1);}
-        | argdefs Tcomma declcore
-            {lappend(&$$.nl, &$$.nn, $3);}
-        | /* empty */
-            {$$.line = line;
-             $$.nl = NULL;
-             $$.nn = 0;}
+argdefs : declcore {
+                $$.line = $1->line;
+                $$.nl = NULL;
+                $$.nn = 0; lappend(&$$.nl, &$$.nn, $1);
+            }
+        | argdefs Tcomma declcore {lappend(&$$.nl, &$$.nn, $3);}
+        | /* empty */ {
+                $$.line = line;
+                $$.nl = NULL;
+                $$.nn = 0;
+            }
         ;
 
 tupledef: Tosqbrac typelist Tcsqbrac
@@ -430,9 +440,10 @@
             {$$ = mktytuple($1->line, $2.types, $2.ntypes);}
         ;
 
-typelist: type
-            {$$.types = NULL; $$.ntypes = 0;
-             lappend(&$$.types, &$$.ntypes, $1);}
+typelist: type {
+                $$.types = NULL; $$.ntypes = 0;
+                lappend(&$$.types, &$$.ntypes, $1);
+            }
         | typelist Tcomma type
             {lappend(&$$.types, &$$.ntypes, $3);}
         ;
@@ -443,19 +454,23 @@
         ;
 
 structbody
-        : structent
-            {if ($1) {$$.nl = NULL; $$.nn = 0; lappend(&$$.nl, &$$.nn, $1);}}
-        | structbody structent
-            {if ($2) {lappend(&$$.nl, &$$.nn, $2);}}
+        : structent {
+                if ($1) {
+                    $$.nl = NULL;
+                    $$.nn = 0;
+                    lappend(&$$.nl, &$$.nn, $1);
+                }
+            }
+        | structbody structent {
+                if ($2)
+                    lappend(&$$.nl, &$$.nn, $2);
+            }
         ;
 
 structent
-        : declcore Tendln
-            {$$ = $1;}
-        | visdef Tendln
-            {$$ = NULL;}
-        | Tendln
-            {$$ = NULL;}
+        : declcore Tendln {$$ = $1;}
+        | visdef Tendln {$$ = NULL;}
+        | Tendln {$$ = NULL;}
         ;
 
 uniondef
@@ -464,33 +479,31 @@
         ;
 
 unionbody
-        : unionelt
-            {$$.ucl = NULL; $$.nucl = 0;
-             if ($1) {lappend(&$$.ucl, &$$.nucl, $1);}}
-        | unionbody unionelt
-            {if ($2) {lappend(&$$.ucl, &$$.nucl, $2);}}
+        : unionelt {
+                $$.ucl = NULL;
+                $$.nucl = 0;
+                if ($1)
+                    lappend(&$$.ucl, &$$.nucl, $1)
+             }
+        | unionbody unionelt {
+                if ($2)
+                    lappend(&$$.ucl, &$$.nucl, $2);
+            }
         ;
 
 unionelt /* nb: the ucon union type gets filled in when we have context */
-        : Ttick name type Tendln
-            {$$ = mkucon($2->line, $2, NULL, $3);}
-        | Ttick name Tendln
-            {$$ = mkucon($2->line, $2, NULL, NULL);}
-        | visdef Tendln
-            {$$ = NULL;}
-        | Tendln
-            {$$ = NULL;}
+        : Ttick name type Tendln {$$ = mkucon($2->line, $2, NULL, $3);}
+        | Ttick name Tendln {$$ = mkucon($2->line, $2, NULL, NULL);}
+        | visdef Tendln {$$ = NULL;}
+        | Tendln {$$ = NULL;}
         ;
 
-goto	: Tgoto Tident
-     		{$$ = mkexpr($1->line, Ojmp, mklbl($2->line, $2->str), NULL);}
+goto	: Tgoto Tident {$$ = mkexpr($1->line, Ojmp, mklbl($2->line, $2->str), NULL);}
      	;
 
-retexpr : Tret expr
-            {$$ = mkexpr($1->line, Oret, $2, NULL);}
+retexpr : Tret expr {$$ = mkexpr($1->line, Oret, $2, NULL);}
+        | Tret {$$ = mkexpr($1->line, Oret, NULL);}
         | expr
-        | Tret
-            {$$ = mkexpr($1->line, Oret, NULL);}
         ;
 
 optexpr : expr {$$ = $1;}
@@ -543,17 +556,16 @@
 
 cmpop   : Teq | Tgt | Tlt | Tge | Tle | Tne ;
 
-castexpr: castexpr Tcast Toparen type Tcparen
-            {$$ = mkexpr($1->line, Ocast, $1, NULL);
-             $$->expr.type = $4;}
+castexpr: castexpr Tcast Toparen type Tcparen {
+                $$ = mkexpr($1->line, Ocast, $1, NULL);
+                $$->expr.type = $4;
+            }
         | unionexpr 
         ;
 
 unionexpr
-        : Ttick name unionexpr
-            {$$ = mkexpr($1->line, Oucon, $2, $3, NULL);}
-        | Ttick name
-            {$$ = mkexpr($1->line, Oucon, $2, NULL);}
+        : Ttick name unionexpr {$$ = mkexpr($1->line, Oucon, $2, $3, NULL);}
+        | Ttick name {$$ = mkexpr($1->line, Oucon, $2, NULL);}
         | borexpr
         ;
 
@@ -650,10 +662,11 @@
 
 tuprest : /*empty */
             {$$.nl = NULL; $$.nn = 0;}
-        | expr
-            {$$.nl = NULL; $$.nn = 0; lappend(&$$.nl, &$$.nn, $1);}
-        | tuprest Tcomma expr
-            {lappend(&$$.nl, &$$.nn, $3);}
+        | expr {
+                $$.nl = NULL; $$.nn = 0;
+                lappend(&$$.nl, &$$.nn, $1);
+            }
+        | tuprest Tcomma expr {lappend(&$$.nl, &$$.nn, $3);}
         ;
 
 literal : funclit       {$$ = mkexpr($1->line, Olit, $1, NULL);}
@@ -669,10 +682,11 @@
         | Tchrlit       {$$ = mkchar($1->line, $1->chrval);}
         | Tfloatlit     {$$ = mkfloat($1->line, $1->fltval);}
         | Tboollit      {$$ = mkbool($1->line, !strcmp($1->str, "true"));}
-        | Tintlit
-		{$$ = mkint($1->line, $1->intval);
-		 if ($1->inttype)
-		 	$$->lit.type = mktype($1->line, $1->inttype);}
+        | Tintlit {
+                $$ = mkint($1->line, $1->intval);
+		if ($1->inttype)
+                    $$->lit.type = mktype($1->line, $1->inttype);
+            }
         ;
 
 funclit : Tobrace params Tendln blkbody Tcbrace
@@ -681,12 +695,13 @@
             {$$ = mkfunc($1->line, $2.nl, $2.nn, $4, $6);}
         ;
 
-params  : declcore
-            {$$.nl = NULL; $$.nn = 0; lappend(&$$.nl, &$$.nn, $1);}
-        | params Tcomma declcore
-            {lappend(&$$.nl, &$$.nn, $3);}
-        | /* empty */
-            {$$.nl = NULL; $$.nn = 0;}
+params  : declcore {
+                $$.nl = NULL;
+                $$.nn = 0;
+                lappend(&$$.nl, &$$.nn, $1);
+            }
+        | params Tcomma declcore {lappend(&$$.nl, &$$.nn, $3);}
+        | /* empty */ {$$.nl = NULL; $$.nn = 0;}
         ;
 
 seqlit  : Tosqbrac arrayelts Tcsqbrac
@@ -698,9 +713,11 @@
         ;
 
 arrayelts
-        : optendlns arrayelt
-            {$$.nl = NULL; $$.nn = 0;
-             lappend(&$$.nl, &$$.nn, mkidxinit($2->line, mkint($2->line, 0), $2));}
+        : optendlns arrayelt {
+                $$.nl = NULL;
+                $$.nn = 0;
+                lappend(&$$.nl, &$$.nn, mkidxinit($2->line, mkint($2->line, 0), $2));
+            }
         | arrayelts Tcomma optendlns arrayelt
              {lappend(&$$.nl, &$$.nn, mkidxinit($4->line, mkint($4->line, $$.nn), $4));}
         | arrayelts Tcomma optendlns
@@ -710,9 +727,11 @@
         ;
 
 structelts
-        : structelt
-            {$$.nl = NULL; $$.nn = 0;
-             lappend(&$$.nl, &$$.nn, $1);}
+        : structelt {
+                $$.nl = NULL;
+                $$.nn = 0;
+                lappend(&$$.nl, &$$.nn, $1);
+            }
         | structelts Tcomma structelt
              {lappend(&$$.nl, &$$.nn, $3);}
         ;
@@ -776,13 +795,16 @@
             {$$ = mkmatchstmt($1->line, $2, $5.nl, $5.nn);}
          ;
 
-matches : match
-            {$$.nl = NULL; $$.nn = 0;
-             if ($1)
-                 lappend(&$$.nl, &$$.nn, $1);}
-        | matches Tbor match
-            {if ($2)
-                 lappend(&$$.nl, &$$.nn, $3);}
+matches : match {
+                $$.nl = NULL;
+                $$.nn = 0;
+                if ($1)
+                    lappend(&$$.nl, &$$.nn, $1);
+            }
+        | matches Tbor match {
+                if ($2)
+                    lappend(&$$.nl, &$$.nn, $3);
+            }
         ;
 
 match   : expr Tcolon blkbody Tendln {$$ = mkmatch($1->line, $1, $3);}
@@ -791,27 +813,31 @@
 block   : blkbody Tendblk
         ;
 
-blkbody : decl 
-            {size_t i;
-             $$ = mkblock(line, mkstab());
-             for (i = 0; i < $1.nn; i++) {
-                putdcl($$->block.scope, $1.nl[i]);
-                lappend(&$$->block.stmts, &$$->block.nstmts, $1.nl[i]);
-            }};
-        | stmt
-            {$$ = mkblock(line, mkstab());
-             if ($1)
-                lappend(&$$->block.stmts, &$$->block.nstmts, $1);}
-        | blkbody Tendln stmt
-            {if ($3)
-                lappend(&$1->block.stmts, &$1->block.nstmts, $3);
-             $$ = $1;}
-        | blkbody Tendln decl
-            {size_t i;
-             for (i = 0; i < $3.nn; i++){
-                putdcl($$->block.scope, $3.nl[i]);
-                lappend(&$1->block.stmts, &$1->block.nstmts, $3.nl[i]);
-            }};
+blkbody : decl {
+                size_t i;
+                $$ = mkblock(line, mkstab());
+                for (i = 0; i < $1.nn; i++) {
+                    putdcl($$->block.scope, $1.nl[i]);
+                    lappend(&$$->block.stmts, &$$->block.nstmts, $1.nl[i]);
+                }
+            }
+        | stmt {
+                $$ = mkblock(line, mkstab());
+                if ($1)
+                    lappend(&$$->block.stmts, &$$->block.nstmts, $1);
+            }
+        | blkbody Tendln stmt {
+                if ($3)
+                    lappend(&$1->block.stmts, &$1->block.nstmts, $3);
+                $$ = $1;
+            }
+        | blkbody Tendln decl {
+                size_t i;
+                for (i = 0; i < $3.nn; i++){
+                    putdcl($$->block.scope, $3.nl[i]);
+                    lappend(&$1->block.stmts, &$1->block.nstmts, $3.nl[i]);
+                }
+            }
         ;
 
 label   : Tcolon Tident