144 lines
2.4 KiB
Plaintext
144 lines
2.4 KiB
Plaintext
|
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 ") ; }
|