/* test1 */ /* TODO: check void (no return allowed) and check for int (in this case it is required) */ int f( ) { return 42; } void f2( ) { putint( 44 ); } void main( ) { // TODO: allow enumeration of variable declarations char c1; char c2; char c3; char c4; int i; int j; int k; i = 12+25/5-2*3; // 25/5 -> 5, 12+5 -> 17, 2*3 -> 6, 17-6 -> 11 putint( i ); j = i/3+3*4; // 11 / 3 -> 3, 3*4 -> 12, 3+12 -> 15 putint( j ); k = 7 == 7; putint( k ); k = 8 != 7; putint( k ); k = 8 <= 9; putint( k ); k = 8 < 9; putint( k ); k = 9 > 8; putint( k ); k = 9 >= 8; putint( k ); k = 8 >= 8; putint( k ); k = 8 <= 8; putint( k ); if( i == j ) { putint( 2 ); } else { if( i > j ) { putint( 1 ); } else { putint( 0 ); } } i = 5; while( i > 0 ) { putint( i ); i = i - 1; } i = 1; do { putint( i ); i = i + 1; } while( i <= 5 ); c1 = 422; // TODO: wrong narrowing from int const to char type, must be catched c1 = 41; c2 = c1 + 1; c3 = c2 + 1; c4 = c3 + 1; putchar( c1 ); putchar( c2 ); putchar( c3 ); putchar( c4 ); i = f( ); putint( i ); f2( ); // TODO: disallow this assignment, LHS is a function, RHS is an integer literal //f = 1; }