From: Ken Thompson Date: Sun, 26 Oct 2008 21:04:09 +0000 (-0700) Subject: allow len := 0 X-Git-Tag: weekly.2009-11-06~2882 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e8278bcb297772d1e0551079618972a35bf8d24e;p=gostls13.git allow len := 0 R=r OCL=17869 CL=17869 --- diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index 7c2bd4ae0d..33161db718 100644 --- a/src/cmd/gc/go.y +++ b/src/cmd/gc/go.y @@ -42,7 +42,7 @@ * names like Bstmt, Bvardcl, etc. can't. */ -%type sym sym1 sym2 keyword laconst lname latype lpackatype +%type sym sym1 sym2 sym3 keyword laconst lname latype lpackatype %type xdcl xdcl_list_r oxdcl_list %type common_dcl Acommon_dcl Bcommon_dcl %type oarg_type_list arg_type_list_r arg_chunk arg_chunk_list_r arg_type_list @@ -55,6 +55,7 @@ %type range_header range_body range_stmt select_stmt %type simple_stmt osimple_stmt semi_stmt %type expr uexpr pexpr expr_list oexpr oexpr_list expr_list_r +%type exprsym3_list_r exprsym3 %type name onew_name new_name new_name_list_r %type vardcl_list_r vardcl Avardcl Bvardcl %type interfacedcl_list_r interfacedcl @@ -414,13 +415,16 @@ simple_stmt: $$ = nod(OASOP, $1, $3); $$->etype = $2; // rathole to pass opcode } -| expr_list '=' expr_list +| exprsym3_list_r '=' expr_list { - $$ = nod(OAS, $1, $3); + $$ = rev($1); + $$ = nod(OAS, $$, $3); } -| expr_list LCOLAS expr_list +| exprsym3_list_r LCOLAS expr_list { - $$ = nod(OAS, colas($1, $3), $3); + $$ = rev($1); + $$ = colas($$, $3); + $$ = nod(OAS, $$, $3); addtotop($$); } | LPRINT '(' oexpr_list ')' @@ -961,15 +965,11 @@ sym2: sym1 /* - * keywords that we can - * use as variable/type names + * keywords that can be variables + * but are not already legal expressions */ -keyword: - LNIL -| LTRUE -| LFALSE -| LIOTA -| LLEN +sym3: + LLEN | LCAP | LPANIC | LPANICN @@ -980,6 +980,17 @@ keyword: | LTYPEOF | LCONVERT +/* + * keywords that we can + * use as variable/type names + */ +keyword: + sym3 +| LNIL +| LTRUE +| LFALSE +| LIOTA + name: lname { @@ -1544,6 +1555,20 @@ new_name_list_r: $$ = nod(OLIST, $1, $3); } +exprsym3: + expr +| sym3 + { + $$ = newname($1); + } + +exprsym3_list_r: + exprsym3 +| exprsym3_list_r ',' exprsym3 + { + $$ = nod(OLIST, $1, $3); + } + export_list_r: export | export_list_r ocomma export @@ -1924,7 +1949,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 {