143 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 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 ") ; }
 |