]> Cypherpunks repositories - gostls13.git/commitdiff
setup for keywords in fieldnames
authorKen Thompson <ken@golang.org>
Sun, 23 Nov 2008 23:58:48 +0000 (15:58 -0800)
committerKen Thompson <ken@golang.org>
Sun, 23 Nov 2008 23:58:48 +0000 (15:58 -0800)
R=r
OCL=19883
CL=19883

src/cmd/gc/go.y

index fd02a328efbbc6b77b3b318e0bea8695557bc37c..0a7c7bc07d4ffd3bd08c2f8567c20272f45a00f1 100644 (file)
@@ -56,7 +56,7 @@
 %type  <node>          simple_stmt osimple_stmt semi_stmt
 %type  <node>          expr uexpr pexpr expr_list oexpr oexpr_list expr_list_r
 %type  <node>          exprsym3_list_r exprsym3
-%type  <node>          name onew_name new_name new_name_list_r
+%type  <node>          name onew_name new_name new_name_list_r new_field
 %type  <node>          vardcl_list_r vardcl Avardcl Bvardcl
 %type  <node>          interfacedcl_list_r interfacedcl
 %type  <node>          structdcl_list_r structdcl embed
@@ -958,6 +958,12 @@ new_name:
                $$ = newname($1);
        }
 
+new_field:
+       sym2
+       {
+               $$ = newname($1);
+       }
+
 new_type:
        sym1
        {
@@ -980,8 +986,16 @@ sym1:
        sym
 |      keyword
 
+/*
+ * keywords that can be field names
+ * pretty much any name can be allowed
+ * limited only by good taste
+ */
 sym2:
        sym1
+|      LTYPE
+|      LFUNC
+|      LVAR
 
 /*
  * keywords that can be variables
@@ -1402,12 +1416,12 @@ interfacedcl_list_r:
        }
 
 structdcl:
-       new_name ',' structdcl
+       new_field ',' structdcl
        {
                $$ = nod(ODCLFIELD, $1, N);
                $$ = nod(OLIST, $$, $3);
        }
-|      new_name type oliteral
+|      new_field type oliteral
        {
                $$ = nod(ODCLFIELD, $1, N);
                $$->type = $2;
@@ -2000,7 +2014,7 @@ hidden_importsym:
  * to check whether the rest of the grammar is free of
  * reduce/reduce conflicts, comment this section out by
  * removing the slash on the next line.
- */
+ *
 lpack:
        LATYPE
        {