UMINUS
%nonassoc UMINUS
| '-' expression %prec UMINUS
%right UMINUS UPLUS '!' '~'
| '-' expr %prec UMINUS { $$ = -$2; }
$$ = build_unary($1 == PLUS ? UPLUS : UMINUS, $2, $3);
case UMINUS:
case UMINUS:
} else if (tn->tn_op == UMINUS && l < 0) {
case UMINUS:
case UMINUS:
| '-' expr %prec UMINUS
%term UMINUS
%nonassoc '~', UMINUS /* NOT operator */