]> Cypherpunks repositories - gostls13.git/commitdiff
optional semi-colons
authorKen Thompson <ken@golang.org>
Wed, 18 Jun 2008 00:57:31 +0000 (17:57 -0700)
committerKen Thompson <ken@golang.org>
Wed, 18 Jun 2008 00:57:31 +0000 (17:57 -0700)
SVN=123245

src/cmd/gc/go.y

index 519e3a9a68610ed0dd26e47371b059e1aaa36bdd..c72900f808bc784f5e85c34d79934ede0637d311 100644 (file)
@@ -33,7 +33,7 @@
 %type  <node>          else_stmt1 else_stmt2
 %type  <node>          complex_stmt compound_stmt ostmt_list
 %type  <node>          stmt_list_r Astmt_list_r Bstmt_list_r
-%type  <node>          Astmt Bstmt Cstmt
+%type  <node>          Astmt Bstmt Cstmt Dstmt
 %type  <node>          for_stmt for_body for_header
 %type  <node>          if_stmt if_body if_header
 %type  <node>          range_header range_body range_stmt
@@ -314,10 +314,6 @@ complex_stmt:
                poptodcl();
                $$ = nod(OXCASE, N, N);
        }
-|      new_name ':'
-       {
-               $$ = nod(OLABEL, $1, N);
-       }
 
 semi_stmt:
        LFALL
@@ -1101,31 +1097,49 @@ Cstmt:
        simple_stmt
 
 /*
- * statement list that need semi in back  NO
+ * need semi in front YES
+ * need semi in back  NO
+ */
+Dstmt:
+       new_name ':'
+       {
+               $$ = nod(OLABEL, $1, N);
+       }
+
+/*
+ * statement list that ends AorD
  */
 Astmt_list_r:
        Astmt
+|      Dstmt
 |      Astmt_list_r Astmt
        {
                $$ = nod(OLIST, $1, $2);
        }
-|      Bstmt_list_r ';'
+|      Astmt_list_r Dstmt
+       {
+               $$ = nod(OLIST, $1, $2);
+       }
+|      Bstmt_list_r Astmt
+       {
+               $$ = nod(OLIST, $1, $2);
+       }
 
 /*
- * statement list that need semi in back  YES
+ * statement list that ends BorC
  */
 Bstmt_list_r:
        Bstmt
 |      Cstmt
-|      Bstmt_list_r Bstmt
+|      Astmt_list_r Bstmt
        {
                $$ = nod(OLIST, $1, $2);
        }
-|      Astmt_list_r Bstmt
+|      Astmt_list_r Cstmt
        {
                $$ = nod(OLIST, $1, $2);
        }
-|      Astmt_list_r Cstmt
+|      Bstmt_list_r Bstmt
        {
                $$ = nod(OLIST, $1, $2);
        }