Commit a8a9dbc9 authored by Ken Thompson's avatar Ken Thompson

print() and field names

R=r
DELTA=86  (61 added, 3 deleted, 22 changed)
OCL=14099
CL=14099
parent 40c93a52
...@@ -12,22 +12,23 @@ ...@@ -12,22 +12,23 @@
struct Val val; struct Val val;
int lint; int lint;
} }
%token <sym> LNAME LBASETYPE LATYPE LPACK LACONST
%token <val> LLITERAL %token <val> LLITERAL
%token <lint> LASOP %token <lint> LASOP
%token LPACKAGE LIMPORT LEXPORT %token <sym> LNAME LBASETYPE LATYPE LPACK LACONST
%token LMAP LCHAN LINTERFACE LFUNC LSTRUCT %token <sym> LPACKAGE LIMPORT LEXPORT
%token LCOLAS LFALL LRETURN %token <sym> LMAP LCHAN LINTERFACE LFUNC LSTRUCT
%token LNEW LLEN %token <sym> LCOLAS LFALL LRETURN
%token LVAR LTYPE LCONST LCONVERT LSELECT %token <sym> LNEW LLEN
%token LFOR LIF LELSE LSWITCH LCASE LDEFAULT %token <sym> LVAR LTYPE LCONST LCONVERT LSELECT
%token LBREAK LCONTINUE LGO LGOTO LRANGE %token <sym> LFOR LIF LELSE LSWITCH LCASE LDEFAULT
%token <sym> LBREAK LCONTINUE LGO LGOTO LRANGE
%token <sym> LNIL LTRUE LFALSE LIOTA
%token <sym> LPANIC LPRINT LIGNORE
%token LOROR LANDAND LEQ LNE LLE LLT LGE LGT %token LOROR LANDAND LEQ LNE LLE LLT LGE LGT
%token LLSH LRSH LINC LDEC LSEND LRECV %token LLSH LRSH LINC LDEC LSEND LRECV
%token LNIL LTRUE LFALSE LIOTA
%token LPANIC LPRINT LIGNORE
%type <sym> sym laconst lname latype %type <sym> sym sym1 sym2 key1 key2 laconst lname latype
%type <lint> chandir %type <lint> chandir
%type <node> xdcl xdcl_list_r oxdcl_list %type <node> xdcl xdcl_list_r oxdcl_list
%type <node> common_dcl Acommon_dcl Bcommon_dcl %type <node> common_dcl Acommon_dcl Bcommon_dcl
...@@ -410,13 +411,13 @@ semi_stmt: ...@@ -410,13 +411,13 @@ semi_stmt:
$$ = nod(OCALL, $2, $4); $$ = nod(OCALL, $2, $4);
$$ = nod(OPROC, $$, N); $$ = nod(OPROC, $$, N);
} }
| LPRINT expr_list | LPRINT '(' oexpr_list ')'
{ {
$$ = nod(OPRINT, $2, N); $$ = nod(OPRINT, $3, N);
} }
| LPANIC oexpr_list | LPANIC '(' oexpr_list ')'
{ {
$$ = nod(OPANIC, $2, N); $$ = nod(OPANIC, $3, N);
} }
| LGOTO new_name | LGOTO new_name
{ {
...@@ -707,7 +708,7 @@ pexpr: ...@@ -707,7 +708,7 @@ pexpr:
{ {
$$ = $2; $$ = $2;
} }
| pexpr '.' sym | pexpr '.' sym1
{ {
$$ = nod(ODOT, $1, newname($3)); $$ = nod(ODOT, $1, newname($3));
} }
...@@ -811,13 +812,13 @@ name_name: ...@@ -811,13 +812,13 @@ name_name:
} }
new_name: new_name:
sym sym2
{ {
$$ = newname($1); $$ = newname($1);
} }
new_type: new_type:
sym sym2
{ {
$$ = newtype($1); $$ = newtype($1);
} }
...@@ -828,6 +829,63 @@ sym: ...@@ -828,6 +829,63 @@ sym:
| LACONST | LACONST
| LPACK | LPACK
sym1:
sym
| key1
| key2
sym2:
sym
| key2
/*
* keywords that we can
* use a field names
*/
key1:
LPACKAGE
| LIMPORT
| LEXPORT
| LMAP
| LCHAN
| LINTERFACE
| LFUNC
| LSTRUCT
| LFALL
| LRETURN
| LVAR
| LTYPE
| LCONST
| LCONVERT
| LSELECT
| LFOR
| LIF
| LELSE
| LSWITCH
| LCASE
| LDEFAULT
| LBREAK
| LCONTINUE
| LGO
| LGOTO
| LRANGE
| LIGNORE
/*
* keywords that we can
* use a variable/type names
*/
key2:
LNIL
| LTRUE
| LFALSE
| LIOTA
| LLEN
| LPANIC
| LPRINT
| LNEW
| LBASETYPE
name: name:
lname lname
{ {
...@@ -1336,7 +1394,7 @@ export: ...@@ -1336,7 +1394,7 @@ export:
{ {
exportsym($1); exportsym($1);
} }
| sym '.' sym | sym '.' sym1
{ {
exportsym(pkglookup($3->name, $1->name)); exportsym(pkglookup($3->name, $1->name));
} }
...@@ -1520,7 +1578,7 @@ hidden_import: ...@@ -1520,7 +1578,7 @@ hidden_import:
} }
isym: isym:
sym '.' sym sym '.' sym1
{ {
$$ = nod(OIMPORT, N, N); $$ = nod(OIMPORT, N, N);
$$->osym = $1; $$->osym = $1;
...@@ -1528,7 +1586,7 @@ isym: ...@@ -1528,7 +1586,7 @@ isym:
$$->sym = $3; $$->sym = $3;
renamepkg($$); renamepkg($$);
} }
| '(' sym ')' sym '.' sym | '(' sym ')' sym '.' sym1
{ {
$$ = nod(OIMPORT, N, N); $$ = nod(OIMPORT, N, N);
$$->osym = $2; $$->osym = $2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment