mirror of https://github.com/golang/go.git
parent
bf983477a2
commit
63985b489b
|
|
@ -55,7 +55,7 @@
|
||||||
%type <node> simple_stmt osimple_stmt range_stmt semi_stmt
|
%type <node> simple_stmt osimple_stmt range_stmt semi_stmt
|
||||||
%type <node> expr uexpr pexpr expr_list oexpr oexpr_list expr_list_r
|
%type <node> expr uexpr pexpr expr_list oexpr oexpr_list expr_list_r
|
||||||
%type <node> exprsym3_list_r exprsym3
|
%type <node> exprsym3_list_r exprsym3
|
||||||
%type <node> name onew_name new_name new_name_list_r new_field
|
%type <node> name labelname onew_name new_name new_name_list_r new_field
|
||||||
%type <node> vardcl_list_r vardcl Avardcl Bvardcl
|
%type <node> vardcl_list_r vardcl Avardcl Bvardcl
|
||||||
%type <node> interfacedcl_list_r interfacedcl interfacedcl1
|
%type <node> interfacedcl_list_r interfacedcl interfacedcl1
|
||||||
%type <node> structdcl_list_r structdcl embed
|
%type <node> structdcl_list_r structdcl embed
|
||||||
|
|
@ -95,6 +95,23 @@
|
||||||
%left '{'
|
%left '{'
|
||||||
%left Condition
|
%left Condition
|
||||||
|
|
||||||
|
/*
|
||||||
|
* resolve LPACKAGE vs not in favor of LPACKAGE
|
||||||
|
*/
|
||||||
|
%left NotPackage
|
||||||
|
%left LPACKAGE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* resolve '.' vs not in favor of '.'
|
||||||
|
*/
|
||||||
|
%left NotDot
|
||||||
|
%left '.'
|
||||||
|
|
||||||
|
/*
|
||||||
|
* resolve '(' vs not in favor of '('
|
||||||
|
*/
|
||||||
|
%left NotParen
|
||||||
|
%left '('
|
||||||
|
|
||||||
%%
|
%%
|
||||||
file:
|
file:
|
||||||
|
|
@ -107,6 +124,7 @@ file:
|
||||||
}
|
}
|
||||||
|
|
||||||
package:
|
package:
|
||||||
|
%prec NotPackage
|
||||||
{
|
{
|
||||||
yyerror("package statement must be first");
|
yyerror("package statement must be first");
|
||||||
mkpackage("main");
|
mkpackage("main");
|
||||||
|
|
@ -776,6 +794,8 @@ pexpr:
|
||||||
{
|
{
|
||||||
$$ = nod(OLITERAL, N, N);
|
$$ = nod(OLITERAL, N, N);
|
||||||
$$->val = $1;
|
$$->val = $1;
|
||||||
|
if($1.ctype == CTSTR)
|
||||||
|
$$->type = types[TSTRING];
|
||||||
}
|
}
|
||||||
| laconst
|
| laconst
|
||||||
{
|
{
|
||||||
|
|
@ -999,6 +1019,25 @@ name:
|
||||||
{
|
{
|
||||||
$$ = oldname($1);
|
$$ = oldname($1);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* this rule introduces 1 reduce/reduce conflict
|
||||||
|
* with the rule lpack: LPACK above.
|
||||||
|
* the reduce/reduce conflict is only with
|
||||||
|
* lookahead '.', in which case the correct
|
||||||
|
* resolution is the lpack rule. (and it wins
|
||||||
|
* because it is above.)
|
||||||
|
*/
|
||||||
|
| LPACK %prec NotDot
|
||||||
|
{
|
||||||
|
$$ = oldname($1);
|
||||||
|
}
|
||||||
|
|
||||||
|
labelname:
|
||||||
|
name
|
||||||
|
| keyword
|
||||||
|
{
|
||||||
|
$$ = oldname($1);
|
||||||
|
}
|
||||||
|
|
||||||
convtype:
|
convtype:
|
||||||
latype
|
latype
|
||||||
|
|
@ -1311,6 +1350,7 @@ Afnres:
|
||||||
}
|
}
|
||||||
|
|
||||||
Bfnres:
|
Bfnres:
|
||||||
|
%prec NotParen
|
||||||
{
|
{
|
||||||
$$ = N;
|
$$ = N;
|
||||||
}
|
}
|
||||||
|
|
@ -1515,7 +1555,7 @@ Astmt:
|
||||||
{
|
{
|
||||||
$$ = N;
|
$$ = N;
|
||||||
}
|
}
|
||||||
| new_name ':'
|
| labelname ':'
|
||||||
{
|
{
|
||||||
$$ = nod(OLABEL, $1, N);
|
$$ = nod(OLABEL, $1, N);
|
||||||
}
|
}
|
||||||
|
|
@ -1961,15 +2001,7 @@ lpack:
|
||||||
}
|
}
|
||||||
|
|
||||||
laconst:
|
laconst:
|
||||||
LPACK
|
LATYPE
|
||||||
{
|
|
||||||
// for LALR(1) reasons, using laconst works here
|
|
||||||
// but lname does not. even so, the messages make
|
|
||||||
// more sense saying "var" instead of "const".
|
|
||||||
yyerror("%s is package, not var", $1->name);
|
|
||||||
YYERROR;
|
|
||||||
}
|
|
||||||
| LATYPE
|
|
||||||
{
|
{
|
||||||
yyerror("%s is type, not var", $1->name);
|
yyerror("%s is type, not var", $1->name);
|
||||||
YYERROR;
|
YYERROR;
|
||||||
|
|
|
||||||
|
|
@ -1341,6 +1341,9 @@ mkpackage(char* pkg)
|
||||||
s->opackage = package;
|
s->opackage = package;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// declare this name as a package
|
||||||
|
lookup(package)->lexical = LPACK;
|
||||||
|
|
||||||
if(outfile == nil) {
|
if(outfile == nil) {
|
||||||
// BOTCH need to get .6 from backend
|
// BOTCH need to get .6 from backend
|
||||||
p = strrchr(infile, '/');
|
p = strrchr(infile, '/');
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,7 @@ errchk: ./convlit.go: unmatched error messages:
|
||||||
./convlit.go:11: overflow converting constant to int
|
./convlit.go:11: overflow converting constant to int
|
||||||
./convlit.go:12: overflow converting constant to float
|
./convlit.go:12: overflow converting constant to float
|
||||||
./convlit.go:8: cannot convert non-integer constant to int
|
./convlit.go:8: cannot convert non-integer constant to int
|
||||||
./convlit.go:9: cannot convert non-integer constant to int
|
./convlit.go:8: fatal error: too many errors
|
||||||
./convlit.go:11: overflow converting constant to int
|
|
||||||
./convlit.go:11: fatal error: too many errors
|
|
||||||
==================================================
|
==================================================
|
||||||
|
|
||||||
=========== ./helloworld.go
|
=========== ./helloworld.go
|
||||||
|
|
@ -117,10 +115,6 @@ abcxyz-abcxyz-abcxyz-abcxyz-abcxyz-abcxyz-abcxyz
|
||||||
=========== chan/nonblock.go
|
=========== chan/nonblock.go
|
||||||
PASS
|
PASS
|
||||||
|
|
||||||
=========== bugs/bug085.go
|
|
||||||
bugs/bug085.go:8: P: undefined
|
|
||||||
BUG: fails incorrectly
|
|
||||||
|
|
||||||
=========== bugs/bug087.go
|
=========== bugs/bug087.go
|
||||||
bugs/bug087.go:8: illegal combination of literals LEN 9
|
bugs/bug087.go:8: illegal combination of literals LEN 9
|
||||||
bugs/bug087.go:8: illegal combination of literals LEN 9
|
bugs/bug087.go:8: illegal combination of literals LEN 9
|
||||||
|
|
@ -146,10 +140,6 @@ BUG: compilation succeeds incorrectly
|
||||||
=========== bugs/bug125.go
|
=========== bugs/bug125.go
|
||||||
BUG: errchk: command succeeded unexpectedly: 6g bugs/bug125.go
|
BUG: errchk: command succeeded unexpectedly: 6g bugs/bug125.go
|
||||||
|
|
||||||
=========== bugs/bug129.go
|
|
||||||
bugs/bug129.go:6: syscall is package, not var
|
|
||||||
BUG129
|
|
||||||
|
|
||||||
=========== bugs/bug131.go
|
=========== bugs/bug131.go
|
||||||
BUG: should not compile
|
BUG: should not compile
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue