if($1->vtype==TYUNDEFINED && $1->vext==0)
else if($1->tag==TNAME && $1->vdcldone==0
&& $1->vext==0 && !inbound)
{ $$ = mkconst(TYLOG, ($1 == TRUE ? ".true." : ".false.") ); }
{ if( !ininit && $1->tag== TLIST)
{ $$ = mknode(TAROP,$2,$1,$3); }
{ $$ = mknode(TAROP,$2,$1,$3); }
{ $$ = mknode(TAROP,$2,$1,$3); }
| ADDOP expr %prec MULTOP
$$ = mknode(TNEGOP,OPMINUS, $2, PNULL);
| DOUBLEADDOP lhs %prec MULTOP
{ $$ = mknode(TASGNOP,$1,$2,mkint(1)); }
{ $$ = mknode(TRELOP,$2,$1,$3); }
{ $$ = mknode(TLOGOP,$2,$1,$3); }
{ $$ = mknode(TLOGOP,$2,$1,$3); }
{ $$ = mknode(TNOTOP,$1,$2,PNULL); }
exprerr("may not assign to a function", CNULL);
$$ = mknode(TASGNOP,$2,$1,$3);
{ $$ = mknode(TREPOP,0,$1,$3); }
{ if($1->tag==TNAME && $1->vdcldone==0 &&
$1->vsubs==0 && $1->vext==0 && !inbound)
$2 = mknode(TLIST,0, mkchain($2,CHNULL), PNULL);
if($1->vdcldone==0 && $1->vext==0)
{ $$ = strucelt($1,$3); }
| lhs QUALOP NAME parexprs
$4 = mknode(TLIST,0, mkchain($4,CHNULL), PNULL);
$$ = subscript(strucelt($1,$3), $4);
{ if($1->varp == 0) mkvar($1);
{ $$ = mknode(TLIST, 0, PNULL, PNULL); }
{ $$ = mknode(TLIST,0,$2,PNULL); }
exprlist: expr COMMA expr
{ $$ = mkchain($1, mkchain($3, CHNULL) ); }
{ hookup($1, mkchain($3,CHNULL) ); }
sizeof: SIZEOF LPAR expr RPAR
{ $$ = esizeof($3->vtype, $3->vtypep, $3->vdim);
{ if($3->attype==TYREAL && $3->atprec)
$$ = esizeof($3->attype, $3->attypep, $3->atdim);
| SIZEOF LPAR CHARACTER RPAR
{ $$ = mkint(tailor.ftnsize[FTNINT]/tailor.ftnchwd); }
lengthof: LENGTHOF LPAR expr RPAR
{ $$ = elenof($3->vtype, $3->vtypep, $3->vdim);
| LENGTHOF LPAR specs RPAR
{ $$ = elenof($3->attype, $3->attypep, $3->atdim);
| LENGTHOF LPAR CHARACTER RPAR