ISTART
FN() {
teff() ; tass() ; tsta() ; tasssta() ; tiff() ; tifass() ;
return 0 ;
}
teff() {
/* simple operator test */
/* first evaluate for side effects */
LSTART
X + Y
X - Y
X / Y
X % Y
X * Y
X & Y
X | Y
X ^ Y
X || Y
X && Y
X << S
X >> S
-X 
!X 
~X 
X == Y
X != Y
X <= Y
X >= Y
X < Y
X > Y
X ? X : Y
}
tass() {
LSTART
/* assignment ops */
Z1 = X 
Z1 += X 
Z1 -= X 
Z1 /= X 
Z1 %= X 
Z1 *= X 
Z1 &= X 
Z1 |= X 
Z1 ^= X 
Z1 <<= S
Z1 >>= S
Z1 ++
Z1 --
-- Z1
++ Z1
}
tsta() {
/* secondly evaluate and use the value */
LSTART
Z2 = ( X + Y )
Z2 = ( X - Y )
Z2 = ( X / Y )
Z2 = ( X % Y )
Z2 = ( X * Y )
Z2 = ( X & Y )
Z2 = ( X | Y )
Z2 = ( X ^ Y )
Z2 = ( X || Y )
Z2 = ( X && Y )
Z2 = ( X << S )
Z2 = ( X >> S )
Z2 = ( -X  )
Z2 = ( !X  )
Z2 = ( ~X  )
Z2 = ( X == Y )
Z2 = ( X != Y )
Z2 = ( X <= Y )
Z2 = ( X >= Y )
Z2 = ( X < Y )
Z2 = ( X > Y )
Z2 = ( X ? X : Y )
}
tasssta() {
/* assignment ops */
LSTART
Z2 = ( Z1 = X  )
Z2 = ( Z1 += X  )
Z2 = ( Z1 -= X  )
Z2 = ( Z1 /= X  )
Z2 = ( Z1 %= X  )
Z2 = ( Z1 *= X  )
Z2 = ( Z1 &= X  )
Z2 = ( Z1 |= X  )
Z2 = ( Z1 ^= X  )
Z2 = ( Z1 <<= S )
Z2 = ( Z1 >>= S )
Z2 = ( Z1 ++ )
Z2 = ( Z1 -- )
Z2 = ( -- Z1 )
Z2 = ( ++ Z1 )
}
tiff() {
LSTART
/* conditional context */
if ( X + Y ) yes() ; else no()
if ( X - Y ) yes() ; else no()
if ( X / Y ) yes() ; else no()
if ( X % Y ) yes() ; else no()
if ( X * Y ) yes() ; else no()
if ( X & Y ) yes() ; else no()
if ( X | Y ) yes() ; else no()
if ( X ^ Y ) yes() ; else no()
if ( X || Y ) yes() ; else no()
if ( X && Y ) yes() ; else no()
if ( X << S ) yes() ; else no()
if ( X >> S ) yes() ; else no()
if ( -X  ) yes() ; else no()
if ( !X  ) yes() ; else no()
if ( ~X  ) yes() ; else no()
if ( X == Y ) yes() ; else no()
if ( X != Y ) yes() ; else no()
if ( X <= Y ) yes() ; else no()
if ( X >= Y ) yes() ; else no()
if ( X < Y ) yes() ; else no()
if ( X > Y ) yes() ; else no()
if ( X ? X : Y ) yes() ; else no()
}
tifass() {
LSTART
/* assignment ops */
if ( Z1 = X  ) yes() ; else no()
if ( Z1 += X  ) yes() ; else no()
if ( Z1 -= X  ) yes() ; else no()
if ( Z1 /= X  ) yes() ; else no()
if ( Z1 %= X  ) yes() ; else no()
if ( Z1 *= X  ) yes() ; else no()
if ( Z1 &= X  ) yes() ; else no()
if ( Z1 |= X  ) yes() ; else no()
if ( Z1 ^= X  ) yes() ; else no()
if ( Z1 <<= S ) yes() ; else no()
if ( Z1 >>= S ) yes() ; else no()
if ( Z1 ++ ) yes() ; else no()
if ( Z1 -- ) yes() ; else no()
if ( -- Z1 ) yes() ; else no()
if ( ++ Z1 ) yes() ; else no()
}
yes() { printf("yes ") ; }
no() { printf("no ") ; }
