/* Input/Output Statements */
{ ioclause(IOSUNIT, $2); endioctl(); }
{ ioclause(IOSUNIT, ENULL); endioctl(); }
{ ioclause(IOSUNIT, IOSTDERR); endioctl(); }
| read infmt SCOMMA inlist
| read ioctl SCOMMA inlist
iofmove: fmkwd end_spec in_ioctl
{ iostmt = IOBACKSPACE; }
iofctl: ctlkwd end_spec in_ioctl
ioclause(IOSUNIT, ENULL);
ioclause(IOSUNIT, ENULL);
| ctllist SCOMMA ioclause
{ ioclause(IOSPOSITIONAL, $1); }
{ ioclause(IOSPOSITIONAL, ENULL); }
{ ioclause(IOSPOSITIONAL, IOSTDERR); }
{ ioclause($1, IOSTDERR); }
read: SREAD end_spec in_ioctl
write: SWRITE end_spec in_ioctl
print: SPRINT end_spec fexpr in_ioctl
ioclause(IOSUNIT, ENULL);
| SPRINT end_spec SSTAR in_ioctl
ioclause(IOSUNIT, ENULL);
{ $$ = mkchain((char *)$1, CHNULL); }
{ $$ = mkchain((char *)$3, $1); }
| SLPAR inlist SCOMMA dospec SRPAR
{ $$ = (tagptr) mkiodo($4,revchain($2)); }
{ $$ = mkchain((char *)$1, CHNULL); }
{ $$ = mkchain((char *)$1, CHNULL); }
{ $$ = mkchain((char *)$3, mkchain((char *)$1, CHNULL) ); }
{ $$ = mkchain((char *)$3, mkchain((char *)$1, CHNULL) ); }
{ $$ = mkchain((char *)$3, mkchain((char *)$1, CHNULL) ); }
{ $$ = mkchain((char *)$3, mkchain((char *)$1, CHNULL) ); }
{ $$ = mkchain((char *)$3, $1); }
{ $$ = mkchain((char *)$3, $1); }
| SLPAR uexpr SCOMMA dospec SRPAR
{ $$ = (tagptr) mkiodo($4, mkchain((char *)$2, CHNULL) ); }
| SLPAR other SCOMMA dospec SRPAR
{ $$ = (tagptr) mkiodo($4, mkchain((char *)$2, CHNULL) ); }
| SLPAR out2 SCOMMA dospec SRPAR
{ $$ = (tagptr) mkiodo($4, revchain($2)); }