}
%token <val> LLITERAL
%token <lint> LASOP
-%token <sym> LNAME LBASETYPE LATYPE LPACK LACONST
+%token <sym> LNAME LATYPE LPACK
%token <sym> LPACKAGE LIMPORT LDEFER LCLOSE LCLOSED
%token <sym> LMAP LCHAN LINTERFACE LFUNC LSTRUCT
%token <sym> LCOLAS LFALL LRETURN LDDD
* names like Bstmt, Bvardcl, etc. can't.
*/
-%type <sym> sym sym1 sym2 sym3 keyword laconst lname latype lpackatype
+%type <sym> sym sym1 sym2 sym3 keyword lname latype lpackatype
%type <node> xdcl xdcl_list_r oxdcl_list
%type <node> common_dcl Acommon_dcl Bcommon_dcl
%type <node> oarg_type_list arg_type_list_r arg_chunk arg_chunk_list_r arg_type_list
{
$$ = nodbool(0);
}
-| laconst
- {
- $$ = nod(OLITERAL, N, N);
- $$->sym = $1;
- $$->val = $1->oconst->val;
- $$->type = $1->oconst->type;
- }
| LIOTA
{
$$ = nodintconst(iota);
}
*/
-laconst:
- LACONST
-| lpack '.' LACONST
- {
- $$ = $3;
- context = nil;
- }
-
lname:
LNAME
| lpack '.' LNAME
sym:
LATYPE
| LNAME
-| LACONST
| LPACK
sym1:
| LPRINTN
| LNEW
| LMAKE
-| LBASETYPE
/*
* keywords that we can
YYERROR;
}
-laconst:
- LATYPE
- {
- yyerror("%s is type, not var", $1->name);
- YYERROR;
- }
-
latype:
- LACONST
- {
- yyerror("%s is const, not type", $1->name);
- YYERROR;
- }
-| LPACK
+ LPACK
{
yyerror("%s is package, not type", $1->name);
YYERROR;
fatal("betypeinit failed");
lexinit();
- typeinit(LBASETYPE);
+ typeinit(LATYPE);
lineno = 1;
block = 1;
DBG("lex: %S %s\n", s, lexname(s->lexical));
yylval.sym = s;
- if(s->lexical == LBASETYPE)
- return LATYPE;
return s->lexical;
tnum:
/* name lexical etype
*/
/* basic types */
- "int8", LBASETYPE, TINT8,
- "int16", LBASETYPE, TINT16,
- "int32", LBASETYPE, TINT32,
- "int64", LBASETYPE, TINT64,
+ "int8", LATYPE, TINT8,
+ "int16", LATYPE, TINT16,
+ "int32", LATYPE, TINT32,
+ "int64", LATYPE, TINT64,
- "uint8", LBASETYPE, TUINT8,
- "uint16", LBASETYPE, TUINT16,
- "uint32", LBASETYPE, TUINT32,
- "uint64", LBASETYPE, TUINT64,
+ "uint8", LATYPE, TUINT8,
+ "uint16", LATYPE, TUINT16,
+ "uint32", LATYPE, TUINT32,
+ "uint64", LATYPE, TUINT64,
- "float32", LBASETYPE, TFLOAT32,
- "float64", LBASETYPE, TFLOAT64,
- "float80", LBASETYPE, TFLOAT80,
+ "float32", LATYPE, TFLOAT32,
+ "float64", LATYPE, TFLOAT64,
+ "float80", LATYPE, TFLOAT80,
- "bool", LBASETYPE, TBOOL,
- "byte", LBASETYPE, TUINT8,
- "string", LBASETYPE, TSTRING,
+ "bool", LATYPE, TBOOL,
+ "byte", LATYPE, TUINT8,
+ "string", LATYPE, TSTRING,
- "any", LBASETYPE, TANY,
+ "any", LATYPE, TANY,
"break", LBREAK, Txxx,
"case", LCASE, Txxx,
s->lexical = lex;
s->package = package;
- if(lex != LBASETYPE)
+ etype = syms[i].etype;
+ if(etype == Txxx)
continue;
- etype = syms[i].etype;
if(etype < 0 || etype >= nelem(types))
fatal("lexinit: %s bad etype", s->name);
{
LANDAND, "ANDAND",
LASOP, "ASOP",
- LACONST, "ACONST",
- LATYPE, "ATYPE",
- LBASETYPE, "BASETYPE",
LBREAK, "BREAK",
LCASE, "CASE",
LCHAN, "CHAN",