Initial revision
This commit is contained in:
parent
d7abe0e8b6
commit
0ff3a17f5e
85
lang/cem/ctest/ctdecl/decl.c
Normal file
85
lang/cem/ctest/ctdecl/decl.c
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Author: E.G. Keizer */
|
||||||
|
|
||||||
|
/* Test a few declaration features */
|
||||||
|
/* Such as:
|
||||||
|
forward function declarations,
|
||||||
|
redeclarations,
|
||||||
|
pointer to function declarations.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int sqr() ; /* forward declarations */
|
||||||
|
extern int sqrt();
|
||||||
|
|
||||||
|
main() {
|
||||||
|
fdcl() ;
|
||||||
|
hidden() ;
|
||||||
|
return 0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
fdcl() {
|
||||||
|
int (*a[2])() ;
|
||||||
|
|
||||||
|
printf("sqr(4) %d\n",sqr(4)) ;
|
||||||
|
|
||||||
|
a[0]=sqr ; a[1]=sqrt ;
|
||||||
|
printf("(*a[0])(16) %d\n",(*a[0])(16) ) ;
|
||||||
|
printf("(*a[1])( (*a[0])(3) ) %d\n", (*a[1])( (*a[0])(3) ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sqr(par) int par ; {
|
||||||
|
return par*par ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sqrt(par) int par ; {
|
||||||
|
float x1,x2 ;
|
||||||
|
int i ;
|
||||||
|
|
||||||
|
if ( par<0 ) return -1 ;
|
||||||
|
x1 = par ;
|
||||||
|
i=0 ;
|
||||||
|
do {
|
||||||
|
x2 = x1 ;
|
||||||
|
x1 = ( x2*x2 + par ) / (2*x2) ;
|
||||||
|
if ( i++>=100 ) return -2 ;
|
||||||
|
} while ( ( x2<x1 ? x1-x2 : x2-x1 ) > 1e-5 ) ;
|
||||||
|
return (x1+x2)/2 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int a = -8 ;
|
||||||
|
|
||||||
|
hidden() {
|
||||||
|
hide() ;
|
||||||
|
printf("a outside hide %d\n",a) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int hide() {
|
||||||
|
int a ;
|
||||||
|
|
||||||
|
a = 4 ;
|
||||||
|
printf("a in hide %d\n",a) ;
|
||||||
|
{
|
||||||
|
int a ;
|
||||||
|
|
||||||
|
a = 16 ;
|
||||||
|
printf("a in in hide %d\n",a) ;
|
||||||
|
|
||||||
|
}
|
||||||
|
printf("a in hide %d\n",a) ;
|
||||||
|
}
|
7
lang/cem/ctest/ctdecl/decl.cem.g
Normal file
7
lang/cem/ctest/ctdecl/decl.cem.g
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
sqr(4) 16
|
||||||
|
(*a[0])(16) 256
|
||||||
|
(*a[1])( (*a[0])(3) ) 3
|
||||||
|
a in hide 4
|
||||||
|
a in in hide 16
|
||||||
|
a in hide 4
|
||||||
|
a outside hide -8
|
1
lang/cem/ctest/ctdecl/run
Normal file
1
lang/cem/ctest/ctdecl/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=decl" -fsk ../makefile ${1-gen}
|
165
lang/cem/ctest/ctdivers/ops.c
Normal file
165
lang/cem/ctest/ctdivers/ops.c
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Author: E.G. Keizer */
|
||||||
|
|
||||||
|
main() {
|
||||||
|
|
||||||
|
assnull() ;
|
||||||
|
ushift() ;
|
||||||
|
lshift() ;
|
||||||
|
uadd() ;
|
||||||
|
return 0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int a,b ;
|
||||||
|
assnull() {
|
||||||
|
int c,d ;
|
||||||
|
/* test a few cases handled especially by the cem-compiler */
|
||||||
|
|
||||||
|
a= -1 ; b= -1 ; c= -1 ; d = -1 ;
|
||||||
|
|
||||||
|
a=b=0 ;
|
||||||
|
c=d=0 ;
|
||||||
|
printf("a %d, b %d, c %d, d %d\n",a,b,c,d) ;
|
||||||
|
a = b = c = d = -32 ;
|
||||||
|
printf (" (a=0) %d, (c=0) %d\n",(a=0),(c=0) ) ;
|
||||||
|
printf("a %d, b %d, c %d, d %d\n",a,b,c,d) ;
|
||||||
|
|
||||||
|
}
|
||||||
|
ushift() {
|
||||||
|
unsigned u ;
|
||||||
|
|
||||||
|
printf("Unsigned shifts by constants\n") ;
|
||||||
|
u = 0150715 ;
|
||||||
|
printf(" u = %06o\n",u) ;
|
||||||
|
printf(" u>>0 %06o\n", u>>0 ) ;
|
||||||
|
printf(" u>>1 %06o\n", u>>1 ) ;
|
||||||
|
printf(" u>>2 %06o\n", u>>2 ) ;
|
||||||
|
printf(" u>>3 %06o\n", u>>3 ) ;
|
||||||
|
printf(" u>>4 %06o\n", u>>4 ) ;
|
||||||
|
printf(" u>>5 %06o\n", u>>5 ) ;
|
||||||
|
printf(" u>>6 %06o\n", u>>6 ) ;
|
||||||
|
printf(" u>>7 %06o\n", u>>7 ) ;
|
||||||
|
printf(" u>>8 %06o\n", u>>8 ) ;
|
||||||
|
printf(" u>>9 %06o\n", u>>9 ) ;
|
||||||
|
printf(" u>>10 %06o\n", u>>10 ) ;
|
||||||
|
printf(" u>>11 %06o\n", u>>11 ) ;
|
||||||
|
printf(" u>>12 %06o\n", u>>12 ) ;
|
||||||
|
printf(" u>>13 %06o\n", u>>13 ) ;
|
||||||
|
printf(" u>>14 %06o\n", u>>14 ) ;
|
||||||
|
printf(" u>>15 %06o\n", u>>15 ) ;
|
||||||
|
printf(" u>>16 %06o\n", u>>16 ) ;
|
||||||
|
printf(" u<<0 %06o\n", u<<0 ) ;
|
||||||
|
printf(" u<<1 %06o\n", u<<1 ) ;
|
||||||
|
printf(" u<<2 %06o\n", u<<2 ) ;
|
||||||
|
printf(" u<<3 %06o\n", u<<3 ) ;
|
||||||
|
printf(" u<<4 %06o\n", u<<4 ) ;
|
||||||
|
printf(" u<<5 %06o\n", u<<5 ) ;
|
||||||
|
printf(" u<<6 %06o\n", u<<6 ) ;
|
||||||
|
printf(" u<<7 %06o\n", u<<7 ) ;
|
||||||
|
printf(" u<<8 %06o\n", u<<8 ) ;
|
||||||
|
printf(" u<<9 %06o\n", u<<9 ) ;
|
||||||
|
printf(" u<<10 %06o\n", u<<10 ) ;
|
||||||
|
printf(" u<<11 %06o\n", u<<11 ) ;
|
||||||
|
printf(" u<<12 %06o\n", u<<12 ) ;
|
||||||
|
printf(" u<<13 %06o\n", u<<13 ) ;
|
||||||
|
printf(" u<<14 %06o\n", u<<14 ) ;
|
||||||
|
printf(" u<<15 %06o\n", u<<15 ) ;
|
||||||
|
printf(" u<<16 %06o\n", u<<16 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
lshift() {
|
||||||
|
long ll ;
|
||||||
|
|
||||||
|
printf("Long shifts by constants\n") ;
|
||||||
|
ll = 400000L - 0532 ;
|
||||||
|
printf(" ll = %011O\n",ll) ;
|
||||||
|
printf(" ll>>0 %011O\n", ll>>0 ) ;
|
||||||
|
printf(" ll>>1 %011O\n", ll>>1 ) ;
|
||||||
|
printf(" ll>>2 %011O\n", ll>>2 ) ;
|
||||||
|
printf(" ll>>3 %011O\n", ll>>3 ) ;
|
||||||
|
printf(" ll>>4 %011O\n", ll>>4 ) ;
|
||||||
|
printf(" ll>>5 %011O\n", ll>>5 ) ;
|
||||||
|
printf(" ll>>6 %011O\n", ll>>6 ) ;
|
||||||
|
printf(" ll>>7 %011O\n", ll>>7 ) ;
|
||||||
|
printf(" ll>>8 %011O\n", ll>>8 ) ;
|
||||||
|
printf(" ll>>9 %011O\n", ll>>9 ) ;
|
||||||
|
printf(" ll>>10 %011O\n", ll>>10 ) ;
|
||||||
|
printf(" ll>>11 %011O\n", ll>>11 ) ;
|
||||||
|
printf(" ll>>12 %011O\n", ll>>12 ) ;
|
||||||
|
printf(" ll>>13 %011O\n", ll>>13 ) ;
|
||||||
|
printf(" ll>>14 %011O\n", ll>>14 ) ;
|
||||||
|
printf(" ll>>15 %011O\n", ll>>15 ) ;
|
||||||
|
printf(" ll>>16 %011O\n", ll>>16 ) ;
|
||||||
|
printf(" ll>>17 %011O\n", ll>>17 ) ;
|
||||||
|
printf(" ll>>18 %011O\n", ll>>18 ) ;
|
||||||
|
printf(" ll>>19 %011O\n", ll>>19 ) ;
|
||||||
|
printf(" ll>>20 %011O\n", ll>>20 ) ;
|
||||||
|
printf(" ll>>21 %011O\n", ll>>21 ) ;
|
||||||
|
printf(" ll>>22 %011O\n", ll>>22 ) ;
|
||||||
|
printf(" ll>>23 %011O\n", ll>>23 ) ;
|
||||||
|
printf(" ll>>24 %011O\n", ll>>24 ) ;
|
||||||
|
printf(" ll>>25 %011O\n", ll>>25 ) ;
|
||||||
|
printf(" ll>>26 %011O\n", ll>>26 ) ;
|
||||||
|
printf(" ll>>27 %011O\n", ll>>27 ) ;
|
||||||
|
printf(" ll>>28 %011O\n", ll>>28 ) ;
|
||||||
|
printf(" ll>>29 %011O\n", ll>>29 ) ;
|
||||||
|
printf(" ll>>30 %011O\n", ll>>30 ) ;
|
||||||
|
printf(" ll>>31 %011O\n", ll>>31 ) ;
|
||||||
|
ll = 1 ;
|
||||||
|
printf(" ll<<0 %011O\n", ll<<0 ) ;
|
||||||
|
printf(" ll<<1 %011O\n", ll<<1 ) ;
|
||||||
|
printf(" ll<<2 %011O\n", ll<<2 ) ;
|
||||||
|
printf(" ll<<3 %011O\n", ll<<3 ) ;
|
||||||
|
printf(" ll<<4 %011O\n", ll<<4 ) ;
|
||||||
|
printf(" ll<<5 %011O\n", ll<<5 ) ;
|
||||||
|
printf(" ll<<6 %011O\n", ll<<6 ) ;
|
||||||
|
printf(" ll<<7 %011O\n", ll<<7 ) ;
|
||||||
|
printf(" ll<<8 %011O\n", ll<<8 ) ;
|
||||||
|
printf(" ll<<9 %011O\n", ll<<9 ) ;
|
||||||
|
printf(" ll<<10 %011O\n", ll<<10 ) ;
|
||||||
|
printf(" ll<<11 %011O\n", ll<<11 ) ;
|
||||||
|
printf(" ll<<12 %011O\n", ll<<12 ) ;
|
||||||
|
printf(" ll<<13 %011O\n", ll<<13 ) ;
|
||||||
|
printf(" ll<<14 %011O\n", ll<<14 ) ;
|
||||||
|
printf(" ll<<15 %011O\n", ll<<15 ) ;
|
||||||
|
printf(" ll<<16 %011O\n", ll<<16 ) ;
|
||||||
|
printf(" ll<<17 %011O\n", ll<<17 ) ;
|
||||||
|
printf(" ll<<18 %011O\n", ll<<18 ) ;
|
||||||
|
printf(" ll<<19 %011O\n", ll<<19 ) ;
|
||||||
|
printf(" ll<<20 %011O\n", ll<<20 ) ;
|
||||||
|
printf(" ll<<21 %011O\n", ll<<21 ) ;
|
||||||
|
printf(" ll<<22 %011O\n", ll<<22 ) ;
|
||||||
|
printf(" ll<<23 %011O\n", ll<<23 ) ;
|
||||||
|
printf(" ll<<24 %011O\n", ll<<24 ) ;
|
||||||
|
printf(" ll<<25 %011O\n", ll<<25 ) ;
|
||||||
|
printf(" ll<<26 %011O\n", ll<<26 ) ;
|
||||||
|
printf(" ll<<27 %011O\n", ll<<27 ) ;
|
||||||
|
printf(" ll<<28 %011O\n", ll<<28 ) ;
|
||||||
|
printf(" ll<<29 %011O\n", ll<<29 ) ;
|
||||||
|
printf(" ll<<30 %011O\n", ll<<30 ) ;
|
||||||
|
}
|
||||||
|
uadd() {
|
||||||
|
unsigned u ;
|
||||||
|
int i ;
|
||||||
|
|
||||||
|
u = 32760 ;
|
||||||
|
for ( i=0 ; i<=16 ; ++i ) {
|
||||||
|
printf("%2d %06o\n",i,u+i) ;
|
||||||
|
}
|
||||||
|
}
|
121
lang/cem/ctest/ctdivers/ops.cem.g
Normal file
121
lang/cem/ctest/ctdivers/ops.cem.g
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
a 0, b 0, c 0, d 0
|
||||||
|
(a=0) 0, (c=0) 0
|
||||||
|
a 0, b -32, c 0, d -32
|
||||||
|
Unsigned shifts by constants
|
||||||
|
u = 150715
|
||||||
|
u>>0 150715
|
||||||
|
u>>1 064346
|
||||||
|
u>>2 032163
|
||||||
|
u>>3 015071
|
||||||
|
u>>4 006434
|
||||||
|
u>>5 003216
|
||||||
|
u>>6 001507
|
||||||
|
u>>7 000643
|
||||||
|
u>>8 000321
|
||||||
|
u>>9 000150
|
||||||
|
u>>10 000064
|
||||||
|
u>>11 000032
|
||||||
|
u>>12 000015
|
||||||
|
u>>13 000006
|
||||||
|
u>>14 000003
|
||||||
|
u>>15 000001
|
||||||
|
u>>16 000000
|
||||||
|
u<<0 150715
|
||||||
|
u<<1 121632
|
||||||
|
u<<2 043464
|
||||||
|
u<<3 107150
|
||||||
|
u<<4 016320
|
||||||
|
u<<5 034640
|
||||||
|
u<<6 071500
|
||||||
|
u<<7 163200
|
||||||
|
u<<8 146400
|
||||||
|
u<<9 115000
|
||||||
|
u<<10 032000
|
||||||
|
u<<11 064000
|
||||||
|
u<<12 150000
|
||||||
|
u<<13 120000
|
||||||
|
u<<14 040000
|
||||||
|
u<<15 100000
|
||||||
|
u<<16 000000
|
||||||
|
Long shifts by constants
|
||||||
|
ll = 00001414446
|
||||||
|
ll>>0 00001414446
|
||||||
|
ll>>1 00000606223
|
||||||
|
ll>>2 00000303111
|
||||||
|
ll>>3 00000141444
|
||||||
|
ll>>4 00000060622
|
||||||
|
ll>>5 00000030311
|
||||||
|
ll>>6 00000014144
|
||||||
|
ll>>7 00000006062
|
||||||
|
ll>>8 00000003031
|
||||||
|
ll>>9 00000001414
|
||||||
|
ll>>10 00000000606
|
||||||
|
ll>>11 00000000303
|
||||||
|
ll>>12 00000000141
|
||||||
|
ll>>13 00000000060
|
||||||
|
ll>>14 00000000030
|
||||||
|
ll>>15 00000000014
|
||||||
|
ll>>16 00000000006
|
||||||
|
ll>>17 00000000003
|
||||||
|
ll>>18 00000000001
|
||||||
|
ll>>19 00000000000
|
||||||
|
ll>>20 00000000000
|
||||||
|
ll>>21 00000000000
|
||||||
|
ll>>22 00000000000
|
||||||
|
ll>>23 00000000000
|
||||||
|
ll>>24 00000000000
|
||||||
|
ll>>25 00000000000
|
||||||
|
ll>>26 00000000000
|
||||||
|
ll>>27 00000000000
|
||||||
|
ll>>28 00000000000
|
||||||
|
ll>>29 00000000000
|
||||||
|
ll>>30 00000000000
|
||||||
|
ll>>31 00000000000
|
||||||
|
ll<<0 00000000001
|
||||||
|
ll<<1 00000000002
|
||||||
|
ll<<2 00000000004
|
||||||
|
ll<<3 00000000010
|
||||||
|
ll<<4 00000000020
|
||||||
|
ll<<5 00000000040
|
||||||
|
ll<<6 00000000100
|
||||||
|
ll<<7 00000000200
|
||||||
|
ll<<8 00000000400
|
||||||
|
ll<<9 00000001000
|
||||||
|
ll<<10 00000002000
|
||||||
|
ll<<11 00000004000
|
||||||
|
ll<<12 00000010000
|
||||||
|
ll<<13 00000020000
|
||||||
|
ll<<14 00000040000
|
||||||
|
ll<<15 00000100000
|
||||||
|
ll<<16 00000200000
|
||||||
|
ll<<17 00000400000
|
||||||
|
ll<<18 00001000000
|
||||||
|
ll<<19 00002000000
|
||||||
|
ll<<20 00004000000
|
||||||
|
ll<<21 00010000000
|
||||||
|
ll<<22 00020000000
|
||||||
|
ll<<23 00040000000
|
||||||
|
ll<<24 00100000000
|
||||||
|
ll<<25 00200000000
|
||||||
|
ll<<26 00400000000
|
||||||
|
ll<<27 01000000000
|
||||||
|
ll<<28 02000000000
|
||||||
|
ll<<29 04000000000
|
||||||
|
ll<<30 10000000000
|
||||||
|
0 077770
|
||||||
|
1 077771
|
||||||
|
2 077772
|
||||||
|
3 077773
|
||||||
|
4 077774
|
||||||
|
5 077775
|
||||||
|
6 077776
|
||||||
|
7 077777
|
||||||
|
8 100000
|
||||||
|
9 100001
|
||||||
|
10 100002
|
||||||
|
11 100003
|
||||||
|
12 100004
|
||||||
|
13 100005
|
||||||
|
14 100006
|
||||||
|
15 100007
|
||||||
|
16 100010
|
1
lang/cem/ctest/ctdivers/run
Normal file
1
lang/cem/ctest/ctdivers/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=ops" -fskk ../makefile ${1-gen}
|
173
lang/cem/ctest/cterr/bugs.c
Normal file
173
lang/cem/ctest/cterr/bugs.c
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Author: E.G. Keizer */
|
||||||
|
|
||||||
|
/* This programs is a collection of derived from small tests develloped
|
||||||
|
for specific bugs/features in the C->EM compiler
|
||||||
|
*/
|
||||||
|
|
||||||
|
char * err_name ;
|
||||||
|
|
||||||
|
set_err(s) char *s ; {
|
||||||
|
printf("%s\n",s) ;
|
||||||
|
err_name= s ;
|
||||||
|
}
|
||||||
|
e(i) {
|
||||||
|
printf("%s: error %d\n",err_name,i) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
cmp_rev() ;
|
||||||
|
loc_dif() ;
|
||||||
|
con_fold() ;
|
||||||
|
ass_res() ;
|
||||||
|
c_to_l() ;
|
||||||
|
acc_struct() ;
|
||||||
|
char_param() ;
|
||||||
|
addr_lb() ;
|
||||||
|
compl_ind() ;
|
||||||
|
printf("END\n") ;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmp_rev() {
|
||||||
|
/* Some compilers magically transform the second < into a > */
|
||||||
|
int i,j ;
|
||||||
|
int result ;
|
||||||
|
|
||||||
|
set_err("cmp_rev") ;
|
||||||
|
i=2 ; j=1 ;
|
||||||
|
result= ( (j-i<0) == (j-i<0) ) ? 1 : 0 ;
|
||||||
|
if ( !result ) e(1) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
loc_dif() {
|
||||||
|
set_err("loc_dif") ;
|
||||||
|
loc_fa(1,2) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
loc_fa(p1,p2) {
|
||||||
|
int i ;
|
||||||
|
if ( &p1-&p2 != -1 ) e(1) ;
|
||||||
|
if ( &i-&p1 >=0 ) e(2) ;
|
||||||
|
if ( &p1-&i <=0 ) e(3) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
con_fold() {
|
||||||
|
set_err("con_fold") ;
|
||||||
|
con_flo( (1 ? 3 : 4.5), 200, 200, 200 ) ;
|
||||||
|
con_lo( 4L + 3, 1 ) ;
|
||||||
|
}
|
||||||
|
con_flo(d) double d ; {
|
||||||
|
if ( d>3.00001 || d<2.99999 ) e(1) ;
|
||||||
|
}
|
||||||
|
con_lo(l) long l ; {
|
||||||
|
if ( l!=7 ) e(2) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
ass_res() {
|
||||||
|
char c, *pc ;
|
||||||
|
int i ;
|
||||||
|
int s_extend ;
|
||||||
|
|
||||||
|
set_err("ass_res") ;
|
||||||
|
c = -1 ; i=c ;
|
||||||
|
s_extend= i== -1 ;
|
||||||
|
|
||||||
|
pc = &c ;
|
||||||
|
i = ( *pc++ = 01777 ) ;
|
||||||
|
switch ( i ) {
|
||||||
|
case 01777 :
|
||||||
|
e(1) ; break ;
|
||||||
|
case -1 :
|
||||||
|
if ( !s_extend ) e(2) ;
|
||||||
|
break ;
|
||||||
|
case 0377 :
|
||||||
|
if ( s_extend ) e(3) ;
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
|
e(4) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
c_to_l() {
|
||||||
|
char c = -1 ;
|
||||||
|
long l ;
|
||||||
|
|
||||||
|
set_err("c_to_l") ;
|
||||||
|
l= c ;
|
||||||
|
if ( c==255 ) {
|
||||||
|
if ( l!=255 ) e(1) ;
|
||||||
|
} else {
|
||||||
|
if ( l!= -1 ) e(2) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
acc_struct() {
|
||||||
|
struct s1 { char s1_a[3] ; } ss1, is1 ;
|
||||||
|
struct s2 {
|
||||||
|
int s2_i ;
|
||||||
|
struct s1 s2_s1 ;
|
||||||
|
} ;
|
||||||
|
struct s3 {
|
||||||
|
int s3_i ;
|
||||||
|
struct s2 s3_s2 ;
|
||||||
|
} ss3, *ps3 ;
|
||||||
|
|
||||||
|
set_err("acc_struct") ;
|
||||||
|
ps3 = &ss3 ;
|
||||||
|
is1.s1_a[0]=1 ; is1.s1_a[1]=100 ; is1.s1_a[2]=127 ;
|
||||||
|
ss3.s3_s2.s2_s1= is1 ;
|
||||||
|
ss1 = ps3->s3_s2.s2_s1 ;
|
||||||
|
if ( ss1.s1_a[0]!=1 ) e(1) ;
|
||||||
|
if ( ss1.s1_a[1]!=100 ) e(2) ;
|
||||||
|
if ( ss1.s1_a[2]!=127 ) e(3) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
char_param() {
|
||||||
|
set_err("char_param") ;
|
||||||
|
fcall(1,01002,-1) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
fcall(c1,c2,c3) char c1,c2,c3 ; {
|
||||||
|
if ( c1!=1 ) e(1) ;
|
||||||
|
if ( c2!=2 ) e(2) ;
|
||||||
|
c_alter(&c1,127) ;
|
||||||
|
if ( c1!=127 ) e(3) ;
|
||||||
|
c_alter(&c3,0) ;
|
||||||
|
if ( c3 ) e(4) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
c_alter(ptr,val) char *ptr ; int val ; {
|
||||||
|
*ptr= val ;
|
||||||
|
}
|
||||||
|
|
||||||
|
addr_lb() {
|
||||||
|
char a[6] ;
|
||||||
|
int i ;
|
||||||
|
|
||||||
|
set_err("addr_lb");
|
||||||
|
i=6 ;
|
||||||
|
if ( &a[6] != a+i ) e(1) ;
|
||||||
|
}
|
||||||
|
compl_ind() {
|
||||||
|
char arr[20] ;
|
||||||
|
int i ;
|
||||||
|
set_err("compl_ind") ;
|
||||||
|
arr[10]=111 ;
|
||||||
|
i=0 ; if ( arr[i+10] != 111 ) e(1) ;
|
||||||
|
}
|
10
lang/cem/ctest/cterr/bugs.cem.g
Normal file
10
lang/cem/ctest/cterr/bugs.cem.g
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
cmp_rev
|
||||||
|
loc_dif
|
||||||
|
con_fold
|
||||||
|
ass_res
|
||||||
|
c_to_l
|
||||||
|
acc_struct
|
||||||
|
char_param
|
||||||
|
addr_lb
|
||||||
|
compl_ind
|
||||||
|
END
|
1
lang/cem/ctest/cterr/run
Executable file
1
lang/cem/ctest/cterr/run
Executable file
|
@ -0,0 +1 @@
|
||||||
|
make "P=bugs" -fsk ../makefile ${1-gen}
|
1
lang/cem/ctest/ctest1/run
Normal file
1
lang/cem/ctest/ctest1/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=test" -fsk ../makefile ${1-gen}
|
1160
lang/cem/ctest/ctest1/test.c
Normal file
1160
lang/cem/ctest/ctest1/test.c
Normal file
File diff suppressed because it is too large
Load diff
1
lang/cem/ctest/ctest1/test.cem.g
Normal file
1
lang/cem/ctest/ctest1/test.cem.g
Normal file
|
@ -0,0 +1 @@
|
||||||
|
End of test program, 11 tests completed, 0 errors detected
|
1
lang/cem/ctest/ctest2/run
Normal file
1
lang/cem/ctest/ctest2/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=t7" -fsk ../makefile ${1-gen}
|
637
lang/cem/ctest/ctest2/t7.c
Normal file
637
lang/cem/ctest/ctest2/t7.c
Normal file
|
@ -0,0 +1,637 @@
|
||||||
|
#
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TEST1 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* This program can be used to test C-compilers */
|
||||||
|
/* It is supposed the first test program (= "test1") */
|
||||||
|
/* is used to test the basic arithmetic */
|
||||||
|
|
||||||
|
/* The following are global counters */
|
||||||
|
|
||||||
|
int t, /* the value indicates the number of the test procedure */
|
||||||
|
ect, /* error counter */
|
||||||
|
tct; /* count the number of test procedures called */
|
||||||
|
|
||||||
|
/************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* The following is tested: */
|
||||||
|
/* FOR STATEMENTS in test1 */
|
||||||
|
/* WHILE STATEMENTS in test2 */
|
||||||
|
/* WHILE and FOR STATEMENTS in test3 */
|
||||||
|
/* DO STATEMENTS in test4 */
|
||||||
|
/* SWITCH STATEMENTS in test5 */
|
||||||
|
/* */
|
||||||
|
/************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
char *pp1 = "End of test program, ";
|
||||||
|
char *pp2 = " test(s) completed, ";
|
||||||
|
char *pp3 = " errors detected\n";
|
||||||
|
char *pp4 = "Error ";
|
||||||
|
char *pp5 = " in test";
|
||||||
|
char *pp6 = "\n";
|
||||||
|
|
||||||
|
itoa(p,ptr)
|
||||||
|
/* converts integer "p" to ascii string "ptr" */
|
||||||
|
int p;
|
||||||
|
char *ptr;
|
||||||
|
{
|
||||||
|
register int k,l;
|
||||||
|
register char *str;
|
||||||
|
int sign;
|
||||||
|
|
||||||
|
str=ptr;
|
||||||
|
k=p;
|
||||||
|
if ((sign=k)<0)
|
||||||
|
k = -k;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
l = k % 10;
|
||||||
|
k /= 10;
|
||||||
|
*str++ = l + '0';
|
||||||
|
}
|
||||||
|
while(k);
|
||||||
|
if (sign<0)
|
||||||
|
*str++ = '-';
|
||||||
|
*str = '\0';
|
||||||
|
reverse(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
reverse(s)
|
||||||
|
char s[];
|
||||||
|
{
|
||||||
|
register int c,i,j;
|
||||||
|
|
||||||
|
for (i=0, j=strlen(s)-1; i<j; i++, j--)
|
||||||
|
{
|
||||||
|
c=s[i];
|
||||||
|
s[i]=s[j];
|
||||||
|
s[j]=c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strlen(str)
|
||||||
|
/* returns the length of string str */
|
||||||
|
char *str;
|
||||||
|
{
|
||||||
|
register char *s, *p;
|
||||||
|
|
||||||
|
p = s = str;
|
||||||
|
while (*p)
|
||||||
|
p++;
|
||||||
|
return(p-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
char chtct[10],chect[10];
|
||||||
|
tct = 0;
|
||||||
|
ect = 0; /* No errors, so far so good */
|
||||||
|
test1(); /* testing FOR STATEMENTS */
|
||||||
|
test2(); /* testing WHILE STATEMENTS */
|
||||||
|
test3(); /* testing combined FOR and WHILE statements */
|
||||||
|
test4(); /* testing DO statements */
|
||||||
|
test5(); /* testing SWITCH statements */
|
||||||
|
test6(); /* testing GOTO statements */
|
||||||
|
test7();
|
||||||
|
test8();
|
||||||
|
write(1,pp1,strlen(pp1));
|
||||||
|
itoa(tct,chtct);
|
||||||
|
write(1,chtct,strlen(chtct));
|
||||||
|
write(1,pp2,strlen(pp2));
|
||||||
|
itoa(ect,chect);
|
||||||
|
write(1,chect,strlen(chect));
|
||||||
|
write(1,pp3,strlen(pp3));
|
||||||
|
return(ect);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
e(n) /* prints an error message */
|
||||||
|
int n;
|
||||||
|
{
|
||||||
|
char cht[10],chn[10];
|
||||||
|
ect++; /* total number of errors increased by 1 */
|
||||||
|
write(1,pp4,strlen(pp4));
|
||||||
|
itoa(n,chn);
|
||||||
|
write(1,chn,strlen(chn));
|
||||||
|
write(1,pp5,strlen(pp5));
|
||||||
|
itoa(t,cht);
|
||||||
|
write(1,cht,strlen(cht));
|
||||||
|
write(1,pp6,strlen(pp6));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test1() /* Testing the for statement */
|
||||||
|
{
|
||||||
|
int i, j; /* variables, used as contolling integers in the */
|
||||||
|
/* for statements */
|
||||||
|
|
||||||
|
t = 1; /* This is test 1 */
|
||||||
|
tct++;
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
e(1);
|
||||||
|
return; /* If the break doesn't work, let's hope the */
|
||||||
|
/* return does ! */
|
||||||
|
}
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
e(2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
e(3);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
e(4);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
e(5);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
e(6);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
e(7);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
i=0;
|
||||||
|
for ( ; ; i++)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
e(8);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (i=0 ; ; i++)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
e(9);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (i=0 ; i<3; i++)
|
||||||
|
;
|
||||||
|
if (i != 3) e(10);
|
||||||
|
for (i=0; i<0; i++)
|
||||||
|
e(11);
|
||||||
|
if (i != 0) e(12);
|
||||||
|
for (i=0; i<1; i++)
|
||||||
|
for (i=i; i<i; i++)
|
||||||
|
for (i=i; i<(i+0); i++)
|
||||||
|
for (i=i+0; i<(i-0); i++)
|
||||||
|
for (i=i-0; i<i; i++)
|
||||||
|
e(13);
|
||||||
|
if (i != 1) e(14);
|
||||||
|
for (i=0; i<3; )
|
||||||
|
i++;
|
||||||
|
if (i != 3) e(15);
|
||||||
|
i = 18;
|
||||||
|
j = 3;
|
||||||
|
for ( ; j<i; --i)
|
||||||
|
;
|
||||||
|
if (i != j) e(16);
|
||||||
|
if (i != 3) e(17);
|
||||||
|
j = -30;
|
||||||
|
for ( ; ; )
|
||||||
|
if (++j)
|
||||||
|
continue;
|
||||||
|
else break;
|
||||||
|
if (j != 0) e(18);
|
||||||
|
i = 0;
|
||||||
|
for (i++, i++, i++, i++; ; )
|
||||||
|
{
|
||||||
|
if (i != 4) e(19);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i = 1;
|
||||||
|
for (i=j=i=j=i=j=i; i && j && i; --i, --j)
|
||||||
|
{
|
||||||
|
if (i != 1) e(20);
|
||||||
|
}
|
||||||
|
j=0;
|
||||||
|
for (i=32700; i<32767; i++)
|
||||||
|
j++;
|
||||||
|
if (j != 67) e(21);
|
||||||
|
j=0;
|
||||||
|
#ifdef TEST1
|
||||||
|
printf("*** 1\n");
|
||||||
|
for (i=32000; i<=32767; i++)
|
||||||
|
j++;
|
||||||
|
if (j != 68) e(22);
|
||||||
|
printf("*** 2\n");
|
||||||
|
#endif
|
||||||
|
j=0;
|
||||||
|
for (i=32767; i>32700; i--)
|
||||||
|
j++;
|
||||||
|
if (j != 67) e(23);
|
||||||
|
j=0;
|
||||||
|
for (i= -32768; i<-32700; i++)
|
||||||
|
j++;
|
||||||
|
if (j != 68) e(24);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test2() /* Testing the while statement */
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
t = 2;
|
||||||
|
tct++;
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
e(1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while(0)
|
||||||
|
{
|
||||||
|
e(2);
|
||||||
|
break;
|
||||||
|
e(3);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (1 || 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
e(4);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (1 && 0)
|
||||||
|
{
|
||||||
|
e(5);
|
||||||
|
break;
|
||||||
|
e(6);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
j = 10;
|
||||||
|
while (--j)
|
||||||
|
;
|
||||||
|
if (j != 0) e(7);
|
||||||
|
while (j)
|
||||||
|
{
|
||||||
|
e(8);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while ( i=j )
|
||||||
|
{
|
||||||
|
e(9);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while ( (i==j) && (i!=j) )
|
||||||
|
{
|
||||||
|
e(10);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
j = 1;
|
||||||
|
while (j)
|
||||||
|
while(j)
|
||||||
|
while(j)
|
||||||
|
while(j)
|
||||||
|
while(j)
|
||||||
|
while(--j)
|
||||||
|
;
|
||||||
|
if (j != 0) e(11);
|
||||||
|
if (j) e(12);
|
||||||
|
j = 30;
|
||||||
|
while (--j)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
continue;
|
||||||
|
continue;
|
||||||
|
continue;
|
||||||
|
continue;
|
||||||
|
break;
|
||||||
|
e(13);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test3() /* Combined FOR and WHILE statements */
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
|
||||||
|
t = 3;
|
||||||
|
tct++;
|
||||||
|
j = 0;
|
||||||
|
for (i=3; i; i++)
|
||||||
|
{
|
||||||
|
while (i--)
|
||||||
|
;
|
||||||
|
if (++j > 1) e(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test4() /* Do statement */
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
t = 4;
|
||||||
|
tct++;
|
||||||
|
i = 0;
|
||||||
|
do
|
||||||
|
if (i) e(1);
|
||||||
|
while (i);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while (!i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while (!i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while (!i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while (!i);
|
||||||
|
if (i != 4) e(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test5() /* SWITCH statement */
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
|
||||||
|
t = 5;
|
||||||
|
tct++;
|
||||||
|
for (i=0; i<10; i++)
|
||||||
|
{
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case 0: if (i != 0) e(1);
|
||||||
|
break;
|
||||||
|
case 1: if (i != 1) e(2);
|
||||||
|
break;
|
||||||
|
case 2: if (i != 2) e(3);
|
||||||
|
break;
|
||||||
|
case 3: if (i != 3) e(4);
|
||||||
|
i++;
|
||||||
|
case 4: if (i != 4) e(5);
|
||||||
|
case 5:
|
||||||
|
case 6:
|
||||||
|
case 7:
|
||||||
|
case 8:
|
||||||
|
case 9:
|
||||||
|
break;
|
||||||
|
default: e(6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i=j= -18; i<10; i++, j++)
|
||||||
|
{
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case -3:
|
||||||
|
case 7:
|
||||||
|
case 1: switch (j)
|
||||||
|
{
|
||||||
|
case -3:
|
||||||
|
case 7:
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
default: e(7);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
e(8);
|
||||||
|
case -4: switch (j)
|
||||||
|
{
|
||||||
|
case -4: if (i != -4) e(9);
|
||||||
|
break;
|
||||||
|
default: e(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i = 'a';
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case 'a':
|
||||||
|
switch ( i )
|
||||||
|
{
|
||||||
|
case 'a':
|
||||||
|
switch ( i )
|
||||||
|
{
|
||||||
|
case 'a':
|
||||||
|
break;
|
||||||
|
default: e(11);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: e(12);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: e(13);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test6() /* goto statement */
|
||||||
|
{
|
||||||
|
int k;
|
||||||
|
|
||||||
|
t = 6;
|
||||||
|
tct++;
|
||||||
|
k = 0;
|
||||||
|
goto lab0;
|
||||||
|
xl1:
|
||||||
|
k = 1;
|
||||||
|
goto lab1;
|
||||||
|
xl2:
|
||||||
|
k = 2;
|
||||||
|
goto lab2;
|
||||||
|
xl3:
|
||||||
|
k = 3;
|
||||||
|
goto lab3;
|
||||||
|
xl4:
|
||||||
|
k = 4;
|
||||||
|
goto llab1;
|
||||||
|
llab2: goto llab3;
|
||||||
|
llab4: goto llab5;
|
||||||
|
llab6: goto llab7;
|
||||||
|
llab8: if ( k != 4 ) e(5);
|
||||||
|
return ;
|
||||||
|
llab1: goto llab2;
|
||||||
|
llab3: goto llab4;
|
||||||
|
llab5: goto llab6;
|
||||||
|
llab7: goto llab8;
|
||||||
|
lab0: if ( k!= 0 ) e(1);
|
||||||
|
goto xl1 ;
|
||||||
|
lab1: if ( k!= 1 ) e(2);
|
||||||
|
goto xl2 ;
|
||||||
|
lab2: if ( k!= 2 ) e(3);
|
||||||
|
goto xl3 ;
|
||||||
|
lab3: if ( k!= 3 ) e(4);
|
||||||
|
goto xl4 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test7() /* Combinations of FOR, WHILE, DO and SWITCH statements */
|
||||||
|
{
|
||||||
|
int i,j,k;
|
||||||
|
|
||||||
|
t = 7;
|
||||||
|
tct++;
|
||||||
|
for ( i=j=k=0; i<6; i++, j++, k++ )
|
||||||
|
{
|
||||||
|
if ( i != j ) e(1);
|
||||||
|
if ( i != k ) e(2);
|
||||||
|
if ( j != k ) e(3);
|
||||||
|
while ( i > j )
|
||||||
|
{
|
||||||
|
e(4);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while ( i > k )
|
||||||
|
{
|
||||||
|
e(5);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while ( j != k )
|
||||||
|
{
|
||||||
|
e(6);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch(i)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
switch(j)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
switch(k)
|
||||||
|
{
|
||||||
|
case 0: if ( i+j+k != 0 ) e(7);
|
||||||
|
break;
|
||||||
|
e(8);
|
||||||
|
default: if ( i+j+k != k ) e(9);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: if ( j > 6 ) e(10);
|
||||||
|
if ( k != j ) e(11);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
case 4:
|
||||||
|
case 5: break;
|
||||||
|
default: e(12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ( i=j= -3; i<0; i++,j++)
|
||||||
|
if ( j == -3 )
|
||||||
|
do
|
||||||
|
if ( i )
|
||||||
|
switch ( i )
|
||||||
|
{
|
||||||
|
case -3: if ( j != i ) e(13);
|
||||||
|
case -2: if ( j != i ) e(14);
|
||||||
|
case -1: for ( k=i; k < 2*j-j; k++)
|
||||||
|
{
|
||||||
|
e(15);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0: e(16);
|
||||||
|
break;
|
||||||
|
default: e(17);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else e(18);
|
||||||
|
while ( 0 );
|
||||||
|
if ( i != j ) e(19);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test8()
|
||||||
|
{
|
||||||
|
int *p1, *p2;
|
||||||
|
int i,j,k;
|
||||||
|
int a1[1], a2[2][2], a3[3][3][3];
|
||||||
|
|
||||||
|
t = 8;
|
||||||
|
tct++;
|
||||||
|
a1[0] = 0;
|
||||||
|
for ( i=0; i<2; i++ )
|
||||||
|
for ( j=0; j<2; j++ )
|
||||||
|
a2[i][j] = (i*j) ^ (i+j);
|
||||||
|
if ( a2[0][0] != 0 ) e(1);
|
||||||
|
if ( a2[0][1] != 1 ) e(2);
|
||||||
|
if ( a2[1][0] != a2[0][1] ) e(3);
|
||||||
|
for ( i=0; i<3; i++)
|
||||||
|
for (j=0; j<3; j++)
|
||||||
|
for (k=0; k<3; k++)
|
||||||
|
a3[i][j][k] = i | j | k;
|
||||||
|
if ( a3[0][0][0] != 0 ) e(4);
|
||||||
|
if ( a3[0][1][2] != a3[2][0][1] ) e(5);
|
||||||
|
if ( a3[2][1][1] != (2 | 1 | 1) ) e(6);
|
||||||
|
p2 = &a3[0][1][2];
|
||||||
|
p1 = &a3[0][1][2];
|
||||||
|
for ( ; p1 == p2 ; p1++ )
|
||||||
|
{
|
||||||
|
switch ( *p1 )
|
||||||
|
{
|
||||||
|
case 3: break;
|
||||||
|
default: e(7);
|
||||||
|
}
|
||||||
|
if ( *p1 != *p2 ) e(8);
|
||||||
|
}
|
||||||
|
}
|
1
lang/cem/ctest/ctest2/t7.cem.g
Normal file
1
lang/cem/ctest/ctest2/t7.cem.g
Normal file
|
@ -0,0 +1 @@
|
||||||
|
End of test program, 8 test(s) completed, 0 errors detected
|
1
lang/cem/ctest/ctest3/run
Executable file
1
lang/cem/ctest/ctest3/run
Executable file
|
@ -0,0 +1 @@
|
||||||
|
make "P=test2" -fsk ../makefile ${1-gen}
|
459
lang/cem/ctest/ctest3/test2.c
Normal file
459
lang/cem/ctest/ctest3/test2.c
Normal file
|
@ -0,0 +1,459 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This program can be used to test C-compilers */
|
||||||
|
|
||||||
|
|
||||||
|
int t, ect, tct;
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************/
|
||||||
|
/*
|
||||||
|
* Testing basic function calls
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
tct = 0;
|
||||||
|
ect = 0;
|
||||||
|
test1();
|
||||||
|
test2();
|
||||||
|
test3();
|
||||||
|
test4();
|
||||||
|
test5();
|
||||||
|
test6();
|
||||||
|
printf("End of test program, %d tests completed, %d errors detected\n",
|
||||||
|
tct,ect);
|
||||||
|
return 0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
e(n)
|
||||||
|
int n;
|
||||||
|
{
|
||||||
|
ect++;
|
||||||
|
printf("Error %d in test%d \n",n,t);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
one()
|
||||||
|
{
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
two()
|
||||||
|
{
|
||||||
|
return(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
three()
|
||||||
|
{
|
||||||
|
return(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
four()
|
||||||
|
{
|
||||||
|
return(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
five()
|
||||||
|
{
|
||||||
|
return(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
plus()
|
||||||
|
{
|
||||||
|
return ( one() + two() + three() + four() + five() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
multipl()
|
||||||
|
{
|
||||||
|
return( one() * two() * three() * four() * five() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
subtr()
|
||||||
|
{
|
||||||
|
return( - one() - two() - three() - four() - five() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test1()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
t = 1;
|
||||||
|
tct++;
|
||||||
|
if ( one() != 1 ) e(1);
|
||||||
|
if ( two() != 2 ) e(2);
|
||||||
|
if ( three() != 3 ) e(3);
|
||||||
|
if ( four() != 4 ) e(4);
|
||||||
|
if ( five() != 5 ) e(5);
|
||||||
|
if ( (one() + two()) != 3 ) e(6);
|
||||||
|
if ( ((((((one() + two())))))) != 3) e(7);
|
||||||
|
if ( (one() * three()) != 3) e(8);
|
||||||
|
if (( (four() + three()) * two()) != 14) e(9);
|
||||||
|
if ( (four() + four()) != (two() * four()) ) e(10);
|
||||||
|
if ( (four() - four()) / three() ) e(11);
|
||||||
|
if (( four() + 3 * 12 - ( one() * two() * 2 ) ) != 36 ) e(12);
|
||||||
|
if ( one() & two() & four() & three() ) e(13);
|
||||||
|
if ( !( three() && two() ) ) e(14);
|
||||||
|
for (i=0; i<8; i++)
|
||||||
|
{
|
||||||
|
count = one() + two() + three() + four();
|
||||||
|
count = count * one();
|
||||||
|
count = count * two() - one() - two() - three() - four();
|
||||||
|
}
|
||||||
|
if (count != 10) e(15);
|
||||||
|
if ( !one() ) e(16);
|
||||||
|
if ( plus() != 15 ) e(17);
|
||||||
|
if ( multipl() != 120 ) e(18);
|
||||||
|
if ( subtr() != -15 ) e(19);
|
||||||
|
if ( -subtr() != plus() ) e(18);
|
||||||
|
if ( -subtr() != plus() ) e(21);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo(a)
|
||||||
|
int a;
|
||||||
|
{
|
||||||
|
return ( a );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
min(a,b)
|
||||||
|
int a,b;
|
||||||
|
{
|
||||||
|
if ( a < b )
|
||||||
|
return(a);
|
||||||
|
return(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
max1(a,b)
|
||||||
|
int a,b;
|
||||||
|
{
|
||||||
|
if ( a < b )
|
||||||
|
return(b);
|
||||||
|
return(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
max2(a,b)
|
||||||
|
int a,b;
|
||||||
|
{
|
||||||
|
return ( ( a < b ? b : a ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test2()
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
int a,b;
|
||||||
|
|
||||||
|
t = 2;
|
||||||
|
tct++;
|
||||||
|
if ( echo(1) != 1 ) e(1);
|
||||||
|
if ( echo(3) != 3 ) e(2);
|
||||||
|
if ( echo(0) ) e(3);
|
||||||
|
if ( echo(2) + echo(3) != echo(5) ) e(4);
|
||||||
|
if ( echo( 2 + 3 ) != 5 ) e(5);
|
||||||
|
if ( echo ( 1 + 2 + 3 + 4 + 5 ) != 10 + echo(5) ) e(6);
|
||||||
|
if (( echo( 2<<1 ) ) != 4 ) e(7);
|
||||||
|
if ( echo( 2 >> 1 ) != 1 ) e(8);
|
||||||
|
if ( echo( 1 << 4 ) != echo( 2 << 3 ) ) e(9);
|
||||||
|
if ( echo( echo(4) ) != echo(4) ) e(10);
|
||||||
|
if (( echo ( echo ( echo( echo ( echo ( 3 ) ) ) ) ) ) != 3 ) e(11);
|
||||||
|
if ( echo( echo( echo(2+3-4+echo(4)*echo(2))) ) != 9 ) e(12);
|
||||||
|
if ( min(1,2) != 1) e(13);
|
||||||
|
if (min(0,45) != 0) e(14);
|
||||||
|
if (min(45,0) != 0) e(15);
|
||||||
|
if (min(-72,-100) != -100) e(16);
|
||||||
|
if (min(-100,-72) != -100) e(17);
|
||||||
|
if (min(1<<3,2<<3) != (1<<3) ) e(18);
|
||||||
|
if ( min( echo(3), echo(3) ) != echo (echo(3)) ) e(19);
|
||||||
|
if ( max1('a','b') != 'b' ) e(20);
|
||||||
|
if ( max1('b','a') != 'b' ) e(21);
|
||||||
|
if ( max1(-3,54+2) != ( -3 < 54+2 ? 54+2 : -3 ) ) e(22);
|
||||||
|
if (max1('a'+'b'+34,'a'*2) != max2('a'*2,'a'+'b'+34)) e(23);
|
||||||
|
if (max1(345/23,4) != max1( echo(345/23), 4) ) e(24);
|
||||||
|
if ( max1( max1(2,3), max1(2,3) ) != max1(2,3) ) e(25);
|
||||||
|
for (i=3; i<5; i++)
|
||||||
|
if ((max1(i,-i)) != i) e(26);
|
||||||
|
for (j=min('a',34); j<max2('a',34); j++)
|
||||||
|
{
|
||||||
|
if ( j<min(max1('a',34),min('a',34)) ) e(27);
|
||||||
|
if ( j>max1(min(34,'a'),max2(34,'a')) ) e(28);
|
||||||
|
}
|
||||||
|
a=b= -32768;
|
||||||
|
if ( min(echo(a),a) != a) e(29);
|
||||||
|
if ( max1(echo(b),max1(b,b)) != b) e(30);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sum(k)
|
||||||
|
int k;
|
||||||
|
{
|
||||||
|
if (k<=0)
|
||||||
|
return(0);
|
||||||
|
return(k+sum(k-1));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
formula(k)
|
||||||
|
int k;
|
||||||
|
{
|
||||||
|
if (k<=0)
|
||||||
|
return(0);
|
||||||
|
return ( ((((( (k*(k+1))/2 ))))) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test3()
|
||||||
|
{
|
||||||
|
int k;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
t = 3;
|
||||||
|
tct++;
|
||||||
|
count=0;
|
||||||
|
if ( sum(-4) != 0 ) e(1);
|
||||||
|
if ( sum(0) != 0 ) e(2);
|
||||||
|
if ( sum(2) != 3 ) e(3);
|
||||||
|
if ( sum(10) != 55 ) e(4);
|
||||||
|
if ( sum(34) != formula(34) ) e(5);
|
||||||
|
if ( sum(101) != formula(101) ) e(6);
|
||||||
|
if ( sum( sum(11) ) != formula( formula(11) ) ) e(7);
|
||||||
|
if ( sum( sum(11) ) != formula( sum(11) ) ) e(8);
|
||||||
|
if ( sum( sum( sum(4) )) != sum ( formula ( sum( 4) )) ) e(9);
|
||||||
|
for (k = sum(-45); k<sum('a'); k += sum('b') )
|
||||||
|
if (count++) e(10);
|
||||||
|
if ( echo( sum ( formula( five() ))) != formula ( sum(5) ) ) e(11);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test4()
|
||||||
|
{
|
||||||
|
int i,j,k,l,m;
|
||||||
|
int a[50];
|
||||||
|
int b[1][2][3][4][5];
|
||||||
|
|
||||||
|
t = 4;
|
||||||
|
tct++;
|
||||||
|
b[0][1][2][3][4] = one();
|
||||||
|
if ( b[0][1][2][3][4] != 1) e(1);
|
||||||
|
if ( b[0][one()][two()][three()][four()] != 1) e(2);
|
||||||
|
if ( b[0][one()][five()-3][one()+2][four()] != b[0][1][2][2*2-1][4]) e(3);
|
||||||
|
for (i=0; i<50; i++)
|
||||||
|
a[i] = i+1;
|
||||||
|
if (a[one()-1] != one()) e(4);
|
||||||
|
if (echo(a[4]) != 5) e(5);
|
||||||
|
if ( echo( a[ echo(6) ] ) != 7 ) e(6);
|
||||||
|
if ( a[a[a[0]]] != 3 ) e(7);
|
||||||
|
for (i=11; i<22; i++)
|
||||||
|
if ( echo( a[i+echo('b'-'a'-1)] ) != i+1) e(8);
|
||||||
|
for (i=0; i<1; i++)
|
||||||
|
for (j=0; j<2; j++)
|
||||||
|
for (k=0; k<3; k++)
|
||||||
|
for (l=0; l<4; l++)
|
||||||
|
for (m=0; m<5; m++)
|
||||||
|
b[echo(i)][echo(j)][echo(k)][l][echo(m)] = j*k*l*m;
|
||||||
|
for (i=3; i; --i)
|
||||||
|
for (j=4; j; --j)
|
||||||
|
if (b[0][max1( max1(0,0), 1)][2][i][j] != 1*2*echo(i)*j ) e(9);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* More testing */
|
||||||
|
|
||||||
|
|
||||||
|
func(sw,i)
|
||||||
|
int sw; /* switch selector */
|
||||||
|
int i; /* value to be returned */
|
||||||
|
{
|
||||||
|
int a[10];
|
||||||
|
|
||||||
|
switch(sw)
|
||||||
|
{
|
||||||
|
case 0: return(-i);
|
||||||
|
break;
|
||||||
|
case 1: return ( echo(i*i) - (i-1)*i );
|
||||||
|
break;
|
||||||
|
case 2: return ( 2*func(0,i) );
|
||||||
|
break;
|
||||||
|
case 3: a[0] = 3;
|
||||||
|
a[3] = 1;
|
||||||
|
a[1] = 8;
|
||||||
|
a[8] = i;
|
||||||
|
return( 3*a[a[a[a[0]]]] );
|
||||||
|
}
|
||||||
|
return(-32768);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* testing function arguments */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
f1(i,j)
|
||||||
|
int i,j;
|
||||||
|
{
|
||||||
|
return( i!=j );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
f2(ptr)
|
||||||
|
int *ptr;
|
||||||
|
{
|
||||||
|
int *locptr;
|
||||||
|
|
||||||
|
locptr = ptr;
|
||||||
|
return ( *ptr | *locptr );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
swap(a,b)
|
||||||
|
int *a,*b;
|
||||||
|
{
|
||||||
|
int temp;
|
||||||
|
|
||||||
|
temp = *a;
|
||||||
|
*a = *b;
|
||||||
|
*b = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test5()
|
||||||
|
{
|
||||||
|
int k,l;
|
||||||
|
int *ptr;
|
||||||
|
|
||||||
|
t = 5;
|
||||||
|
tct++;
|
||||||
|
for (k = -6353; k < -6003; k++)
|
||||||
|
if (f1(k,k+3-echo(3))) e(1);
|
||||||
|
k = 'a' - 723;
|
||||||
|
ptr = &k;
|
||||||
|
if ( f2(ptr) != f2(&k) ) e(3);
|
||||||
|
if ( f2(ptr) + f2(&k) != 2*k ) e(4);
|
||||||
|
if ( f1(*ptr,*ptr) ) e(5);
|
||||||
|
if ( f1(*ptr,k) ) e(6);
|
||||||
|
if ( f1( f2(&k), *ptr ) ) e(7);
|
||||||
|
k = l=28;
|
||||||
|
swap(&k,&l);
|
||||||
|
if ( k != l ) e(8);
|
||||||
|
*ptr = k;
|
||||||
|
swap(&k,ptr);
|
||||||
|
if ( k != *ptr ) e(9);
|
||||||
|
l = -5;
|
||||||
|
k = 'h';
|
||||||
|
ptr = &k;
|
||||||
|
swap(ptr,&l);
|
||||||
|
if ( l != 'h' ) e(10);
|
||||||
|
if ( k != -5 ) e(11);
|
||||||
|
if ( *ptr != -5 ) e(12);
|
||||||
|
if ( ptr != &k ) e(13);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
icount(i)
|
||||||
|
int i;
|
||||||
|
{
|
||||||
|
return(i+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test6()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
tct++;
|
||||||
|
t=6;
|
||||||
|
for (i=0; i<10; i++)
|
||||||
|
if (func(0,i) != -i) e(i);
|
||||||
|
for (i=10; i<20; i++)
|
||||||
|
if ( -func(2,i) != 2*i) e(i);
|
||||||
|
if (func(func(0,0),0) != 0) e(20);
|
||||||
|
if (func(-func(0,1),32) != 32) e(21);
|
||||||
|
if (max1(32767,10) != max2(32767,10)) e(22);
|
||||||
|
if (func(3,10) != 30) e(22);
|
||||||
|
if (icount(1)!=2) e(23);
|
||||||
|
if (icount(2)!=3) e(24);
|
||||||
|
if (icount(32766) != 32767) e(25);
|
||||||
|
if (icount((int)-32768) != -32767) e(26);
|
||||||
|
if (icount(icount(1)) != 3) e(27);
|
||||||
|
if ( icount( (int)&i ) != (int)&i + 1 ) e(28) ;
|
||||||
|
if (icount(icount(icount(icount(icount(icount(icount(icount(0))))))))!=8) e(29);
|
||||||
|
}
|
1
lang/cem/ctest/ctest3/test2.cem.g
Normal file
1
lang/cem/ctest/ctest3/test2.cem.g
Normal file
|
@ -0,0 +1 @@
|
||||||
|
End of test program, 6 tests completed, 0 errors detected
|
1
lang/cem/ctest/ctest5/run
Normal file
1
lang/cem/ctest/ctest5/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=test1" -fsk ../makefile ${1-gen}
|
431
lang/cem/ctest/ctest5/test1.c
Normal file
431
lang/cem/ctest/ctest5/test1.c
Normal file
|
@ -0,0 +1,431 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This program can be used to test C-compilers */
|
||||||
|
|
||||||
|
int i,j,k,l,m,ect,pct,t,*p1;
|
||||||
|
int a1[20];
|
||||||
|
float a2[20],xf,yf,zf;
|
||||||
|
double a3[20],xd,yd,zd;
|
||||||
|
|
||||||
|
char alstr[3000] ;
|
||||||
|
char *alptr = alstr ;
|
||||||
|
|
||||||
|
struct tp2
|
||||||
|
{ char c1;
|
||||||
|
int i,j;
|
||||||
|
float aaa;
|
||||||
|
double bbb;
|
||||||
|
} r1,r2,*p3;
|
||||||
|
|
||||||
|
struct node
|
||||||
|
{ int val;
|
||||||
|
struct node *next;
|
||||||
|
} *head,*tail,*p2;
|
||||||
|
|
||||||
|
main()
|
||||||
|
{ ect = 0; pct = 0;
|
||||||
|
test1();test2();test3();
|
||||||
|
test4();test5();test6();
|
||||||
|
test7();test8();test9();
|
||||||
|
test10();test11();
|
||||||
|
printf("program test1\n");
|
||||||
|
printf("%d tests completed. Number of errors = %d\n",pct,ect);
|
||||||
|
return 0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *alloc(size) {
|
||||||
|
register char *retval ;
|
||||||
|
|
||||||
|
retval=alptr ;
|
||||||
|
alptr += size ;
|
||||||
|
if ( alptr-alstr>sizeof alstr ) {
|
||||||
|
printf("allocation overflow\n") ;
|
||||||
|
exit(8) ;
|
||||||
|
}
|
||||||
|
return(retval) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int abs(a) int a ; { return ( a<0 ? -a : a) ; }
|
||||||
|
double fabs(a) double a ; { return( a<0 ? -a : a) ; }
|
||||||
|
|
||||||
|
e(n)
|
||||||
|
{ ect++; printf("error %d in test %d \n",n,t);
|
||||||
|
}
|
||||||
|
|
||||||
|
inc(n)
|
||||||
|
{ return(++n);}
|
||||||
|
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
test1()
|
||||||
|
/*arithmetic on constants */
|
||||||
|
{ t = 1; pct++;
|
||||||
|
if (1+1 != 2) e(1);
|
||||||
|
if (3333 + 258 != 3591) e(2);
|
||||||
|
if (3*4 != 12) e(3);
|
||||||
|
if (111*111 != 12321) e(4);
|
||||||
|
if (50 / 5 != 10) e(5);
|
||||||
|
if (7498 / 75 != 99) e(6);
|
||||||
|
if (456 - 345 != 111) e(7);
|
||||||
|
if (1+(-2) != -1) e(8);
|
||||||
|
if (-3 * -4 != 12) e(9);
|
||||||
|
if (-2 / 2 != -1) e(10);
|
||||||
|
if (-5 / 1 != -5 ) e(11);
|
||||||
|
if (-4 - -5 != 1) e(12);
|
||||||
|
if ( 03 + 02 != 05) e(13);
|
||||||
|
if ( 03456 + 88 != 03606 ) e(14);
|
||||||
|
if ( 0100 * 23 != 02700 ) e(15);
|
||||||
|
if ( 045 / 020 != 2) e(16);
|
||||||
|
if (0472 - 0377 != 073 ) e(17);
|
||||||
|
if ('a' + 3 != 100) e(18);
|
||||||
|
if ('a' + 'c' != 'b' + 'b') e(19);
|
||||||
|
if ( 'z' * 'z' != 14884 ) e(20);
|
||||||
|
if ( -'z' / 01 != -'z' ) e(21);
|
||||||
|
if ( 077777 >> 3 != 07777 ) e(22);
|
||||||
|
if ( 077777 >> 15 ) e(23);
|
||||||
|
if ( 234 << 6 != 234 >> -6 ) e(24);
|
||||||
|
if ( 0124 & 07765 != 0124 ) e(25);
|
||||||
|
if ( 34 & 31 != 2 ) e(26);
|
||||||
|
if ( ( -4 | 3 ) != -1 ) e(27);
|
||||||
|
if ( ( 5 | 013 | 020 ) != 31 ) e(28);
|
||||||
|
if ( ( -7 ^ 3 ) != -6 ) e(29);
|
||||||
|
if ( ( 07373 ^ 4632 ) != 016343 ) e(30);
|
||||||
|
if ( (1+2+3)*(2+3+4)*(3+5+5) / 2 != ((3*((5+3+2)*10)+51)*6)/6 ) e(31);
|
||||||
|
if ( (1000*2+5*7+13)/ 8 != 2*2*2*2*4*4 ) e(32);
|
||||||
|
if ((1*2*3*4*5*6*7 / 5040 !=
|
||||||
|
5040 / 7 / 6 / 5 / 4 / 3 / 2 / 1 )) e(33);
|
||||||
|
if ( -(-(-(-(-(-(1)))))) != 1 ) e(34);
|
||||||
|
if (- 1 != -((((((((((1)))))))))) ) e(35);
|
||||||
|
if ( -1-1-1-1-1-1 != -6-3+3 ) e(36);
|
||||||
|
if ( -4 * -5 != 20 ) e(37);
|
||||||
|
if ( 2<1 ) e(38);
|
||||||
|
if ( 2<= 1 ) e(39);
|
||||||
|
if ( 2==3 ) e(40);
|
||||||
|
if ( 2 != 2 ) e(41);
|
||||||
|
if ( 2 >= 3) e(42);
|
||||||
|
if ( 2 > 3 ) e(43);
|
||||||
|
if (2 + 0 != 2 ) e(44);
|
||||||
|
if (2 - 0 != 2 ) e(45);
|
||||||
|
if (2 * 0 != 0 ) e(46);
|
||||||
|
if ( 0 / 1 != 0 ) e(47);
|
||||||
|
if ( -0 != 0 ) e(48);
|
||||||
|
if ( 0 * 0 != 0 ) e(49);
|
||||||
|
if ( 32767 > 32767 ) e(50);
|
||||||
|
if ( 0456 < 0400 ) e(51);
|
||||||
|
if ( 0456 != ( 0400 | 050 | 06 ) ) e(52);
|
||||||
|
if ( 2*2<<2*2/4 != 010 ) e(53);
|
||||||
|
if ( 0 || 0 ) e(54);
|
||||||
|
if ( 1 && 0 ) e(55);
|
||||||
|
if ( ( 123 ? 123 * 4 :345) != 492 ) e(56);
|
||||||
|
if ( ( 0 ? 345 : 280) != 280 ) e(57);
|
||||||
|
if ( ( (2*2/2<<2)|(2/2) ) != 9 ) e(58);
|
||||||
|
if ( !( 111 || 23 && 0 ) ) e(59);
|
||||||
|
if ( !1 ) e(60);
|
||||||
|
if ( !0 == 0 ) e(61);
|
||||||
|
if ( !!!!!!!!0 ) e(62);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
test2()
|
||||||
|
/*arithmetic on global integer variables*/
|
||||||
|
{ t = 2; pct++;
|
||||||
|
i = 1; j = 2; k = 3; l = 4; m = 10;
|
||||||
|
if ( i+j != k ) e(1);
|
||||||
|
if ( i+k != l ) e(2);
|
||||||
|
if ( j-k != -i ) e(3);
|
||||||
|
if ( j*(j + k) != m ) e(4);
|
||||||
|
if ( -m != -(k+k+l) ) e(5);
|
||||||
|
if ( i / i != 1 ) e(6);
|
||||||
|
if ( m*m / m != m ) e(7);
|
||||||
|
if ( 10 * m != 100 ) e(8);
|
||||||
|
if ( m * (-10) != -100 ) e(9);
|
||||||
|
if ( j / k != 0 ) e(10);
|
||||||
|
if ( 100 / k != 33 ) e(11);
|
||||||
|
if ( i+j*k+l+m / j + 50 / k != 32 ) e(12);
|
||||||
|
if ( j*k*m / 6 != 10 ) e(13);
|
||||||
|
if ( (k>4) || (k>=4) || (k==4) ) e(14);
|
||||||
|
if ( (m<j) || (m<=j) || (m==j) ) e(15);
|
||||||
|
if ( i+j-k ) e(16);
|
||||||
|
if ( j<i ) e(17);
|
||||||
|
if ( j != j ) e(18);
|
||||||
|
if ( i > j ) e(19);
|
||||||
|
if ( (i > j ? k : k*j ) != 6 ) e(20);
|
||||||
|
if ( (i < j ? k : k*j ) != 3 ) e(21);
|
||||||
|
if ( j<<i != l ) e(22);
|
||||||
|
if ( j>> -i != l ) e(23);
|
||||||
|
if ( j<< -i != i ) e(24);
|
||||||
|
if ( j>> i != i ) e(25);
|
||||||
|
if ( i++ != 1 ) e(26);
|
||||||
|
if ( --i != 1 ) e(27);
|
||||||
|
if ( i-- != 1 ) e(28);
|
||||||
|
if ( ( i+j ) && ( i<0 ) || (m-10) && (064) ) e(29);
|
||||||
|
if ( ( i+j ) && !(i>=0) || (m-10) && !( 0 ) ) e(30);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
test3()
|
||||||
|
/*arithmetic on local integer variables*/
|
||||||
|
{ int a,b,c,d,f;
|
||||||
|
t = 3; pct++;
|
||||||
|
a = 1; b = 2; c = 3; d = 4; f = 10;
|
||||||
|
if ( a+b != c ) e(1);
|
||||||
|
if ( a+c != d ) e(2);
|
||||||
|
if ( b-c != -a ) e(3);
|
||||||
|
if ( b*(b + c) != f ) e(4);
|
||||||
|
if ( -f != -(c+c+d) ) e(5);
|
||||||
|
if ( a / a != 1 ) e(6);
|
||||||
|
if ( f*f / f != f ) e(7);
|
||||||
|
if ( 10 * f != 100 ) e(8);
|
||||||
|
if ( f * (-10) != -100 ) e(9);
|
||||||
|
if ( b / c != 0 ) e(10);
|
||||||
|
if ( 100 / c != 33 ) e(11);
|
||||||
|
if ( a+b*c+d+f / b + 50 / c != 32 ) e(12);
|
||||||
|
if ( b*c*f / 6 != 10 ) e(13);
|
||||||
|
if ( (c>4) || (c>=4) || (c==4) ) e(14);
|
||||||
|
if ( (f<b) || (f<=b) || (f==b) ) e(15);
|
||||||
|
if ( c != a+b ) e(16);
|
||||||
|
if ( b<a ) e(17);
|
||||||
|
if ( b != b ) e(18);
|
||||||
|
if ( a > b ) e(19);
|
||||||
|
if ( (a > b ? c : c*b ) != 6 ) e(20);
|
||||||
|
if ( (a < b ? c : c*b ) != 3 ) e(21);
|
||||||
|
if ( b<<a != d ) e(22);
|
||||||
|
if ( b>> -a != d ) e(23);
|
||||||
|
if ( b<< -a != a ) e(24);
|
||||||
|
if ( b>> a != a ) e(25);
|
||||||
|
if ( a++ != 1 ) e(26);
|
||||||
|
if ( --a != 1 ) e(27);
|
||||||
|
if ( a-- != 1 ) e(28);
|
||||||
|
if ( ( a+b ) && ( a<0 ) || (f-10) && (064) ) e(29);
|
||||||
|
if ( ( a+b ) && !(a>=0) || (f-10) && !( 0 ) ) e(30);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************/
|
||||||
|
|
||||||
|
test4()
|
||||||
|
/* global arrays */
|
||||||
|
{ float epsf;
|
||||||
|
double epsd;
|
||||||
|
t=4; pct++; epsf = 1e-7; epsd = 1e-17;
|
||||||
|
for ( i=0; i<20 ; i++ ) a1[i] = i*i;
|
||||||
|
if ( a1[9] != 81 || a1[17] != 289 || a1[0] != 0 ) e(1);
|
||||||
|
if ( a1[1] + a1[2] + a1[3] != 14 ) e(2);
|
||||||
|
if ( ! a1[15] ) e(3);
|
||||||
|
if ( a1[8] / a1[4] != 4 ) e(4);
|
||||||
|
for ( i=0; i<20; i++ ) a2[i] = 10.0e-1 + i/54.324e-1;
|
||||||
|
if ( fabs(a2[4]*a2[4]-a2[4]*(10.0e-1 + 4/54.324e-1 ) ) > epsf ) e(5);
|
||||||
|
if ( fabs(a2[8]/a2[8]*a2[9]/a2[9]-a2[10]+a2[10]-1.0 ) > epsf ) e(6);
|
||||||
|
if ( fabs(a2[5]-a2[4]-1/54.324e-1 ) > epsf ) e(7);
|
||||||
|
for ( i=0; i<20; i++ ) a3[i]= 10.0e-1 + i/54.324e-1;
|
||||||
|
if ( fabs(a3[4]*a3[4]-a3[4]*(1.0e0+4/54.324e-1 )) > epsd ) e(8);
|
||||||
|
if ( fabs( a3[8]*a3[9]/a3[8]/a3[9]-a3[10]+a3[10]-1000e-3) > epsd ) e(9);
|
||||||
|
if ( fabs(a3[8]+a3[6]-2*a3[7]) > epsd ) e(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************************************************/
|
||||||
|
|
||||||
|
test5()
|
||||||
|
/* real arithmetic */
|
||||||
|
{
|
||||||
|
double epsd; float epsf;
|
||||||
|
t = 5; pct++; epsf = 1e-7; epsd = 1e-17;
|
||||||
|
xf = 1.50 ; yf = 3.00 ; zf = 0.10;
|
||||||
|
xd = 1.50 ; yd = 3.00 ; zd = 0.10;
|
||||||
|
if ( fabs(1.0 + 1.0 - 2.0 ) > epsd ) e(1);
|
||||||
|
if ( fabs( 1e10-1e10 ) > epsd ) e(2);
|
||||||
|
if ( abs( 1.0e+5*1.0e+5-100e+8 ) > epsd ) e(3);
|
||||||
|
if ( fabs( 10.0/3.0*3.0/10.0-100e-2 ) > epsd ) e(4);
|
||||||
|
if ( 0.0e0 != 0 ) e(5);
|
||||||
|
if ( fabs( 32767.0 - 32767 ) > epsd ) e(6);
|
||||||
|
if ( fabs( 1.0+2+5+3.0e0+7.5e+1+140e-1-100.0 ) > epsd ) e(7);
|
||||||
|
if ( fabs(-1+(-1)+(-1.0)+(-1.0e0)+(-1.0e-0)+(-1e0)+6 ) > epsd ) e(8);
|
||||||
|
if ( fabs(5.0*yf*zf-xf) > epsf ) e(9);
|
||||||
|
if ( fabs(5.0*yd*zd-xd) > epsd ) e(10);
|
||||||
|
if ( fabs(yd*yd - (2.0*xd)*(2.0*xd) ) > epsd ) e(11);
|
||||||
|
if ( fabs(yf*yf - (2.0*xf)*(2.0*xf) ) > epsf ) e(12);
|
||||||
|
if ( fabs( yd*yd+zd*zd+2.0*yd*zd-(yd+zd)*(zd+yd) ) > epsd ) e(13);
|
||||||
|
if ( fabs( yf*yf+zf*zf+2.0*yf*zf-(yf+zf)*(zf+yf) ) > epsf ) e(14);
|
||||||
|
xf=1.10;yf=1.20;
|
||||||
|
if ( yd<xd ) e(15);
|
||||||
|
if ( yd<=xd ) e(16);
|
||||||
|
if ( yd==xd ) e(17);
|
||||||
|
if ( xd>=yd ) e(18);
|
||||||
|
if ( yd<xd ) e(19);
|
||||||
|
if ( fabs(yd-xd-1.5) > epsd ) e(20);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************/
|
||||||
|
|
||||||
|
test6()
|
||||||
|
/* local arrays */
|
||||||
|
{ int b1[20]; float epsf, b2[20]; double b3[20],epsd;
|
||||||
|
epsf = 1e-7; epsd = 1e-17;
|
||||||
|
t = 6; pct++;
|
||||||
|
for ( i=0; i<20 ; i++ ) b1[i] = i*i;
|
||||||
|
if ( b1[9]-b1[8] != 17 ) e(1);
|
||||||
|
if ( b1[3] + b1[4] != b1[5] ) e(2);
|
||||||
|
if ( b1[1] != 1||b1[3] != 9 || b1[5] != 25 || b1[7] != 49 ) e(3);
|
||||||
|
if ( b1[12] / b1[6] != 4 ) e(4);
|
||||||
|
for ( i=0; i<20; i += 1) b2[i] = 10.0e-1+i/54.324e-1;
|
||||||
|
if (fabs(b2[4]*b2[4]-b2[4]*(10.0e-1+4/54.324e-1)) > epsf ) e(5);
|
||||||
|
if (fabs(b2[8]/b2[8]*b2[9]/b2[9]-b2[10]+b2[10]-1.0) > epsf ) e(6);
|
||||||
|
if ( fabs(b2[5]-b2[4]-1/5.4324 ) > epsf ) e(7);
|
||||||
|
for ( i=0; i<20 ; i += 1 ) b3[i] = 10.0e-1+i/54.324e-1;
|
||||||
|
if (fabs(b3[4]*b3[4]-b3[4]*(10.0e-1+4/54.324e-1)) > epsd ) e(8);
|
||||||
|
if (fabs(b3[8]*b3[9]/b3[8]/b3[9]+b3[10]-b3[10]-1.0) > epsd ) e(9);
|
||||||
|
if (fabs(b3[10]+b3[18]-2*b3[14]) > epsd ) e(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test7()
|
||||||
|
/* mixed local and global */
|
||||||
|
{ int li,b1[20];
|
||||||
|
double b3[10],xxd,epsd;
|
||||||
|
t = 7; pct++;epsd = 1e-17;
|
||||||
|
li = 6; i = li ;
|
||||||
|
if ( i != 6 ) e(1);
|
||||||
|
i = 6; li = i;
|
||||||
|
if ( i != li ) e(2);
|
||||||
|
if ( i % li ) e(3);
|
||||||
|
i=li=i=li=i=li=i=i=i=li=j;
|
||||||
|
if ( i != li || i != j ) e(4);
|
||||||
|
for ( i=li=0; i<20 ; i=li ) { b1[li]= (li+1)*(i+1) ; li++; }
|
||||||
|
if ( b1[9] != a1[10] ) e(5);
|
||||||
|
if ( b1[7]/a1[4] != a1[2] ) e(6);
|
||||||
|
li = i = 121;
|
||||||
|
if ( b1[10] != i && a1[11]!= li ) e(7);
|
||||||
|
for ( li=0 ; li<10; li++ ) b3[li]= 1.0e0 + li/54.324e-1;
|
||||||
|
if ( fabs(b3[9]-a3[9]) > epsd ) e(8);
|
||||||
|
if ( fabs(8/54.324e-1 - b3[9]+a3[1] ) > epsd ) e(9);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
test8()
|
||||||
|
/*global records */
|
||||||
|
{ t=8; pct++;
|
||||||
|
r1.c1= 'x';r1.i=40;r1.j=50;r1.aaa=3.0;r1.bbb=4.0;
|
||||||
|
r2.c1=r1.c1;
|
||||||
|
r2.i= 50;
|
||||||
|
r2.j=40;r2.aaa=4.0;r2.bbb=5.0;
|
||||||
|
if (r1.c1 != 'x' || r1.i != 40 || r1.aaa != 3.0 ) e(1);
|
||||||
|
i = 25;j=75;
|
||||||
|
if (r1.i != 40 || r2.i != 50 ) e(2);
|
||||||
|
if ( r2.j != 40 || r1.j != 50 ) e(3);
|
||||||
|
if ( (r1.c1 + r2.c1)/2 != 'x' ) e(4);
|
||||||
|
if ( r1.aaa*r1.aaa+r2.aaa*r2.aaa != r2.bbb*r2.bbb) e(5);
|
||||||
|
r1.i = 34; if ( i!=25 ) e(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
test9()
|
||||||
|
/*local records */
|
||||||
|
{ struct tp2 s1,s2;
|
||||||
|
t=9; pct++;
|
||||||
|
s1.c1= 'x';s1.i=40;s1.j=50;s1.aaa=3.0;s1.bbb=4.0;
|
||||||
|
s2.c1=s1.c1;
|
||||||
|
s2.i= 50;
|
||||||
|
s2.j=40;s2.aaa=4.0;s2.bbb=5.0;
|
||||||
|
if (s1.c1 != 'x' || s1.i != 40 || s1.aaa != 3.0 ) e(1);
|
||||||
|
i = 25;j=75;
|
||||||
|
if (s1.i != 40 || s2.i != 50 ) e(2);
|
||||||
|
if ( s2.j != 40 || s1.j != 50 ) e(3);
|
||||||
|
if ( (s1.c1 + s2.c1)/2 != 'x' ) e(4);
|
||||||
|
if ( s1.aaa*s1.aaa+s2.aaa*s2.aaa != s2.bbb*s2.bbb) e(5);
|
||||||
|
s1.i = 34; if ( i!=25 ) e(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************/
|
||||||
|
test10()
|
||||||
|
/*global pointers */
|
||||||
|
{ t=10; pct++;
|
||||||
|
p1=alloc( sizeof *p1 );
|
||||||
|
p2=alloc( sizeof *p2);
|
||||||
|
p3=alloc(sizeof *p3);
|
||||||
|
*p1 = 1066;
|
||||||
|
if ( *p1 != 1066 ) e(1);
|
||||||
|
p3->i = 1215;
|
||||||
|
if ( p3->i != 1215 ) e(2);
|
||||||
|
p2->val = 1566;
|
||||||
|
if ( p2->val != 1566 || p2->next ) e(3);
|
||||||
|
if ( a1 != &a1[0] ) e(4);
|
||||||
|
p1 = a1;
|
||||||
|
if ( ++p1 != &a1[1] ) e(5);
|
||||||
|
head = 0;
|
||||||
|
for (i=0;i<=100;i += 1)
|
||||||
|
{ tail = alloc(sizeof *p2);
|
||||||
|
tail->val = 100+i;tail->next = head;
|
||||||
|
head = tail;
|
||||||
|
}
|
||||||
|
if ( tail->val != 200 || tail->next->val != 199 ) e(6);
|
||||||
|
if ( tail->next->next->next->next->next->val != 195) e(7);
|
||||||
|
tail->next->next->next->next->next->val = 1;
|
||||||
|
if ( tail->next->next->next->next->next->val != 1) e(8);
|
||||||
|
i = 27;
|
||||||
|
if ( *&i != 27 ) e(9);
|
||||||
|
if ( &*&*&*&i != &i ) e(10);
|
||||||
|
p1 = &i;i++;
|
||||||
|
if ( p1 != &i ) e(11);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************/
|
||||||
|
test11()
|
||||||
|
/*local pointers */
|
||||||
|
{ struct tp2 *pp3;
|
||||||
|
struct node *pp2,*ingang,*uitgang;
|
||||||
|
int *pp1;
|
||||||
|
int b1[20];
|
||||||
|
t=11; pct++;
|
||||||
|
pp1=alloc( sizeof *pp1 );
|
||||||
|
pp2=alloc( sizeof *p2);
|
||||||
|
pp3=alloc(sizeof *pp3);
|
||||||
|
*pp1 = 1066;
|
||||||
|
if ( *pp1 != 1066 ) e(1);
|
||||||
|
pp3->i = 1215;
|
||||||
|
if ( pp3->i != 1215 ) e(2);
|
||||||
|
pp2->val = 1566;
|
||||||
|
if ( pp2->val != 1566 || p2->next ) e(3);
|
||||||
|
if ( b1 != &b1[0] ) e(4);
|
||||||
|
pp1 = b1;
|
||||||
|
if ( ++pp1 != &b1[1] ) e(5);
|
||||||
|
ingang = 0;
|
||||||
|
for (i=0;i<=100;i += 1)
|
||||||
|
{ uitgang = alloc(sizeof *pp2);
|
||||||
|
uitgang->val = 100+i;uitgang->next = ingang;
|
||||||
|
ingang = uitgang;
|
||||||
|
}
|
||||||
|
if ( uitgang->val != 200 || uitgang->next->val != 199 ) e(6);
|
||||||
|
if ( uitgang->next->next->next->next->next->val != 195 ) e(7);
|
||||||
|
uitgang->next->next->next->next->next->val = 1;
|
||||||
|
if ( uitgang->next->next->next->next->next->val != 1) e(8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************/
|
3
lang/cem/ctest/ctest5/test1.cem.g
Normal file
3
lang/cem/ctest/ctest5/test1.cem.g
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
error 13 in test 5
|
||||||
|
program test1
|
||||||
|
11 tests completed. Number of errors = 1
|
143
lang/cem/ctest/ctgen/OPS
Normal file
143
lang/cem/ctest/ctgen/OPS
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
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 ") ; }
|
111
lang/cem/ctest/ctgen/bf.cem.g
Normal file
111
lang/cem/ctest/ctgen/bf.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
bfs.bf1 + bfs.bf2
|
||||||
|
bfs.bf1 - bfs.bf2
|
||||||
|
bfs.bf1 / bfs.bf2
|
||||||
|
bfs.bf1 % bfs.bf2
|
||||||
|
bfs.bf1 * bfs.bf2
|
||||||
|
bfs.bf1 & bfs.bf2
|
||||||
|
bfs.bf1 | bfs.bf2
|
||||||
|
bfs.bf1 ^ bfs.bf2
|
||||||
|
bfs.bf1 || bfs.bf2
|
||||||
|
bfs.bf1 && bfs.bf2
|
||||||
|
bfs.bf1 << 1
|
||||||
|
bfs.bf1 >> 1
|
||||||
|
-bfs.bf1
|
||||||
|
!bfs.bf1
|
||||||
|
~bfs.bf1
|
||||||
|
bfs.bf1 == bfs.bf2
|
||||||
|
bfs.bf1 != bfs.bf2
|
||||||
|
bfs.bf1 <= bfs.bf2
|
||||||
|
bfs.bf1 >= bfs.bf2
|
||||||
|
bfs.bf1 < bfs.bf2
|
||||||
|
bfs.bf1 > bfs.bf2
|
||||||
|
bfs.bf1 ? bfs.bf1 : bfs.bf2
|
||||||
|
bfs.bf3 = bfs.bf1 1
|
||||||
|
bfs.bf3 += bfs.bf1 0
|
||||||
|
bfs.bf3 -= bfs.bf1 254
|
||||||
|
bfs.bf3 /= bfs.bf1 255
|
||||||
|
bfs.bf3 %= bfs.bf1 0
|
||||||
|
bfs.bf3 *= bfs.bf1 255
|
||||||
|
bfs.bf3 &= bfs.bf1 1
|
||||||
|
bfs.bf3 |= bfs.bf1 255
|
||||||
|
bfs.bf3 ^= bfs.bf1 254
|
||||||
|
bfs.bf3 <<= 1 254
|
||||||
|
bfs.bf3 >>= 1 127
|
||||||
|
bfs.bf3 ++ 0
|
||||||
|
bfs.bf3 -- 254
|
||||||
|
-- bfs.bf3 254
|
||||||
|
++ bfs.bf3 0
|
||||||
|
bfs.bf4 = ( bfs.bf1 + bfs.bf2 ) 9
|
||||||
|
bfs.bf4 = ( bfs.bf1 - bfs.bf2 ) -7
|
||||||
|
bfs.bf4 = ( bfs.bf1 / bfs.bf2 ) 0
|
||||||
|
bfs.bf4 = ( bfs.bf1 % bfs.bf2 ) 1
|
||||||
|
bfs.bf4 = ( bfs.bf1 * bfs.bf2 ) 8
|
||||||
|
bfs.bf4 = ( bfs.bf1 & bfs.bf2 ) 0
|
||||||
|
bfs.bf4 = ( bfs.bf1 | bfs.bf2 ) 9
|
||||||
|
bfs.bf4 = ( bfs.bf1 ^ bfs.bf2 ) 9
|
||||||
|
bfs.bf4 = ( bfs.bf1 || bfs.bf2 ) 1
|
||||||
|
bfs.bf4 = ( bfs.bf1 && bfs.bf2 ) 1
|
||||||
|
bfs.bf4 = ( bfs.bf1 << 1 ) 2
|
||||||
|
bfs.bf4 = ( bfs.bf1 >> 1 ) 0
|
||||||
|
bfs.bf4 = ( -bfs.bf1 ) -1
|
||||||
|
bfs.bf4 = ( !bfs.bf1 ) 0
|
||||||
|
bfs.bf4 = ( ~bfs.bf1 ) -2
|
||||||
|
bfs.bf4 = ( bfs.bf1 == bfs.bf2 ) 0
|
||||||
|
bfs.bf4 = ( bfs.bf1 != bfs.bf2 ) 1
|
||||||
|
bfs.bf4 = ( bfs.bf1 <= bfs.bf2 ) 1
|
||||||
|
bfs.bf4 = ( bfs.bf1 >= bfs.bf2 ) 0
|
||||||
|
bfs.bf4 = ( bfs.bf1 < bfs.bf2 ) 1
|
||||||
|
bfs.bf4 = ( bfs.bf1 > bfs.bf2 ) 0
|
||||||
|
bfs.bf4 = ( bfs.bf1 ? bfs.bf1 : bfs.bf2 ) 1
|
||||||
|
bfs.bf4 = ( bfs.bf3 = bfs.bf1 ) 1 1
|
||||||
|
bfs.bf4 = ( bfs.bf3 += bfs.bf1 ) 0 0
|
||||||
|
bfs.bf4 = ( bfs.bf3 -= bfs.bf1 ) 254 254
|
||||||
|
bfs.bf4 = ( bfs.bf3 /= bfs.bf1 ) 255 255
|
||||||
|
bfs.bf4 = ( bfs.bf3 %= bfs.bf1 ) 0 0
|
||||||
|
bfs.bf4 = ( bfs.bf3 *= bfs.bf1 ) 255 255
|
||||||
|
bfs.bf4 = ( bfs.bf3 &= bfs.bf1 ) 1 1
|
||||||
|
bfs.bf4 = ( bfs.bf3 |= bfs.bf1 ) 255 255
|
||||||
|
bfs.bf4 = ( bfs.bf3 ^= bfs.bf1 ) 254 254
|
||||||
|
bfs.bf4 = ( bfs.bf3 <<= 1 ) 254 254
|
||||||
|
bfs.bf4 = ( bfs.bf3 >>= 1 ) 127 127
|
||||||
|
bfs.bf4 = ( bfs.bf3 ++ ) 0 255
|
||||||
|
bfs.bf4 = ( bfs.bf3 -- ) 254 255
|
||||||
|
bfs.bf4 = ( -- bfs.bf3 ) 254 254
|
||||||
|
bfs.bf4 = ( ++ bfs.bf3 ) 0 0
|
||||||
|
yes if ( bfs.bf1 + bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 - bfs.bf2 ) yes() ; else no()
|
||||||
|
no if ( bfs.bf1 / bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 % bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 * bfs.bf2 ) yes() ; else no()
|
||||||
|
no if ( bfs.bf1 & bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 | bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 ^ bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 || bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 && bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 << 1 ) yes() ; else no()
|
||||||
|
no if ( bfs.bf1 >> 1 ) yes() ; else no()
|
||||||
|
yes if ( -bfs.bf1 ) yes() ; else no()
|
||||||
|
no if ( !bfs.bf1 ) yes() ; else no()
|
||||||
|
yes if ( ~bfs.bf1 ) yes() ; else no()
|
||||||
|
no if ( bfs.bf1 == bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 != bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 <= bfs.bf2 ) yes() ; else no()
|
||||||
|
no if ( bfs.bf1 >= bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 < bfs.bf2 ) yes() ; else no()
|
||||||
|
no if ( bfs.bf1 > bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf1 ? bfs.bf1 : bfs.bf2 ) yes() ; else no()
|
||||||
|
yes if ( bfs.bf3 = bfs.bf1 ) yes() ; else no() 1
|
||||||
|
no if ( bfs.bf3 += bfs.bf1 ) yes() ; else no() 0
|
||||||
|
yes if ( bfs.bf3 -= bfs.bf1 ) yes() ; else no() 254
|
||||||
|
yes if ( bfs.bf3 /= bfs.bf1 ) yes() ; else no() 255
|
||||||
|
no if ( bfs.bf3 %= bfs.bf1 ) yes() ; else no() 0
|
||||||
|
yes if ( bfs.bf3 *= bfs.bf1 ) yes() ; else no() 255
|
||||||
|
yes if ( bfs.bf3 &= bfs.bf1 ) yes() ; else no() 1
|
||||||
|
yes if ( bfs.bf3 |= bfs.bf1 ) yes() ; else no() 255
|
||||||
|
yes if ( bfs.bf3 ^= bfs.bf1 ) yes() ; else no() 254
|
||||||
|
yes if ( bfs.bf3 <<= 1 ) yes() ; else no() 254
|
||||||
|
yes if ( bfs.bf3 >>= 1 ) yes() ; else no() 127
|
||||||
|
yes if ( bfs.bf3 ++ ) yes() ; else no() 0
|
||||||
|
yes if ( bfs.bf3 -- ) yes() ; else no() 254
|
||||||
|
yes if ( -- bfs.bf3 ) yes() ; else no() 254
|
||||||
|
no if ( ++ bfs.bf3 ) yes() ; else no() 0
|
26
lang/cem/ctest/ctgen/bf.sed
Normal file
26
lang/cem/ctest/ctgen/bf.sed
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/ISTART/c\
|
||||||
|
/* test bit fields */\
|
||||||
|
struct bfs {\
|
||||||
|
int bf1:1 ;\
|
||||||
|
int bf2:4 ;\
|
||||||
|
int bf3:8 ;\
|
||||||
|
int bf4:16 ;\
|
||||||
|
} bfs ;
|
||||||
|
s/FN/main/
|
||||||
|
/LSTART/c\
|
||||||
|
bfs.bf1=1 ; bfs.bf2=8 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 255 ; /
|
||||||
|
/Z2/s/^/Z2 = 3 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/bfs.bf1/g
|
||||||
|
s/Y/bfs.bf2/g
|
||||||
|
s/S/1/g
|
||||||
|
s/Z1/bfs.bf3/g
|
||||||
|
s/Z2/bfs.bf4/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/cel.cem.g
Normal file
111
lang/cem/ctest/ctgen/cel.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
40000 + 30000
|
||||||
|
40000 - 30000
|
||||||
|
40000 / 30000
|
||||||
|
40000 % 30000
|
||||||
|
40000 * 30000
|
||||||
|
40000 & 30000
|
||||||
|
40000 | 30000
|
||||||
|
40000 ^ 30000
|
||||||
|
40000 || 30000
|
||||||
|
40000 && 30000
|
||||||
|
40000 << 9
|
||||||
|
40000 >> 9
|
||||||
|
-40000
|
||||||
|
!40000
|
||||||
|
~40000
|
||||||
|
40000 == 30000
|
||||||
|
40000 != 30000
|
||||||
|
40000 <= 30000
|
||||||
|
40000 >= 30000
|
||||||
|
40000 < 30000
|
||||||
|
40000 > 30000
|
||||||
|
40000 ? 40000 : 30000
|
||||||
|
x = 40000 40000
|
||||||
|
x += 40000 40010
|
||||||
|
x -= 40000 -39990
|
||||||
|
x /= 40000 0
|
||||||
|
x %= 40000 10
|
||||||
|
x *= 40000 400000
|
||||||
|
x &= 40000 0
|
||||||
|
x |= 40000 40010
|
||||||
|
x ^= 40000 40010
|
||||||
|
x <<= 9 5120
|
||||||
|
x >>= 9 0
|
||||||
|
x ++ 11
|
||||||
|
x -- 9
|
||||||
|
-- x 9
|
||||||
|
++ x 11
|
||||||
|
y = ( 40000 + 30000 ) 70000
|
||||||
|
y = ( 40000 - 30000 ) 10000
|
||||||
|
y = ( 40000 / 30000 ) 1
|
||||||
|
y = ( 40000 % 30000 ) 10000
|
||||||
|
y = ( 40000 * 30000 ) 1200000000
|
||||||
|
y = ( 40000 & 30000 ) 5120
|
||||||
|
y = ( 40000 | 30000 ) 64880
|
||||||
|
y = ( 40000 ^ 30000 ) 59760
|
||||||
|
y = ( 40000 || 30000 ) 1
|
||||||
|
y = ( 40000 && 30000 ) 1
|
||||||
|
y = ( 40000 << 9 ) 20480000
|
||||||
|
y = ( 40000 >> 9 ) 78
|
||||||
|
y = ( -40000 ) -40000
|
||||||
|
y = ( !40000 ) 0
|
||||||
|
y = ( ~40000 ) -40001
|
||||||
|
y = ( 40000 == 30000 ) 0
|
||||||
|
y = ( 40000 != 30000 ) 1
|
||||||
|
y = ( 40000 <= 30000 ) 0
|
||||||
|
y = ( 40000 >= 30000 ) 1
|
||||||
|
y = ( 40000 < 30000 ) 0
|
||||||
|
y = ( 40000 > 30000 ) 1
|
||||||
|
y = ( 40000 ? 40000 : 30000 ) 40000
|
||||||
|
y = ( x = 40000 ) 40000 40000
|
||||||
|
y = ( x += 40000 ) 40010 40010
|
||||||
|
y = ( x -= 40000 ) -39990 -39990
|
||||||
|
y = ( x /= 40000 ) 0 0
|
||||||
|
y = ( x %= 40000 ) 10 10
|
||||||
|
y = ( x *= 40000 ) 400000 400000
|
||||||
|
y = ( x &= 40000 ) 0 0
|
||||||
|
y = ( x |= 40000 ) 40010 40010
|
||||||
|
y = ( x ^= 40000 ) 40010 40010
|
||||||
|
y = ( x <<= 9 ) 5120 5120
|
||||||
|
y = ( x >>= 9 ) 0 0
|
||||||
|
y = ( x ++ ) 11 10
|
||||||
|
y = ( x -- ) 9 10
|
||||||
|
y = ( -- x ) 9 9
|
||||||
|
y = ( ++ x ) 11 11
|
||||||
|
yes if ( 40000 + 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 - 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 / 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 % 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 * 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 & 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 | 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ^ 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 || 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 && 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 << 9 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >> 9 ) yes() ; else no()
|
||||||
|
yes if ( -40000 ) yes() ; else no()
|
||||||
|
no if ( !40000 ) yes() ; else no()
|
||||||
|
yes if ( ~40000 ) yes() ; else no()
|
||||||
|
no if ( 40000 == 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 != 30000 ) yes() ; else no()
|
||||||
|
no if ( 40000 <= 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >= 30000 ) yes() ; else no()
|
||||||
|
no if ( 40000 < 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 > 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ? 40000 : 30000 ) yes() ; else no()
|
||||||
|
yes if ( x = 40000 ) yes() ; else no() 40000
|
||||||
|
yes if ( x += 40000 ) yes() ; else no() 40010
|
||||||
|
yes if ( x -= 40000 ) yes() ; else no() -39990
|
||||||
|
no if ( x /= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x %= 40000 ) yes() ; else no() 10
|
||||||
|
yes if ( x *= 40000 ) yes() ; else no() 400000
|
||||||
|
no if ( x &= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x |= 40000 ) yes() ; else no() 40010
|
||||||
|
yes if ( x ^= 40000 ) yes() ; else no() 40010
|
||||||
|
yes if ( x <<= 9 ) yes() ; else no() 5120
|
||||||
|
no if ( x >>= 9 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 11
|
||||||
|
yes if ( x -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- x ) yes() ; else no() 9
|
||||||
|
yes if ( ++ x ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/cel.sed
Normal file
22
lang/cem/ctest/ctgen/cel.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for longs \
|
||||||
|
*/
|
||||||
|
/LSTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/ISTART/c\
|
||||||
|
long x=100234 , y= -301 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %D&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %D&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/40000/g
|
||||||
|
s/Y/30000/g
|
||||||
|
s/S/9/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/clu.cem.g
Normal file
111
lang/cem/ctest/ctgen/clu.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
40000 + 8012
|
||||||
|
40000 - 8012
|
||||||
|
40000 / 8012
|
||||||
|
40000 % 8012
|
||||||
|
40000 * 8012
|
||||||
|
40000 & 8012
|
||||||
|
40000 | 8012
|
||||||
|
40000 ^ 8012
|
||||||
|
40000 || 8012
|
||||||
|
40000 && 8012
|
||||||
|
40000 << 9
|
||||||
|
40000 >> 9
|
||||||
|
-40000
|
||||||
|
!40000
|
||||||
|
~40000
|
||||||
|
40000 == 8012
|
||||||
|
40000 != 8012
|
||||||
|
40000 <= 8012
|
||||||
|
40000 >= 8012
|
||||||
|
40000 < 8012
|
||||||
|
40000 > 8012
|
||||||
|
40000 ? 40000 : 8012
|
||||||
|
x = 40000 -25536
|
||||||
|
x += 40000 -25526
|
||||||
|
x -= 40000 25546
|
||||||
|
x /= 40000 0
|
||||||
|
x %= 40000 10
|
||||||
|
x *= 40000 6784
|
||||||
|
x &= 40000 0
|
||||||
|
x |= 40000 -25526
|
||||||
|
x ^= 40000 -25526
|
||||||
|
x <<= 9 5120
|
||||||
|
x >>= 9 0
|
||||||
|
x ++ 11
|
||||||
|
x -- 9
|
||||||
|
-- x 9
|
||||||
|
++ x 11
|
||||||
|
y = ( 40000 + 8012 ) -17524
|
||||||
|
y = ( 40000 - 8012 ) 31988
|
||||||
|
y = ( 40000 / 8012 ) 4
|
||||||
|
y = ( 40000 % 8012 ) 7952
|
||||||
|
y = ( 40000 * 8012 ) 8960
|
||||||
|
y = ( 40000 & 8012 ) 7232
|
||||||
|
y = ( 40000 | 8012 ) -24756
|
||||||
|
y = ( 40000 ^ 8012 ) -31988
|
||||||
|
y = ( 40000 || 8012 ) 1
|
||||||
|
y = ( 40000 && 8012 ) 1
|
||||||
|
y = ( 40000 << 9 ) -32768
|
||||||
|
y = ( 40000 >> 9 ) 78
|
||||||
|
y = ( -40000 ) 25536
|
||||||
|
y = ( !40000 ) 0
|
||||||
|
y = ( ~40000 ) 25535
|
||||||
|
y = ( 40000 == 8012 ) 0
|
||||||
|
y = ( 40000 != 8012 ) 1
|
||||||
|
y = ( 40000 <= 8012 ) 0
|
||||||
|
y = ( 40000 >= 8012 ) 1
|
||||||
|
y = ( 40000 < 8012 ) 0
|
||||||
|
y = ( 40000 > 8012 ) 1
|
||||||
|
y = ( 40000 ? 40000 : 8012 ) -25536
|
||||||
|
y = ( x = 40000 ) -25536 -25536
|
||||||
|
y = ( x += 40000 ) -25526 -25526
|
||||||
|
y = ( x -= 40000 ) 25546 25546
|
||||||
|
y = ( x /= 40000 ) 0 0
|
||||||
|
y = ( x %= 40000 ) 10 10
|
||||||
|
y = ( x *= 40000 ) 6784 6784
|
||||||
|
y = ( x &= 40000 ) 0 0
|
||||||
|
y = ( x |= 40000 ) -25526 -25526
|
||||||
|
y = ( x ^= 40000 ) -25526 -25526
|
||||||
|
y = ( x <<= 9 ) 5120 5120
|
||||||
|
y = ( x >>= 9 ) 0 0
|
||||||
|
y = ( x ++ ) 11 10
|
||||||
|
y = ( x -- ) 9 10
|
||||||
|
y = ( -- x ) 9 9
|
||||||
|
y = ( ++ x ) 11 11
|
||||||
|
yes if ( 40000 + 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 - 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 / 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 % 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 * 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 & 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 | 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ^ 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 || 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 && 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 << 9 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >> 9 ) yes() ; else no()
|
||||||
|
yes if ( -40000 ) yes() ; else no()
|
||||||
|
no if ( !40000 ) yes() ; else no()
|
||||||
|
yes if ( ~40000 ) yes() ; else no()
|
||||||
|
no if ( 40000 == 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 != 8012 ) yes() ; else no()
|
||||||
|
no if ( 40000 <= 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >= 8012 ) yes() ; else no()
|
||||||
|
no if ( 40000 < 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 > 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ? 40000 : 8012 ) yes() ; else no()
|
||||||
|
yes if ( x = 40000 ) yes() ; else no() -25536
|
||||||
|
yes if ( x += 40000 ) yes() ; else no() -25526
|
||||||
|
yes if ( x -= 40000 ) yes() ; else no() 25546
|
||||||
|
no if ( x /= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x %= 40000 ) yes() ; else no() 10
|
||||||
|
yes if ( x *= 40000 ) yes() ; else no() 6784
|
||||||
|
no if ( x &= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x |= 40000 ) yes() ; else no() -25526
|
||||||
|
yes if ( x ^= 40000 ) yes() ; else no() -25526
|
||||||
|
yes if ( x <<= 9 ) yes() ; else no() 5120
|
||||||
|
no if ( x >>= 9 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 11
|
||||||
|
yes if ( x -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- x ) yes() ; else no() 9
|
||||||
|
yes if ( ++ x ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/clu.sed
Normal file
22
lang/cem/ctest/ctgen/clu.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for longs \
|
||||||
|
*/
|
||||||
|
/ISTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/LSTART/c\
|
||||||
|
unsigned x=40234 , y= 301 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/40000/g
|
||||||
|
s/Y/8012/g
|
||||||
|
s/S/9/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/ec.cem.g
Normal file
111
lang/cem/ctest/ctgen/ec.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
'0' + '1'
|
||||||
|
'0' - '1'
|
||||||
|
'0' / '1'
|
||||||
|
'0' % '1'
|
||||||
|
'0' * '1'
|
||||||
|
'0' & '1'
|
||||||
|
'0' | '1'
|
||||||
|
'0' ^ '1'
|
||||||
|
'0' || '1'
|
||||||
|
'0' && '1'
|
||||||
|
'0' << 4
|
||||||
|
'0' >> 4
|
||||||
|
-'0'
|
||||||
|
!'0'
|
||||||
|
~'0'
|
||||||
|
'0' == '1'
|
||||||
|
'0' != '1'
|
||||||
|
'0' <= '1'
|
||||||
|
'0' >= '1'
|
||||||
|
'0' < '1'
|
||||||
|
'0' > '1'
|
||||||
|
'0' ? '0' : '1'
|
||||||
|
x = '0' 48
|
||||||
|
x += '0' 58
|
||||||
|
x -= '0' 218
|
||||||
|
x /= '0' 0
|
||||||
|
x %= '0' 10
|
||||||
|
x *= '0' 224
|
||||||
|
x &= '0' 0
|
||||||
|
x |= '0' 58
|
||||||
|
x ^= '0' 58
|
||||||
|
x <<= 4 160
|
||||||
|
x >>= 4 0
|
||||||
|
x ++ 11
|
||||||
|
x -- 9
|
||||||
|
-- x 9
|
||||||
|
++ x 11
|
||||||
|
y = ( '0' + '1' ) 97
|
||||||
|
y = ( '0' - '1' ) 255
|
||||||
|
y = ( '0' / '1' ) 0
|
||||||
|
y = ( '0' % '1' ) 48
|
||||||
|
y = ( '0' * '1' ) 48
|
||||||
|
y = ( '0' & '1' ) 48
|
||||||
|
y = ( '0' | '1' ) 49
|
||||||
|
y = ( '0' ^ '1' ) 1
|
||||||
|
y = ( '0' || '1' ) 1
|
||||||
|
y = ( '0' && '1' ) 1
|
||||||
|
y = ( '0' << 4 ) 0
|
||||||
|
y = ( '0' >> 4 ) 3
|
||||||
|
y = ( -'0' ) 208
|
||||||
|
y = ( !'0' ) 0
|
||||||
|
y = ( ~'0' ) 207
|
||||||
|
y = ( '0' == '1' ) 0
|
||||||
|
y = ( '0' != '1' ) 1
|
||||||
|
y = ( '0' <= '1' ) 1
|
||||||
|
y = ( '0' >= '1' ) 0
|
||||||
|
y = ( '0' < '1' ) 1
|
||||||
|
y = ( '0' > '1' ) 0
|
||||||
|
y = ( '0' ? '0' : '1' ) 48
|
||||||
|
y = ( x = '0' ) 48 48
|
||||||
|
y = ( x += '0' ) 58 58
|
||||||
|
y = ( x -= '0' ) 218 218
|
||||||
|
y = ( x /= '0' ) 0 0
|
||||||
|
y = ( x %= '0' ) 10 10
|
||||||
|
y = ( x *= '0' ) 224 224
|
||||||
|
y = ( x &= '0' ) 0 0
|
||||||
|
y = ( x |= '0' ) 58 58
|
||||||
|
y = ( x ^= '0' ) 58 58
|
||||||
|
y = ( x <<= 4 ) 160 160
|
||||||
|
y = ( x >>= 4 ) 0 0
|
||||||
|
y = ( x ++ ) 11 10
|
||||||
|
y = ( x -- ) 9 10
|
||||||
|
y = ( -- x ) 9 9
|
||||||
|
y = ( ++ x ) 11 11
|
||||||
|
yes if ( '0' + '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' - '1' ) yes() ; else no()
|
||||||
|
no if ( '0' / '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' % '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' * '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' & '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' | '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' ^ '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' || '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' && '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' << 4 ) yes() ; else no()
|
||||||
|
yes if ( '0' >> 4 ) yes() ; else no()
|
||||||
|
yes if ( -'0' ) yes() ; else no()
|
||||||
|
no if ( !'0' ) yes() ; else no()
|
||||||
|
yes if ( ~'0' ) yes() ; else no()
|
||||||
|
no if ( '0' == '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' != '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' <= '1' ) yes() ; else no()
|
||||||
|
no if ( '0' >= '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' < '1' ) yes() ; else no()
|
||||||
|
no if ( '0' > '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' ? '0' : '1' ) yes() ; else no()
|
||||||
|
yes if ( x = '0' ) yes() ; else no() 48
|
||||||
|
yes if ( x += '0' ) yes() ; else no() 58
|
||||||
|
yes if ( x -= '0' ) yes() ; else no() 218
|
||||||
|
no if ( x /= '0' ) yes() ; else no() 0
|
||||||
|
yes if ( x %= '0' ) yes() ; else no() 10
|
||||||
|
yes if ( x *= '0' ) yes() ; else no() 224
|
||||||
|
no if ( x &= '0' ) yes() ; else no() 0
|
||||||
|
yes if ( x |= '0' ) yes() ; else no() 58
|
||||||
|
yes if ( x ^= '0' ) yes() ; else no() 58
|
||||||
|
yes if ( x <<= 4 ) yes() ; else no() 160
|
||||||
|
no if ( x >>= 4 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 11
|
||||||
|
yes if ( x -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- x ) yes() ; else no() 9
|
||||||
|
yes if ( ++ x ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/ec.sed
Normal file
22
lang/cem/ctest/ctgen/ec.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for local characters \
|
||||||
|
*/
|
||||||
|
/LSTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/ISTART/c\
|
||||||
|
char x=10 , y= 0100 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/'0'/g
|
||||||
|
s/Y/'1'/g
|
||||||
|
s/S/4/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
72
lang/cem/ctest/ctgen/ef.cem.g
Normal file
72
lang/cem/ctest/ctgen/ef.cem.g
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
.4e-5 + .3e-5
|
||||||
|
.4e-5 - .3e-5
|
||||||
|
.4e-5 / .3e-5
|
||||||
|
.4e-5 * .3e-5
|
||||||
|
.4e-5 || .3e-5
|
||||||
|
.4e-5 && .3e-5
|
||||||
|
-.4e-5
|
||||||
|
!.4e-5
|
||||||
|
.4e-5 == .3e-5
|
||||||
|
.4e-5 != .3e-5
|
||||||
|
.4e-5 <= .3e-5
|
||||||
|
.4e-5 >= .3e-5
|
||||||
|
.4e-5 < .3e-5
|
||||||
|
.4e-5 > .3e-5
|
||||||
|
.4e-5 ? .4e-5 : .3e-5
|
||||||
|
x = .4e-5 4.000000e-06
|
||||||
|
x += .4e-5 3.141504e+00
|
||||||
|
x -= .4e-5 3.141496e+00
|
||||||
|
x /= .4e-5 7.853750e+05
|
||||||
|
x *= .4e-5 1.256600e-05
|
||||||
|
x ++ 4.141500e+00
|
||||||
|
x -- 2.141500e+00
|
||||||
|
-- x 2.141500e+00
|
||||||
|
++ x 4.141500e+00
|
||||||
|
y = ( .4e-5 + .3e-5 ) 7.000000e-06
|
||||||
|
y = ( .4e-5 - .3e-5 ) 1.000000e-06
|
||||||
|
y = ( .4e-5 / .3e-5 ) 1.333333e+00
|
||||||
|
y = ( .4e-5 * .3e-5 ) 1.200000e-11
|
||||||
|
y = ( .4e-5 || .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 && .3e-5 ) 1.000000e+00
|
||||||
|
y = ( -.4e-5 ) -4.000000e-06
|
||||||
|
y = ( !.4e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 == .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 != .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 <= .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 >= .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 < .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 > .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 ? .4e-5 : .3e-5 ) 4.000000e-06
|
||||||
|
y = ( x = .4e-5 ) 4.000000e-06 4.000000e-06
|
||||||
|
y = ( x += .4e-5 ) 3.141504e+00 3.141504e+00
|
||||||
|
y = ( x -= .4e-5 ) 3.141496e+00 3.141496e+00
|
||||||
|
y = ( x /= .4e-5 ) 7.853750e+05 7.853750e+05
|
||||||
|
y = ( x *= .4e-5 ) 1.256600e-05 1.256600e-05
|
||||||
|
y = ( x ++ ) 4.141500e+00 3.141500e+00
|
||||||
|
y = ( x -- ) 2.141500e+00 3.141500e+00
|
||||||
|
y = ( -- x ) 2.141500e+00 2.141500e+00
|
||||||
|
y = ( ++ x ) 4.141500e+00 4.141500e+00
|
||||||
|
yes if ( .4e-5 + .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 - .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 / .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 * .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 || .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 && .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( -.4e-5 ) yes() ; else no()
|
||||||
|
no if ( !.4e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 == .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 != .3e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 <= .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 >= .3e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 < .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 > .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 ? .4e-5 : .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( x = .4e-5 ) yes() ; else no() 4.000000e-06
|
||||||
|
yes if ( x += .4e-5 ) yes() ; else no() 3.141504e+00
|
||||||
|
yes if ( x -= .4e-5 ) yes() ; else no() 3.141496e+00
|
||||||
|
yes if ( x /= .4e-5 ) yes() ; else no() 7.853750e+05
|
||||||
|
yes if ( x *= .4e-5 ) yes() ; else no() 1.256600e-05
|
||||||
|
yes if ( x ++ ) yes() ; else no() 4.141500e+00
|
||||||
|
yes if ( x -- ) yes() ; else no() 2.141500e+00
|
||||||
|
yes if ( -- x ) yes() ; else no() 2.141500e+00
|
||||||
|
yes if ( ++ x ) yes() ; else no() 4.141500e+00
|
27
lang/cem/ctest/ctgen/ef.sed
Normal file
27
lang/cem/ctest/ctgen/ef.sed
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/LSTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/ISTART/c\
|
||||||
|
float x=3.1415 , y= 1e-7 ;
|
||||||
|
/[^&]& /d
|
||||||
|
/[^|]| /d
|
||||||
|
/>>/d
|
||||||
|
/<</d
|
||||||
|
/%/d
|
||||||
|
/\^/d
|
||||||
|
/~/d
|
||||||
|
/&=/d
|
||||||
|
/|=/d
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %e&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %e&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 3.1415 ; /
|
||||||
|
/Z2/s/^/Z2 = 1e-7 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/.4e-5/g
|
||||||
|
s/Y/.3e-5/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/ei.cem.g
Normal file
111
lang/cem/ctest/ctgen/ei.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
4 + 5
|
||||||
|
4 - 5
|
||||||
|
4 / 5
|
||||||
|
4 % 5
|
||||||
|
4 * 5
|
||||||
|
4 & 5
|
||||||
|
4 | 5
|
||||||
|
4 ^ 5
|
||||||
|
4 || 5
|
||||||
|
4 && 5
|
||||||
|
4 << 15
|
||||||
|
4 >> 15
|
||||||
|
-4
|
||||||
|
!4
|
||||||
|
~4
|
||||||
|
4 == 5
|
||||||
|
4 != 5
|
||||||
|
4 <= 5
|
||||||
|
4 >= 5
|
||||||
|
4 < 5
|
||||||
|
4 > 5
|
||||||
|
4 ? 4 : 5
|
||||||
|
x = 4 4
|
||||||
|
x += 4 259
|
||||||
|
x -= 4 251
|
||||||
|
x /= 4 63
|
||||||
|
x %= 4 3
|
||||||
|
x *= 4 1020
|
||||||
|
x &= 4 4
|
||||||
|
x |= 4 255
|
||||||
|
x ^= 4 251
|
||||||
|
x <<= 15 -32768
|
||||||
|
x >>= 15 0
|
||||||
|
x ++ 256
|
||||||
|
x -- 254
|
||||||
|
-- x 254
|
||||||
|
++ x 256
|
||||||
|
y = ( 4 + 5 ) 9
|
||||||
|
y = ( 4 - 5 ) -1
|
||||||
|
y = ( 4 / 5 ) 0
|
||||||
|
y = ( 4 % 5 ) 4
|
||||||
|
y = ( 4 * 5 ) 20
|
||||||
|
y = ( 4 & 5 ) 4
|
||||||
|
y = ( 4 | 5 ) 5
|
||||||
|
y = ( 4 ^ 5 ) 1
|
||||||
|
y = ( 4 || 5 ) 1
|
||||||
|
y = ( 4 && 5 ) 1
|
||||||
|
y = ( 4 << 15 ) 0
|
||||||
|
y = ( 4 >> 15 ) 0
|
||||||
|
y = ( -4 ) -4
|
||||||
|
y = ( !4 ) 0
|
||||||
|
y = ( ~4 ) -5
|
||||||
|
y = ( 4 == 5 ) 0
|
||||||
|
y = ( 4 != 5 ) 1
|
||||||
|
y = ( 4 <= 5 ) 1
|
||||||
|
y = ( 4 >= 5 ) 0
|
||||||
|
y = ( 4 < 5 ) 1
|
||||||
|
y = ( 4 > 5 ) 0
|
||||||
|
y = ( 4 ? 4 : 5 ) 4
|
||||||
|
y = ( x = 4 ) 4 4
|
||||||
|
y = ( x += 4 ) 259 259
|
||||||
|
y = ( x -= 4 ) 251 251
|
||||||
|
y = ( x /= 4 ) 63 63
|
||||||
|
y = ( x %= 4 ) 3 3
|
||||||
|
y = ( x *= 4 ) 1020 1020
|
||||||
|
y = ( x &= 4 ) 4 4
|
||||||
|
y = ( x |= 4 ) 255 255
|
||||||
|
y = ( x ^= 4 ) 251 251
|
||||||
|
y = ( x <<= 15 ) -32768 -32768
|
||||||
|
y = ( x >>= 15 ) 0 0
|
||||||
|
y = ( x ++ ) 256 255
|
||||||
|
y = ( x -- ) 254 255
|
||||||
|
y = ( -- x ) 254 254
|
||||||
|
y = ( ++ x ) 256 256
|
||||||
|
yes if ( 4 + 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 - 5 ) yes() ; else no()
|
||||||
|
no if ( 4 / 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 % 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 * 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 & 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 | 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 ^ 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 || 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 && 5 ) yes() ; else no()
|
||||||
|
no if ( 4 << 15 ) yes() ; else no()
|
||||||
|
no if ( 4 >> 15 ) yes() ; else no()
|
||||||
|
yes if ( -4 ) yes() ; else no()
|
||||||
|
no if ( !4 ) yes() ; else no()
|
||||||
|
yes if ( ~4 ) yes() ; else no()
|
||||||
|
no if ( 4 == 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 != 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 <= 5 ) yes() ; else no()
|
||||||
|
no if ( 4 >= 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 < 5 ) yes() ; else no()
|
||||||
|
no if ( 4 > 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 ? 4 : 5 ) yes() ; else no()
|
||||||
|
yes if ( x = 4 ) yes() ; else no() 4
|
||||||
|
yes if ( x += 4 ) yes() ; else no() 259
|
||||||
|
yes if ( x -= 4 ) yes() ; else no() 251
|
||||||
|
yes if ( x /= 4 ) yes() ; else no() 63
|
||||||
|
yes if ( x %= 4 ) yes() ; else no() 3
|
||||||
|
yes if ( x *= 4 ) yes() ; else no() 1020
|
||||||
|
yes if ( x &= 4 ) yes() ; else no() 4
|
||||||
|
yes if ( x |= 4 ) yes() ; else no() 255
|
||||||
|
yes if ( x ^= 4 ) yes() ; else no() 251
|
||||||
|
yes if ( x <<= 15 ) yes() ; else no() -32768
|
||||||
|
no if ( x >>= 15 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 256
|
||||||
|
yes if ( x -- ) yes() ; else no() 254
|
||||||
|
yes if ( -- x ) yes() ; else no() 254
|
||||||
|
yes if ( ++ x ) yes() ; else no() 256
|
23
lang/cem/ctest/ctgen/ei.sed
Normal file
23
lang/cem/ctest/ctgen/ei.sed
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
1i\
|
||||||
|
/* A sample sed script to show the use of the 'ops' file.\
|
||||||
|
ops is converted into a test program for local integers \
|
||||||
|
*/
|
||||||
|
/LSTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/ISTART/c\
|
||||||
|
int x=255 , y= -256 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 255 ; /
|
||||||
|
/Z2/s/^/Z2 = 255 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/4/g
|
||||||
|
s/Y/5/g
|
||||||
|
s/S/15/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/el.cem.g
Normal file
111
lang/cem/ctest/ctgen/el.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
x + 16329
|
||||||
|
x - 16329
|
||||||
|
x / 16329
|
||||||
|
x % 16329
|
||||||
|
x * 16329
|
||||||
|
x & 16329
|
||||||
|
x | 16329
|
||||||
|
x ^ 16329
|
||||||
|
x || 16329
|
||||||
|
x && 16329
|
||||||
|
x << 9
|
||||||
|
x >> 9
|
||||||
|
-x
|
||||||
|
!x
|
||||||
|
~x
|
||||||
|
x == 16329
|
||||||
|
x != 16329
|
||||||
|
x <= 16329
|
||||||
|
x >= 16329
|
||||||
|
x < 16329
|
||||||
|
x > 16329
|
||||||
|
x ? x : 16329
|
||||||
|
z = x 100234
|
||||||
|
z += x 100244
|
||||||
|
z -= x -100224
|
||||||
|
z /= x 0
|
||||||
|
z %= x 10
|
||||||
|
z *= x 1002340
|
||||||
|
z &= x 10
|
||||||
|
z |= x 100234
|
||||||
|
z ^= x 100224
|
||||||
|
z <<= 9 5120
|
||||||
|
z >>= 9 0
|
||||||
|
z ++ 11
|
||||||
|
z -- 9
|
||||||
|
-- z 9
|
||||||
|
++ z 11
|
||||||
|
y = ( x + 16329 ) 116563
|
||||||
|
y = ( x - 16329 ) 83905
|
||||||
|
y = ( x / 16329 ) 6
|
||||||
|
y = ( x % 16329 ) 2260
|
||||||
|
y = ( x * 16329 ) 1636720986
|
||||||
|
y = ( x & 16329 ) 1928
|
||||||
|
y = ( x | 16329 ) 114635
|
||||||
|
y = ( x ^ 16329 ) 112707
|
||||||
|
y = ( x || 16329 ) 1
|
||||||
|
y = ( x && 16329 ) 1
|
||||||
|
y = ( x << 9 ) 51319808
|
||||||
|
y = ( x >> 9 ) 195
|
||||||
|
y = ( -x ) -100234
|
||||||
|
y = ( !x ) 0
|
||||||
|
y = ( ~x ) -100235
|
||||||
|
y = ( x == 16329 ) 0
|
||||||
|
y = ( x != 16329 ) 1
|
||||||
|
y = ( x <= 16329 ) 0
|
||||||
|
y = ( x >= 16329 ) 1
|
||||||
|
y = ( x < 16329 ) 0
|
||||||
|
y = ( x > 16329 ) 1
|
||||||
|
y = ( x ? x : 16329 ) 100234
|
||||||
|
y = ( z = x ) 100234 100234
|
||||||
|
y = ( z += x ) 100244 100244
|
||||||
|
y = ( z -= x ) -100224 -100224
|
||||||
|
y = ( z /= x ) 0 0
|
||||||
|
y = ( z %= x ) 10 10
|
||||||
|
y = ( z *= x ) 1002340 1002340
|
||||||
|
y = ( z &= x ) 10 10
|
||||||
|
y = ( z |= x ) 100234 100234
|
||||||
|
y = ( z ^= x ) 100224 100224
|
||||||
|
y = ( z <<= 9 ) 5120 5120
|
||||||
|
y = ( z >>= 9 ) 0 0
|
||||||
|
y = ( z ++ ) 11 10
|
||||||
|
y = ( z -- ) 9 10
|
||||||
|
y = ( -- z ) 9 9
|
||||||
|
y = ( ++ z ) 11 11
|
||||||
|
yes if ( x + 16329 ) yes() ; else no()
|
||||||
|
yes if ( x - 16329 ) yes() ; else no()
|
||||||
|
yes if ( x / 16329 ) yes() ; else no()
|
||||||
|
yes if ( x % 16329 ) yes() ; else no()
|
||||||
|
yes if ( x * 16329 ) yes() ; else no()
|
||||||
|
yes if ( x & 16329 ) yes() ; else no()
|
||||||
|
yes if ( x | 16329 ) yes() ; else no()
|
||||||
|
yes if ( x ^ 16329 ) yes() ; else no()
|
||||||
|
yes if ( x || 16329 ) yes() ; else no()
|
||||||
|
yes if ( x && 16329 ) yes() ; else no()
|
||||||
|
yes if ( x << 9 ) yes() ; else no()
|
||||||
|
yes if ( x >> 9 ) yes() ; else no()
|
||||||
|
yes if ( -x ) yes() ; else no()
|
||||||
|
no if ( !x ) yes() ; else no()
|
||||||
|
yes if ( ~x ) yes() ; else no()
|
||||||
|
no if ( x == 16329 ) yes() ; else no()
|
||||||
|
yes if ( x != 16329 ) yes() ; else no()
|
||||||
|
no if ( x <= 16329 ) yes() ; else no()
|
||||||
|
yes if ( x >= 16329 ) yes() ; else no()
|
||||||
|
no if ( x < 16329 ) yes() ; else no()
|
||||||
|
yes if ( x > 16329 ) yes() ; else no()
|
||||||
|
yes if ( x ? x : 16329 ) yes() ; else no()
|
||||||
|
yes if ( z = x ) yes() ; else no() 100234
|
||||||
|
yes if ( z += x ) yes() ; else no() 100244
|
||||||
|
yes if ( z -= x ) yes() ; else no() -100224
|
||||||
|
no if ( z /= x ) yes() ; else no() 0
|
||||||
|
yes if ( z %= x ) yes() ; else no() 10
|
||||||
|
yes if ( z *= x ) yes() ; else no() 1002340
|
||||||
|
yes if ( z &= x ) yes() ; else no() 10
|
||||||
|
yes if ( z |= x ) yes() ; else no() 100234
|
||||||
|
yes if ( z ^= x ) yes() ; else no() 100224
|
||||||
|
yes if ( z <<= 9 ) yes() ; else no() 5120
|
||||||
|
no if ( z >>= 9 ) yes() ; else no() 0
|
||||||
|
yes if ( z ++ ) yes() ; else no() 11
|
||||||
|
yes if ( z -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- z ) yes() ; else no() 9
|
||||||
|
yes if ( ++ z ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/el.sed
Normal file
22
lang/cem/ctest/ctgen/el.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for longs \
|
||||||
|
*/
|
||||||
|
/LSTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/ISTART/c\
|
||||||
|
long x=100234 , y= -301 , z= 0 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %D&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %D&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/x/g
|
||||||
|
s/Y/16329/g
|
||||||
|
s/S/9/g
|
||||||
|
s/Z1/z/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/eu.cem.g
Normal file
111
lang/cem/ctest/ctgen/eu.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
40000 + 8012
|
||||||
|
40000 - 8012
|
||||||
|
40000 / 8012
|
||||||
|
40000 % 8012
|
||||||
|
40000 * 8012
|
||||||
|
40000 & 8012
|
||||||
|
40000 | 8012
|
||||||
|
40000 ^ 8012
|
||||||
|
40000 || 8012
|
||||||
|
40000 && 8012
|
||||||
|
40000 << 9
|
||||||
|
40000 >> 9
|
||||||
|
-40000
|
||||||
|
!40000
|
||||||
|
~40000
|
||||||
|
40000 == 8012
|
||||||
|
40000 != 8012
|
||||||
|
40000 <= 8012
|
||||||
|
40000 >= 8012
|
||||||
|
40000 < 8012
|
||||||
|
40000 > 8012
|
||||||
|
40000 ? 40000 : 8012
|
||||||
|
x = 40000 -25536
|
||||||
|
x += 40000 -25526
|
||||||
|
x -= 40000 25546
|
||||||
|
x /= 40000 0
|
||||||
|
x %= 40000 10
|
||||||
|
x *= 40000 6784
|
||||||
|
x &= 40000 0
|
||||||
|
x |= 40000 -25526
|
||||||
|
x ^= 40000 -25526
|
||||||
|
x <<= 9 5120
|
||||||
|
x >>= 9 0
|
||||||
|
x ++ 11
|
||||||
|
x -- 9
|
||||||
|
-- x 9
|
||||||
|
++ x 11
|
||||||
|
y = ( 40000 + 8012 ) -17524
|
||||||
|
y = ( 40000 - 8012 ) 31988
|
||||||
|
y = ( 40000 / 8012 ) 4
|
||||||
|
y = ( 40000 % 8012 ) 7952
|
||||||
|
y = ( 40000 * 8012 ) 8960
|
||||||
|
y = ( 40000 & 8012 ) 7232
|
||||||
|
y = ( 40000 | 8012 ) -24756
|
||||||
|
y = ( 40000 ^ 8012 ) -31988
|
||||||
|
y = ( 40000 || 8012 ) 1
|
||||||
|
y = ( 40000 && 8012 ) 1
|
||||||
|
y = ( 40000 << 9 ) -32768
|
||||||
|
y = ( 40000 >> 9 ) 78
|
||||||
|
y = ( -40000 ) 25536
|
||||||
|
y = ( !40000 ) 0
|
||||||
|
y = ( ~40000 ) 25535
|
||||||
|
y = ( 40000 == 8012 ) 0
|
||||||
|
y = ( 40000 != 8012 ) 1
|
||||||
|
y = ( 40000 <= 8012 ) 0
|
||||||
|
y = ( 40000 >= 8012 ) 1
|
||||||
|
y = ( 40000 < 8012 ) 0
|
||||||
|
y = ( 40000 > 8012 ) 1
|
||||||
|
y = ( 40000 ? 40000 : 8012 ) -25536
|
||||||
|
y = ( x = 40000 ) -25536 -25536
|
||||||
|
y = ( x += 40000 ) -25526 -25526
|
||||||
|
y = ( x -= 40000 ) 25546 25546
|
||||||
|
y = ( x /= 40000 ) 0 0
|
||||||
|
y = ( x %= 40000 ) 10 10
|
||||||
|
y = ( x *= 40000 ) 6784 6784
|
||||||
|
y = ( x &= 40000 ) 0 0
|
||||||
|
y = ( x |= 40000 ) -25526 -25526
|
||||||
|
y = ( x ^= 40000 ) -25526 -25526
|
||||||
|
y = ( x <<= 9 ) 5120 5120
|
||||||
|
y = ( x >>= 9 ) 0 0
|
||||||
|
y = ( x ++ ) 11 10
|
||||||
|
y = ( x -- ) 9 10
|
||||||
|
y = ( -- x ) 9 9
|
||||||
|
y = ( ++ x ) 11 11
|
||||||
|
yes if ( 40000 + 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 - 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 / 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 % 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 * 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 & 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 | 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ^ 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 || 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 && 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 << 9 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >> 9 ) yes() ; else no()
|
||||||
|
yes if ( -40000 ) yes() ; else no()
|
||||||
|
no if ( !40000 ) yes() ; else no()
|
||||||
|
yes if ( ~40000 ) yes() ; else no()
|
||||||
|
no if ( 40000 == 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 != 8012 ) yes() ; else no()
|
||||||
|
no if ( 40000 <= 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >= 8012 ) yes() ; else no()
|
||||||
|
no if ( 40000 < 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 > 8012 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ? 40000 : 8012 ) yes() ; else no()
|
||||||
|
yes if ( x = 40000 ) yes() ; else no() -25536
|
||||||
|
yes if ( x += 40000 ) yes() ; else no() -25526
|
||||||
|
yes if ( x -= 40000 ) yes() ; else no() 25546
|
||||||
|
no if ( x /= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x %= 40000 ) yes() ; else no() 10
|
||||||
|
yes if ( x *= 40000 ) yes() ; else no() 6784
|
||||||
|
no if ( x &= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x |= 40000 ) yes() ; else no() -25526
|
||||||
|
yes if ( x ^= 40000 ) yes() ; else no() -25526
|
||||||
|
yes if ( x <<= 9 ) yes() ; else no() 5120
|
||||||
|
no if ( x >>= 9 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 11
|
||||||
|
yes if ( x -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- x ) yes() ; else no() 9
|
||||||
|
yes if ( ++ x ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/eu.sed
Normal file
22
lang/cem/ctest/ctgen/eu.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for longs \
|
||||||
|
*/
|
||||||
|
/LSTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/ISTART/c\
|
||||||
|
unsigned x=40234 , y= 301 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/40000/g
|
||||||
|
s/Y/8012/g
|
||||||
|
s/S/9/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/lc.cem.g
Normal file
111
lang/cem/ctest/ctgen/lc.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
'0' + '1'
|
||||||
|
'0' - '1'
|
||||||
|
'0' / '1'
|
||||||
|
'0' % '1'
|
||||||
|
'0' * '1'
|
||||||
|
'0' & '1'
|
||||||
|
'0' | '1'
|
||||||
|
'0' ^ '1'
|
||||||
|
'0' || '1'
|
||||||
|
'0' && '1'
|
||||||
|
'0' << 4
|
||||||
|
'0' >> 4
|
||||||
|
-'0'
|
||||||
|
!'0'
|
||||||
|
~'0'
|
||||||
|
'0' == '1'
|
||||||
|
'0' != '1'
|
||||||
|
'0' <= '1'
|
||||||
|
'0' >= '1'
|
||||||
|
'0' < '1'
|
||||||
|
'0' > '1'
|
||||||
|
'0' ? '0' : '1'
|
||||||
|
x = '0' 48
|
||||||
|
x += '0' 58
|
||||||
|
x -= '0' 218
|
||||||
|
x /= '0' 0
|
||||||
|
x %= '0' 10
|
||||||
|
x *= '0' 224
|
||||||
|
x &= '0' 0
|
||||||
|
x |= '0' 58
|
||||||
|
x ^= '0' 58
|
||||||
|
x <<= 4 160
|
||||||
|
x >>= 4 0
|
||||||
|
x ++ 11
|
||||||
|
x -- 9
|
||||||
|
-- x 9
|
||||||
|
++ x 11
|
||||||
|
y = ( '0' + '1' ) 97
|
||||||
|
y = ( '0' - '1' ) 255
|
||||||
|
y = ( '0' / '1' ) 0
|
||||||
|
y = ( '0' % '1' ) 48
|
||||||
|
y = ( '0' * '1' ) 48
|
||||||
|
y = ( '0' & '1' ) 48
|
||||||
|
y = ( '0' | '1' ) 49
|
||||||
|
y = ( '0' ^ '1' ) 1
|
||||||
|
y = ( '0' || '1' ) 1
|
||||||
|
y = ( '0' && '1' ) 1
|
||||||
|
y = ( '0' << 4 ) 0
|
||||||
|
y = ( '0' >> 4 ) 3
|
||||||
|
y = ( -'0' ) 208
|
||||||
|
y = ( !'0' ) 0
|
||||||
|
y = ( ~'0' ) 207
|
||||||
|
y = ( '0' == '1' ) 0
|
||||||
|
y = ( '0' != '1' ) 1
|
||||||
|
y = ( '0' <= '1' ) 1
|
||||||
|
y = ( '0' >= '1' ) 0
|
||||||
|
y = ( '0' < '1' ) 1
|
||||||
|
y = ( '0' > '1' ) 0
|
||||||
|
y = ( '0' ? '0' : '1' ) 48
|
||||||
|
y = ( x = '0' ) 48 48
|
||||||
|
y = ( x += '0' ) 58 58
|
||||||
|
y = ( x -= '0' ) 218 218
|
||||||
|
y = ( x /= '0' ) 0 0
|
||||||
|
y = ( x %= '0' ) 10 10
|
||||||
|
y = ( x *= '0' ) 224 224
|
||||||
|
y = ( x &= '0' ) 0 0
|
||||||
|
y = ( x |= '0' ) 58 58
|
||||||
|
y = ( x ^= '0' ) 58 58
|
||||||
|
y = ( x <<= 4 ) 160 160
|
||||||
|
y = ( x >>= 4 ) 0 0
|
||||||
|
y = ( x ++ ) 11 10
|
||||||
|
y = ( x -- ) 9 10
|
||||||
|
y = ( -- x ) 9 9
|
||||||
|
y = ( ++ x ) 11 11
|
||||||
|
yes if ( '0' + '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' - '1' ) yes() ; else no()
|
||||||
|
no if ( '0' / '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' % '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' * '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' & '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' | '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' ^ '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' || '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' && '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' << 4 ) yes() ; else no()
|
||||||
|
yes if ( '0' >> 4 ) yes() ; else no()
|
||||||
|
yes if ( -'0' ) yes() ; else no()
|
||||||
|
no if ( !'0' ) yes() ; else no()
|
||||||
|
yes if ( ~'0' ) yes() ; else no()
|
||||||
|
no if ( '0' == '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' != '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' <= '1' ) yes() ; else no()
|
||||||
|
no if ( '0' >= '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' < '1' ) yes() ; else no()
|
||||||
|
no if ( '0' > '1' ) yes() ; else no()
|
||||||
|
yes if ( '0' ? '0' : '1' ) yes() ; else no()
|
||||||
|
yes if ( x = '0' ) yes() ; else no() 48
|
||||||
|
yes if ( x += '0' ) yes() ; else no() 58
|
||||||
|
yes if ( x -= '0' ) yes() ; else no() 218
|
||||||
|
no if ( x /= '0' ) yes() ; else no() 0
|
||||||
|
yes if ( x %= '0' ) yes() ; else no() 10
|
||||||
|
yes if ( x *= '0' ) yes() ; else no() 224
|
||||||
|
no if ( x &= '0' ) yes() ; else no() 0
|
||||||
|
yes if ( x |= '0' ) yes() ; else no() 58
|
||||||
|
yes if ( x ^= '0' ) yes() ; else no() 58
|
||||||
|
yes if ( x <<= 4 ) yes() ; else no() 160
|
||||||
|
no if ( x >>= 4 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 11
|
||||||
|
yes if ( x -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- x ) yes() ; else no() 9
|
||||||
|
yes if ( ++ x ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/lc.sed
Normal file
22
lang/cem/ctest/ctgen/lc.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for local characters \
|
||||||
|
*/
|
||||||
|
/ISTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/LSTART/c\
|
||||||
|
char x=10 , y= 0100 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/'0'/g
|
||||||
|
s/Y/'1'/g
|
||||||
|
s/S/4/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
72
lang/cem/ctest/ctgen/ld.cem.g
Normal file
72
lang/cem/ctest/ctgen/ld.cem.g
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
.4e-5 + .3e-5
|
||||||
|
.4e-5 - .3e-5
|
||||||
|
.4e-5 / .3e-5
|
||||||
|
.4e-5 * .3e-5
|
||||||
|
.4e-5 || .3e-5
|
||||||
|
.4e-5 && .3e-5
|
||||||
|
-.4e-5
|
||||||
|
!.4e-5
|
||||||
|
.4e-5 == .3e-5
|
||||||
|
.4e-5 != .3e-5
|
||||||
|
.4e-5 <= .3e-5
|
||||||
|
.4e-5 >= .3e-5
|
||||||
|
.4e-5 < .3e-5
|
||||||
|
.4e-5 > .3e-5
|
||||||
|
.4e-5 ? .4e-5 : .3e-5
|
||||||
|
x = .4e-5 4.000000e-06
|
||||||
|
x += .4e-5 3.141504e+00
|
||||||
|
x -= .4e-5 3.141496e+00
|
||||||
|
x /= .4e-5 7.853750e+05
|
||||||
|
x *= .4e-5 1.256600e-05
|
||||||
|
x ++ 4.141500e+00
|
||||||
|
x -- 2.141500e+00
|
||||||
|
-- x 2.141500e+00
|
||||||
|
++ x 4.141500e+00
|
||||||
|
y = ( .4e-5 + .3e-5 ) 7.000000e-06
|
||||||
|
y = ( .4e-5 - .3e-5 ) 1.000000e-06
|
||||||
|
y = ( .4e-5 / .3e-5 ) 1.333333e+00
|
||||||
|
y = ( .4e-5 * .3e-5 ) 1.200000e-11
|
||||||
|
y = ( .4e-5 || .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 && .3e-5 ) 1.000000e+00
|
||||||
|
y = ( -.4e-5 ) -4.000000e-06
|
||||||
|
y = ( !.4e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 == .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 != .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 <= .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 >= .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 < .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 > .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 ? .4e-5 : .3e-5 ) 4.000000e-06
|
||||||
|
y = ( x = .4e-5 ) 4.000000e-06 4.000000e-06
|
||||||
|
y = ( x += .4e-5 ) 3.141504e+00 3.141504e+00
|
||||||
|
y = ( x -= .4e-5 ) 3.141496e+00 3.141496e+00
|
||||||
|
y = ( x /= .4e-5 ) 7.853750e+05 7.853750e+05
|
||||||
|
y = ( x *= .4e-5 ) 1.256600e-05 1.256600e-05
|
||||||
|
y = ( x ++ ) 4.141500e+00 3.141500e+00
|
||||||
|
y = ( x -- ) 2.141500e+00 3.141500e+00
|
||||||
|
y = ( -- x ) 2.141500e+00 2.141500e+00
|
||||||
|
y = ( ++ x ) 4.141500e+00 4.141500e+00
|
||||||
|
yes if ( .4e-5 + .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 - .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 / .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 * .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 || .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 && .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( -.4e-5 ) yes() ; else no()
|
||||||
|
no if ( !.4e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 == .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 != .3e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 <= .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 >= .3e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 < .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 > .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 ? .4e-5 : .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( x = .4e-5 ) yes() ; else no() 4.000000e-06
|
||||||
|
yes if ( x += .4e-5 ) yes() ; else no() 3.141504e+00
|
||||||
|
yes if ( x -= .4e-5 ) yes() ; else no() 3.141496e+00
|
||||||
|
yes if ( x /= .4e-5 ) yes() ; else no() 7.853750e+05
|
||||||
|
yes if ( x *= .4e-5 ) yes() ; else no() 1.256600e-05
|
||||||
|
yes if ( x ++ ) yes() ; else no() 4.141500e+00
|
||||||
|
yes if ( x -- ) yes() ; else no() 2.141500e+00
|
||||||
|
yes if ( -- x ) yes() ; else no() 2.141500e+00
|
||||||
|
yes if ( ++ x ) yes() ; else no() 4.141500e+00
|
27
lang/cem/ctest/ctgen/ld.sed
Normal file
27
lang/cem/ctest/ctgen/ld.sed
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/LSTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/ISTART/c\
|
||||||
|
double x=3.1415 , y= 1e-7 ;
|
||||||
|
/[^&]& /d
|
||||||
|
/[^|]| /d
|
||||||
|
/>>/d
|
||||||
|
/<</d
|
||||||
|
/%/d
|
||||||
|
/\^/d
|
||||||
|
/~/d
|
||||||
|
/&=/d
|
||||||
|
/|=/d
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %e&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %e&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 3.1415 ; /
|
||||||
|
/Z2/s/^/Z2 = 1e-7 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/.4e-5/g
|
||||||
|
s/Y/.3e-5/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
72
lang/cem/ctest/ctgen/lf.cem.g
Normal file
72
lang/cem/ctest/ctgen/lf.cem.g
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
.4e-5 + .3e-5
|
||||||
|
.4e-5 - .3e-5
|
||||||
|
.4e-5 / .3e-5
|
||||||
|
.4e-5 * .3e-5
|
||||||
|
.4e-5 || .3e-5
|
||||||
|
.4e-5 && .3e-5
|
||||||
|
-.4e-5
|
||||||
|
!.4e-5
|
||||||
|
.4e-5 == .3e-5
|
||||||
|
.4e-5 != .3e-5
|
||||||
|
.4e-5 <= .3e-5
|
||||||
|
.4e-5 >= .3e-5
|
||||||
|
.4e-5 < .3e-5
|
||||||
|
.4e-5 > .3e-5
|
||||||
|
.4e-5 ? .4e-5 : .3e-5
|
||||||
|
x = .4e-5 4.000000e-06
|
||||||
|
x += .4e-5 3.141504e+00
|
||||||
|
x -= .4e-5 3.141496e+00
|
||||||
|
x /= .4e-5 7.853750e+05
|
||||||
|
x *= .4e-5 1.256600e-05
|
||||||
|
x ++ 4.141500e+00
|
||||||
|
x -- 2.141500e+00
|
||||||
|
-- x 2.141500e+00
|
||||||
|
++ x 4.141500e+00
|
||||||
|
y = ( .4e-5 + .3e-5 ) 7.000000e-06
|
||||||
|
y = ( .4e-5 - .3e-5 ) 1.000000e-06
|
||||||
|
y = ( .4e-5 / .3e-5 ) 1.333333e+00
|
||||||
|
y = ( .4e-5 * .3e-5 ) 1.200000e-11
|
||||||
|
y = ( .4e-5 || .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 && .3e-5 ) 1.000000e+00
|
||||||
|
y = ( -.4e-5 ) -4.000000e-06
|
||||||
|
y = ( !.4e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 == .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 != .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 <= .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 >= .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 < .3e-5 ) 0.000000e+00
|
||||||
|
y = ( .4e-5 > .3e-5 ) 1.000000e+00
|
||||||
|
y = ( .4e-5 ? .4e-5 : .3e-5 ) 4.000000e-06
|
||||||
|
y = ( x = .4e-5 ) 4.000000e-06 4.000000e-06
|
||||||
|
y = ( x += .4e-5 ) 3.141504e+00 3.141504e+00
|
||||||
|
y = ( x -= .4e-5 ) 3.141496e+00 3.141496e+00
|
||||||
|
y = ( x /= .4e-5 ) 7.853750e+05 7.853750e+05
|
||||||
|
y = ( x *= .4e-5 ) 1.256600e-05 1.256600e-05
|
||||||
|
y = ( x ++ ) 4.141500e+00 3.141500e+00
|
||||||
|
y = ( x -- ) 2.141500e+00 3.141500e+00
|
||||||
|
y = ( -- x ) 2.141500e+00 2.141500e+00
|
||||||
|
y = ( ++ x ) 4.141500e+00 4.141500e+00
|
||||||
|
yes if ( .4e-5 + .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 - .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 / .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 * .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 || .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 && .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( -.4e-5 ) yes() ; else no()
|
||||||
|
no if ( !.4e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 == .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 != .3e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 <= .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 >= .3e-5 ) yes() ; else no()
|
||||||
|
no if ( .4e-5 < .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 > .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( .4e-5 ? .4e-5 : .3e-5 ) yes() ; else no()
|
||||||
|
yes if ( x = .4e-5 ) yes() ; else no() 4.000000e-06
|
||||||
|
yes if ( x += .4e-5 ) yes() ; else no() 3.141504e+00
|
||||||
|
yes if ( x -= .4e-5 ) yes() ; else no() 3.141496e+00
|
||||||
|
yes if ( x /= .4e-5 ) yes() ; else no() 7.853750e+05
|
||||||
|
yes if ( x *= .4e-5 ) yes() ; else no() 1.256600e-05
|
||||||
|
yes if ( x ++ ) yes() ; else no() 4.141500e+00
|
||||||
|
yes if ( x -- ) yes() ; else no() 2.141500e+00
|
||||||
|
yes if ( -- x ) yes() ; else no() 2.141500e+00
|
||||||
|
yes if ( ++ x ) yes() ; else no() 4.141500e+00
|
27
lang/cem/ctest/ctgen/lf.sed
Normal file
27
lang/cem/ctest/ctgen/lf.sed
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/ISTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/LSTART/c\
|
||||||
|
float x=3.1415 , y= 1e-7 ;
|
||||||
|
/[^&]& /d
|
||||||
|
/[^|]| /d
|
||||||
|
/>>/d
|
||||||
|
/<</d
|
||||||
|
/%/d
|
||||||
|
/\^/d
|
||||||
|
/~/d
|
||||||
|
/&=/d
|
||||||
|
/|=/d
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %e&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %e&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 3.1415 ; /
|
||||||
|
/Z2/s/^/Z2 = 1e-7 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/.4e-5/g
|
||||||
|
s/Y/.3e-5/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/li.cem.g
Normal file
111
lang/cem/ctest/ctgen/li.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
4 + 5
|
||||||
|
4 - 5
|
||||||
|
4 / 5
|
||||||
|
4 % 5
|
||||||
|
4 * 5
|
||||||
|
4 & 5
|
||||||
|
4 | 5
|
||||||
|
4 ^ 5
|
||||||
|
4 || 5
|
||||||
|
4 && 5
|
||||||
|
4 << 15
|
||||||
|
4 >> 15
|
||||||
|
-4
|
||||||
|
!4
|
||||||
|
~4
|
||||||
|
4 == 5
|
||||||
|
4 != 5
|
||||||
|
4 <= 5
|
||||||
|
4 >= 5
|
||||||
|
4 < 5
|
||||||
|
4 > 5
|
||||||
|
4 ? 4 : 5
|
||||||
|
x = 4 4
|
||||||
|
x += 4 259
|
||||||
|
x -= 4 251
|
||||||
|
x /= 4 63
|
||||||
|
x %= 4 3
|
||||||
|
x *= 4 1020
|
||||||
|
x &= 4 4
|
||||||
|
x |= 4 255
|
||||||
|
x ^= 4 251
|
||||||
|
x <<= 15 -32768
|
||||||
|
x >>= 15 0
|
||||||
|
x ++ 256
|
||||||
|
x -- 254
|
||||||
|
-- x 254
|
||||||
|
++ x 256
|
||||||
|
y = ( 4 + 5 ) 9
|
||||||
|
y = ( 4 - 5 ) -1
|
||||||
|
y = ( 4 / 5 ) 0
|
||||||
|
y = ( 4 % 5 ) 4
|
||||||
|
y = ( 4 * 5 ) 20
|
||||||
|
y = ( 4 & 5 ) 4
|
||||||
|
y = ( 4 | 5 ) 5
|
||||||
|
y = ( 4 ^ 5 ) 1
|
||||||
|
y = ( 4 || 5 ) 1
|
||||||
|
y = ( 4 && 5 ) 1
|
||||||
|
y = ( 4 << 15 ) 0
|
||||||
|
y = ( 4 >> 15 ) 0
|
||||||
|
y = ( -4 ) -4
|
||||||
|
y = ( !4 ) 0
|
||||||
|
y = ( ~4 ) -5
|
||||||
|
y = ( 4 == 5 ) 0
|
||||||
|
y = ( 4 != 5 ) 1
|
||||||
|
y = ( 4 <= 5 ) 1
|
||||||
|
y = ( 4 >= 5 ) 0
|
||||||
|
y = ( 4 < 5 ) 1
|
||||||
|
y = ( 4 > 5 ) 0
|
||||||
|
y = ( 4 ? 4 : 5 ) 4
|
||||||
|
y = ( x = 4 ) 4 4
|
||||||
|
y = ( x += 4 ) 259 259
|
||||||
|
y = ( x -= 4 ) 251 251
|
||||||
|
y = ( x /= 4 ) 63 63
|
||||||
|
y = ( x %= 4 ) 3 3
|
||||||
|
y = ( x *= 4 ) 1020 1020
|
||||||
|
y = ( x &= 4 ) 4 4
|
||||||
|
y = ( x |= 4 ) 255 255
|
||||||
|
y = ( x ^= 4 ) 251 251
|
||||||
|
y = ( x <<= 15 ) -32768 -32768
|
||||||
|
y = ( x >>= 15 ) 0 0
|
||||||
|
y = ( x ++ ) 256 255
|
||||||
|
y = ( x -- ) 254 255
|
||||||
|
y = ( -- x ) 254 254
|
||||||
|
y = ( ++ x ) 256 256
|
||||||
|
yes if ( 4 + 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 - 5 ) yes() ; else no()
|
||||||
|
no if ( 4 / 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 % 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 * 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 & 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 | 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 ^ 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 || 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 && 5 ) yes() ; else no()
|
||||||
|
no if ( 4 << 15 ) yes() ; else no()
|
||||||
|
no if ( 4 >> 15 ) yes() ; else no()
|
||||||
|
yes if ( -4 ) yes() ; else no()
|
||||||
|
no if ( !4 ) yes() ; else no()
|
||||||
|
yes if ( ~4 ) yes() ; else no()
|
||||||
|
no if ( 4 == 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 != 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 <= 5 ) yes() ; else no()
|
||||||
|
no if ( 4 >= 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 < 5 ) yes() ; else no()
|
||||||
|
no if ( 4 > 5 ) yes() ; else no()
|
||||||
|
yes if ( 4 ? 4 : 5 ) yes() ; else no()
|
||||||
|
yes if ( x = 4 ) yes() ; else no() 4
|
||||||
|
yes if ( x += 4 ) yes() ; else no() 259
|
||||||
|
yes if ( x -= 4 ) yes() ; else no() 251
|
||||||
|
yes if ( x /= 4 ) yes() ; else no() 63
|
||||||
|
yes if ( x %= 4 ) yes() ; else no() 3
|
||||||
|
yes if ( x *= 4 ) yes() ; else no() 1020
|
||||||
|
yes if ( x &= 4 ) yes() ; else no() 4
|
||||||
|
yes if ( x |= 4 ) yes() ; else no() 255
|
||||||
|
yes if ( x ^= 4 ) yes() ; else no() 251
|
||||||
|
yes if ( x <<= 15 ) yes() ; else no() -32768
|
||||||
|
no if ( x >>= 15 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 256
|
||||||
|
yes if ( x -- ) yes() ; else no() 254
|
||||||
|
yes if ( -- x ) yes() ; else no() 254
|
||||||
|
yes if ( ++ x ) yes() ; else no() 256
|
23
lang/cem/ctest/ctgen/li.sed
Normal file
23
lang/cem/ctest/ctgen/li.sed
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
1i\
|
||||||
|
/* A sample sed script to show the use of the 'ops' file.\
|
||||||
|
ops is converted into a test program for local integers \
|
||||||
|
*/
|
||||||
|
/ISTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/LSTART/c\
|
||||||
|
int x=255 , y= -256 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 255 ; /
|
||||||
|
/Z2/s/^/Z2 = 255 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/4/g
|
||||||
|
s/Y/5/g
|
||||||
|
s/S/15/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/ll.cem.g
Normal file
111
lang/cem/ctest/ctgen/ll.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
40000 + 30000
|
||||||
|
40000 - 30000
|
||||||
|
40000 / 30000
|
||||||
|
40000 % 30000
|
||||||
|
40000 * 30000
|
||||||
|
40000 & 30000
|
||||||
|
40000 | 30000
|
||||||
|
40000 ^ 30000
|
||||||
|
40000 || 30000
|
||||||
|
40000 && 30000
|
||||||
|
40000 << 9
|
||||||
|
40000 >> 9
|
||||||
|
-40000
|
||||||
|
!40000
|
||||||
|
~40000
|
||||||
|
40000 == 30000
|
||||||
|
40000 != 30000
|
||||||
|
40000 <= 30000
|
||||||
|
40000 >= 30000
|
||||||
|
40000 < 30000
|
||||||
|
40000 > 30000
|
||||||
|
40000 ? 40000 : 30000
|
||||||
|
x = 40000 40000
|
||||||
|
x += 40000 40010
|
||||||
|
x -= 40000 -39990
|
||||||
|
x /= 40000 0
|
||||||
|
x %= 40000 10
|
||||||
|
x *= 40000 400000
|
||||||
|
x &= 40000 0
|
||||||
|
x |= 40000 40010
|
||||||
|
x ^= 40000 40010
|
||||||
|
x <<= 9 5120
|
||||||
|
x >>= 9 0
|
||||||
|
x ++ 11
|
||||||
|
x -- 9
|
||||||
|
-- x 9
|
||||||
|
++ x 11
|
||||||
|
y = ( 40000 + 30000 ) 70000
|
||||||
|
y = ( 40000 - 30000 ) 10000
|
||||||
|
y = ( 40000 / 30000 ) 1
|
||||||
|
y = ( 40000 % 30000 ) 10000
|
||||||
|
y = ( 40000 * 30000 ) 1200000000
|
||||||
|
y = ( 40000 & 30000 ) 5120
|
||||||
|
y = ( 40000 | 30000 ) 64880
|
||||||
|
y = ( 40000 ^ 30000 ) 59760
|
||||||
|
y = ( 40000 || 30000 ) 1
|
||||||
|
y = ( 40000 && 30000 ) 1
|
||||||
|
y = ( 40000 << 9 ) 20480000
|
||||||
|
y = ( 40000 >> 9 ) 78
|
||||||
|
y = ( -40000 ) -40000
|
||||||
|
y = ( !40000 ) 0
|
||||||
|
y = ( ~40000 ) -40001
|
||||||
|
y = ( 40000 == 30000 ) 0
|
||||||
|
y = ( 40000 != 30000 ) 1
|
||||||
|
y = ( 40000 <= 30000 ) 0
|
||||||
|
y = ( 40000 >= 30000 ) 1
|
||||||
|
y = ( 40000 < 30000 ) 0
|
||||||
|
y = ( 40000 > 30000 ) 1
|
||||||
|
y = ( 40000 ? 40000 : 30000 ) 40000
|
||||||
|
y = ( x = 40000 ) 40000 40000
|
||||||
|
y = ( x += 40000 ) 40010 40010
|
||||||
|
y = ( x -= 40000 ) -39990 -39990
|
||||||
|
y = ( x /= 40000 ) 0 0
|
||||||
|
y = ( x %= 40000 ) 10 10
|
||||||
|
y = ( x *= 40000 ) 400000 400000
|
||||||
|
y = ( x &= 40000 ) 0 0
|
||||||
|
y = ( x |= 40000 ) 40010 40010
|
||||||
|
y = ( x ^= 40000 ) 40010 40010
|
||||||
|
y = ( x <<= 9 ) 5120 5120
|
||||||
|
y = ( x >>= 9 ) 0 0
|
||||||
|
y = ( x ++ ) 11 10
|
||||||
|
y = ( x -- ) 9 10
|
||||||
|
y = ( -- x ) 9 9
|
||||||
|
y = ( ++ x ) 11 11
|
||||||
|
yes if ( 40000 + 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 - 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 / 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 % 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 * 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 & 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 | 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ^ 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 || 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 && 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 << 9 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >> 9 ) yes() ; else no()
|
||||||
|
yes if ( -40000 ) yes() ; else no()
|
||||||
|
no if ( !40000 ) yes() ; else no()
|
||||||
|
yes if ( ~40000 ) yes() ; else no()
|
||||||
|
no if ( 40000 == 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 != 30000 ) yes() ; else no()
|
||||||
|
no if ( 40000 <= 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 >= 30000 ) yes() ; else no()
|
||||||
|
no if ( 40000 < 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 > 30000 ) yes() ; else no()
|
||||||
|
yes if ( 40000 ? 40000 : 30000 ) yes() ; else no()
|
||||||
|
yes if ( x = 40000 ) yes() ; else no() 40000
|
||||||
|
yes if ( x += 40000 ) yes() ; else no() 40010
|
||||||
|
yes if ( x -= 40000 ) yes() ; else no() -39990
|
||||||
|
no if ( x /= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x %= 40000 ) yes() ; else no() 10
|
||||||
|
yes if ( x *= 40000 ) yes() ; else no() 400000
|
||||||
|
no if ( x &= 40000 ) yes() ; else no() 0
|
||||||
|
yes if ( x |= 40000 ) yes() ; else no() 40010
|
||||||
|
yes if ( x ^= 40000 ) yes() ; else no() 40010
|
||||||
|
yes if ( x <<= 9 ) yes() ; else no() 5120
|
||||||
|
no if ( x >>= 9 ) yes() ; else no() 0
|
||||||
|
yes if ( x ++ ) yes() ; else no() 11
|
||||||
|
yes if ( x -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- x ) yes() ; else no() 9
|
||||||
|
yes if ( ++ x ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/ll.sed
Normal file
22
lang/cem/ctest/ctgen/ll.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for longs \
|
||||||
|
*/
|
||||||
|
/ISTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/LSTART/c\
|
||||||
|
long x=100234 , y= -301 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %D&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %D&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/40000/g
|
||||||
|
s/Y/30000/g
|
||||||
|
s/S/9/g
|
||||||
|
s/Z1/x/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
111
lang/cem/ctest/ctgen/lu.cem.g
Normal file
111
lang/cem/ctest/ctgen/lu.cem.g
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
x + 8012
|
||||||
|
x - 8012
|
||||||
|
x / 8012
|
||||||
|
x % 8012
|
||||||
|
x * 8012
|
||||||
|
x & 8012
|
||||||
|
x | 8012
|
||||||
|
x ^ 8012
|
||||||
|
x || 8012
|
||||||
|
x && 8012
|
||||||
|
x << 9
|
||||||
|
x >> 9
|
||||||
|
-x
|
||||||
|
!x
|
||||||
|
~x
|
||||||
|
x == 8012
|
||||||
|
x != 8012
|
||||||
|
x <= 8012
|
||||||
|
x >= 8012
|
||||||
|
x < 8012
|
||||||
|
x > 8012
|
||||||
|
x ? x : 8012
|
||||||
|
z = x -25302
|
||||||
|
z += x -25292
|
||||||
|
z -= x 25312
|
||||||
|
z /= x 0
|
||||||
|
z %= x 10
|
||||||
|
z *= x 9124
|
||||||
|
z &= x 10
|
||||||
|
z |= x -25302
|
||||||
|
z ^= x -25312
|
||||||
|
z <<= 9 5120
|
||||||
|
z >>= 9 0
|
||||||
|
z ++ 11
|
||||||
|
z -- 9
|
||||||
|
-- z 9
|
||||||
|
++ z 11
|
||||||
|
y = ( x + 8012 ) -17290
|
||||||
|
y = ( x - 8012 ) 32222
|
||||||
|
y = ( x / 8012 ) 5
|
||||||
|
y = ( x % 8012 ) 174
|
||||||
|
y = ( x * 8012 ) -16776
|
||||||
|
y = ( x & 8012 ) 7432
|
||||||
|
y = ( x | 8012 ) -24722
|
||||||
|
y = ( x ^ 8012 ) -32154
|
||||||
|
y = ( x || 8012 ) 1
|
||||||
|
y = ( x && 8012 ) 1
|
||||||
|
y = ( x << 9 ) 21504
|
||||||
|
y = ( x >> 9 ) 78
|
||||||
|
y = ( -x ) 25302
|
||||||
|
y = ( !x ) 0
|
||||||
|
y = ( ~x ) 25301
|
||||||
|
y = ( x == 8012 ) 0
|
||||||
|
y = ( x != 8012 ) 1
|
||||||
|
y = ( x <= 8012 ) 0
|
||||||
|
y = ( x >= 8012 ) 1
|
||||||
|
y = ( x < 8012 ) 0
|
||||||
|
y = ( x > 8012 ) 1
|
||||||
|
y = ( x ? x : 8012 ) -25302
|
||||||
|
y = ( z = x ) -25302 -25302
|
||||||
|
y = ( z += x ) -25292 -25292
|
||||||
|
y = ( z -= x ) 25312 25312
|
||||||
|
y = ( z /= x ) 0 0
|
||||||
|
y = ( z %= x ) 10 10
|
||||||
|
y = ( z *= x ) 9124 9124
|
||||||
|
y = ( z &= x ) 10 10
|
||||||
|
y = ( z |= x ) -25302 -25302
|
||||||
|
y = ( z ^= x ) -25312 -25312
|
||||||
|
y = ( z <<= 9 ) 5120 5120
|
||||||
|
y = ( z >>= 9 ) 0 0
|
||||||
|
y = ( z ++ ) 11 10
|
||||||
|
y = ( z -- ) 9 10
|
||||||
|
y = ( -- z ) 9 9
|
||||||
|
y = ( ++ z ) 11 11
|
||||||
|
yes if ( x + 8012 ) yes() ; else no()
|
||||||
|
yes if ( x - 8012 ) yes() ; else no()
|
||||||
|
yes if ( x / 8012 ) yes() ; else no()
|
||||||
|
yes if ( x % 8012 ) yes() ; else no()
|
||||||
|
yes if ( x * 8012 ) yes() ; else no()
|
||||||
|
yes if ( x & 8012 ) yes() ; else no()
|
||||||
|
yes if ( x | 8012 ) yes() ; else no()
|
||||||
|
yes if ( x ^ 8012 ) yes() ; else no()
|
||||||
|
yes if ( x || 8012 ) yes() ; else no()
|
||||||
|
yes if ( x && 8012 ) yes() ; else no()
|
||||||
|
yes if ( x << 9 ) yes() ; else no()
|
||||||
|
yes if ( x >> 9 ) yes() ; else no()
|
||||||
|
yes if ( -x ) yes() ; else no()
|
||||||
|
no if ( !x ) yes() ; else no()
|
||||||
|
yes if ( ~x ) yes() ; else no()
|
||||||
|
no if ( x == 8012 ) yes() ; else no()
|
||||||
|
yes if ( x != 8012 ) yes() ; else no()
|
||||||
|
no if ( x <= 8012 ) yes() ; else no()
|
||||||
|
yes if ( x >= 8012 ) yes() ; else no()
|
||||||
|
no if ( x < 8012 ) yes() ; else no()
|
||||||
|
yes if ( x > 8012 ) yes() ; else no()
|
||||||
|
yes if ( x ? x : 8012 ) yes() ; else no()
|
||||||
|
yes if ( z = x ) yes() ; else no() -25302
|
||||||
|
yes if ( z += x ) yes() ; else no() -25292
|
||||||
|
yes if ( z -= x ) yes() ; else no() 25312
|
||||||
|
no if ( z /= x ) yes() ; else no() 0
|
||||||
|
yes if ( z %= x ) yes() ; else no() 10
|
||||||
|
yes if ( z *= x ) yes() ; else no() 9124
|
||||||
|
yes if ( z &= x ) yes() ; else no() 10
|
||||||
|
yes if ( z |= x ) yes() ; else no() -25302
|
||||||
|
yes if ( z ^= x ) yes() ; else no() -25312
|
||||||
|
yes if ( z <<= 9 ) yes() ; else no() 5120
|
||||||
|
no if ( z >>= 9 ) yes() ; else no() 0
|
||||||
|
yes if ( z ++ ) yes() ; else no() 11
|
||||||
|
yes if ( z -- ) yes() ; else no() 9
|
||||||
|
yes if ( -- z ) yes() ; else no() 9
|
||||||
|
yes if ( ++ z ) yes() ; else no() 11
|
22
lang/cem/ctest/ctgen/lu.sed
Normal file
22
lang/cem/ctest/ctgen/lu.sed
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
1i\
|
||||||
|
/* ops is converted into a test program for longs \
|
||||||
|
*/
|
||||||
|
/ISTART/d
|
||||||
|
s/FN/main/
|
||||||
|
/LSTART/c\
|
||||||
|
unsigned x=40234 , y= 301 , z= 30 ;
|
||||||
|
/[XYZS]/s/.*/& ; printf("%s#","&"@) ;/
|
||||||
|
/Z1/s/#/ %d&/
|
||||||
|
/Z1/s/@/, Z1&/
|
||||||
|
/Z2/s/#/ %d&/
|
||||||
|
/Z2/s/@/, Z2&/
|
||||||
|
/Z1/s/^/Z1 = 10 ; /
|
||||||
|
/Z2/s/^/Z2 = 0100 ; /
|
||||||
|
/[XYZS]/s/^/ /
|
||||||
|
s/X/x/g
|
||||||
|
s/Y/8012/g
|
||||||
|
s/S/9/g
|
||||||
|
s/Z1/z/g
|
||||||
|
s/Z2/y/g
|
||||||
|
s/#/\\n/
|
||||||
|
s/@//
|
2
lang/cem/ctest/ctgen/makefile
Normal file
2
lang/cem/ctest/ctgen/makefile
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
$(TS).c: OPS $(TS).sed
|
||||||
|
sed -f $(TS).sed <OPS >$(TS).c
|
1
lang/cem/ctest/ctgen/mkc
Executable file
1
lang/cem/ctest/ctgen/mkc
Executable file
|
@ -0,0 +1 @@
|
||||||
|
sed -f $1.sed <OPS >$1.c
|
4
lang/cem/ctest/ctgen/run
Executable file
4
lang/cem/ctest/ctgen/run
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
for A in *.sed
|
||||||
|
do
|
||||||
|
run1 `basename $A .sed` ${1-gen}
|
||||||
|
done
|
3
lang/cem/ctest/ctgen/run1
Executable file
3
lang/cem/ctest/ctgen/run1
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
make "TS=$1"
|
||||||
|
make "P=$1" -fk ../makefile $2
|
||||||
|
rm $1.[ckmos]
|
8
lang/cem/ctest/ctill/noarg.c
Normal file
8
lang/cem/ctest/ctill/noarg.c
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
main() {
|
||||||
|
none() ;
|
||||||
|
printf("Undetected: declaration of argument not present in argument list\n") ;
|
||||||
|
return 1 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int name ;
|
||||||
|
none() int name ; { }
|
2
lang/cem/ctest/ctill/run
Executable file
2
lang/cem/ctest/ctill/run
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
echo ----- A missing argument error should be reported
|
||||||
|
make "P=noarg" -fsk ../makefile ${1-gen}
|
250
lang/cem/ctest/ctinit/init.c
Normal file
250
lang/cem/ctest/ctinit/init.c
Normal file
|
@ -0,0 +1,250 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Author: E.G. Keizer */
|
||||||
|
|
||||||
|
/* Test initialisation of a V7 C-compiler */
|
||||||
|
/* 1 sept 1980 */
|
||||||
|
#include "../local.h"
|
||||||
|
|
||||||
|
/* Integers and constant expressions */
|
||||||
|
|
||||||
|
int in1 = 4 ;
|
||||||
|
int in2 = MAXINT ;
|
||||||
|
int in3 = MININT ;
|
||||||
|
int in4 ;
|
||||||
|
int inzero ;
|
||||||
|
|
||||||
|
int ice1 = (1-2+3*4/2)%3 ;
|
||||||
|
int ice2 = ((((1&3)|4)^014) >> 1) <<1 ;
|
||||||
|
int ice3 = ( (1==2) & (3<4) ) | (4>3) | (0<=0) | -2>=17 ;
|
||||||
|
int ice4 = (~-1) ;
|
||||||
|
int ice5 = (1==1 ? 3+4 : 5+6 ) ;
|
||||||
|
int ice6 = (1!=1 ? 7+8 : 9+10 ) ;
|
||||||
|
int ina[] = { 1, 3, 5 } ;
|
||||||
|
|
||||||
|
pint() {
|
||||||
|
static int sint = -1 ;
|
||||||
|
int lint = in1+in3+sint ;
|
||||||
|
|
||||||
|
printf("Integers:\n\n") ;
|
||||||
|
printf("in1\t%d\nin2\t%d\nin3\t%d\nin4\t%d\ninzero\t%d\n\n",
|
||||||
|
in1,in2,in3,in4,inzero ) ;
|
||||||
|
printf("ice1\t%d\nice2\t%d\nice3\t%d\nice4\t%d\nice5\t%d\nice6\t%d\n\n",
|
||||||
|
ice1,ice2,ice3,ice4,ice5,ice6 ) ;
|
||||||
|
printf("ina\t%d,%d,%d\n\n",ina[0],ina[1],ina[2]) ;
|
||||||
|
printf("sint\t%d\nlint\t%d\n\n",sint,lint) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Characters */
|
||||||
|
|
||||||
|
char ch1 = 'a' ;
|
||||||
|
char ch2 ;
|
||||||
|
char cha1[] = "Mesg" ;
|
||||||
|
char cha2[] = "" ;
|
||||||
|
char cha3[] = "1" ;
|
||||||
|
char cha4[] = "12" ;
|
||||||
|
char cha5[] = "0123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789" ;
|
||||||
|
|
||||||
|
char cha6[2][3] = {
|
||||||
|
{ 1, 2, 3 },
|
||||||
|
{ 4, 5, 6 }
|
||||||
|
};
|
||||||
|
char *pch1 = cha2 ;
|
||||||
|
char *pch2 = "pch2" ;
|
||||||
|
char *pch3 = "ppch3" ;
|
||||||
|
char *pch4 = 0 ;
|
||||||
|
|
||||||
|
pch() {
|
||||||
|
static char stc[] = "123" ;
|
||||||
|
static char stc1[] = "1234" ;
|
||||||
|
static char *mult[] = { "ab" , "bc" , "de" } ;
|
||||||
|
|
||||||
|
printf("Characters:\n\n") ;
|
||||||
|
|
||||||
|
printf("ch1\t%c(%d)\n",ch1,ch1) ;
|
||||||
|
printf("ch2\t%d\n",ch2) ;
|
||||||
|
printf("cha1\t%s\ncha2\t%s\ncha3\t%s\ncha4\t%s\n",
|
||||||
|
cha1,cha2,cha3,cha4 ) ;
|
||||||
|
printf("cha5\t%s\n\n",cha5) ;
|
||||||
|
printf("cha6\t%d, %d, %d\n\t%d, %d, %d\n",
|
||||||
|
cha6[0][0],cha6[0][1],cha6[0][2],cha6[1][0],cha6[1][1],cha6[1][2]);
|
||||||
|
printf("pch1==cha2\t%s\n",(pch1 == cha2 ? "yes" : "no" ) ) ;
|
||||||
|
printf("pch2\t%s\npch3\t%s\n",pch2,pch3+1) ;
|
||||||
|
printf("pch4==0\t%s\n\n",(pch4 != 0 ? "no" : "yes" ) ) ;
|
||||||
|
printf("stc\t%s\nstc1\t%s\n",stc,stc1) ;
|
||||||
|
printf("mult[0],mult[1],mult[2] %s, %s, %s\n",mult[0],mult[1],mult[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* floats */
|
||||||
|
|
||||||
|
float fl1 = 0 ;
|
||||||
|
float fl2 = 2 ;
|
||||||
|
float fl3 = 2e-10 ;
|
||||||
|
float fl4 = 4.0 ;
|
||||||
|
float fl5 = EPSFLOAT ;
|
||||||
|
float fl6 = MAXFLOAT ;
|
||||||
|
float fl7 ;
|
||||||
|
|
||||||
|
float fla1[4][3] = {
|
||||||
|
{ 1, 3, 5 },
|
||||||
|
{ 2, 4, 6 },
|
||||||
|
{ 3, 5, 7 }
|
||||||
|
} ;
|
||||||
|
float fla2[4][3] = {
|
||||||
|
-1,-3,-5,-2,-4,-6,-3,-5,-7
|
||||||
|
} ;
|
||||||
|
float fla3[4][3] = {
|
||||||
|
{ 11 } , { 12 } , { 13 } , { 14 }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pflt() {
|
||||||
|
register i,j ;
|
||||||
|
|
||||||
|
printf("Floats:\n\n") ;
|
||||||
|
|
||||||
|
printf("fl1\t%.20e\nfl2\t%.20e\nfl2\t%.20e\nfl4\t%.20e\nfl5\t%.20e\nfl6\t%.20e\nfl7\t%.20e\n",
|
||||||
|
fl1,fl2,fl2,fl4,fl5,fl6,fl7 ) ;
|
||||||
|
|
||||||
|
printf(" fla1 fla2 fla3\n") ;
|
||||||
|
for ( i=0 ; i<4 ; i++ ) {
|
||||||
|
for ( j=0 ; j<3 ; j++ ) {
|
||||||
|
printf(" %20e %20e %20e\n",
|
||||||
|
fla1[i][j],fla2[i][j],fla3[i][j]) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n") ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* doubles */
|
||||||
|
|
||||||
|
double dbl1 = 0 ;
|
||||||
|
double dbl2 = 2 ;
|
||||||
|
double dbl3 = 2e-10 ;
|
||||||
|
double dbl4 = 4.0 ;
|
||||||
|
double dbl5 = EPSDOUBLE ;
|
||||||
|
double dbl6 = MAXDOUBLE ;
|
||||||
|
double dbl7 ;
|
||||||
|
|
||||||
|
double dbla1[4][3] = {
|
||||||
|
{ 1, 3, 5 },
|
||||||
|
{ 2, 4, 6 },
|
||||||
|
{ 3, 5, 7 }
|
||||||
|
} ;
|
||||||
|
double dbla2[4][3] = {
|
||||||
|
-1,-3,-5,-2,-4,-6,-3,-5,-7
|
||||||
|
} ;
|
||||||
|
double dbla3[4][3] = {
|
||||||
|
{ 11 } , { 12 } , { 13 } , { 14 }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pdbl() {
|
||||||
|
register i,j ;
|
||||||
|
|
||||||
|
printf("Doubles:\n\n") ;
|
||||||
|
|
||||||
|
printf("dbl1\t%.20e\ndbl2\t%.20e\ndbl2\t%.20e\ndbl4\t%.20e\ndbl5\t%.20e\ndbl6\t%.20e\ndbl7\t%.20e\n",
|
||||||
|
dbl1,dbl2,dbl2,dbl4,dbl5,dbl6,dbl7 ) ;
|
||||||
|
|
||||||
|
printf(" dbla1 dbla2 dbla3\n") ;
|
||||||
|
for ( i=0 ; i<4 ; i++ ) {
|
||||||
|
for ( j=0 ; j<3 ; j++ ) {
|
||||||
|
printf(" %20e %20e %20e\n",
|
||||||
|
dbla1[i][j],dbla2[i][j],dbla3[i][j]) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n") ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* long */
|
||||||
|
long lo1 = 14L ;
|
||||||
|
long lo2 = -17 ;
|
||||||
|
long lo3 = MAXLONG ;
|
||||||
|
long lo4 = MINLONG ;
|
||||||
|
long lo5 ;
|
||||||
|
long lo6 = ( 0==1 ? -1L : 1L ) ;
|
||||||
|
|
||||||
|
plong() {
|
||||||
|
printf("long\n\n") ;
|
||||||
|
|
||||||
|
printf("lo1\t%D\nlo2\t%D\nlo3\t%D\nlo4\t%D\nlo5\t%D\nlo6\t%D\n\n",
|
||||||
|
lo1,lo2,lo3,lo4,lo5,lo6 ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* structures and bit fields */
|
||||||
|
|
||||||
|
struct s1 {
|
||||||
|
int s_i ;
|
||||||
|
char s_ca[3] ;
|
||||||
|
long s_l ;
|
||||||
|
double s_f ;
|
||||||
|
struct s1 *s_s1 ;
|
||||||
|
} ;
|
||||||
|
struct s1 st1 ;
|
||||||
|
struct s1 sta[3] = {
|
||||||
|
1 , { 'a' , 'b' , 'c' } , 10 , -10 , &sta[0] ,
|
||||||
|
{ 2 } ,
|
||||||
|
3
|
||||||
|
} ;
|
||||||
|
struct s2 {
|
||||||
|
int s2_1 :1 ;
|
||||||
|
int s2_2 :2 ;
|
||||||
|
int s2_3 :4 ;
|
||||||
|
int s2_4 :7 ;
|
||||||
|
int s2_5 :2 ;
|
||||||
|
int s2_6 :11 ;
|
||||||
|
int s2_7 :6 ;
|
||||||
|
} stb = {
|
||||||
|
1,2,3,4,3,6,7
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pstruct() {
|
||||||
|
printf("structures\n\n") ;
|
||||||
|
|
||||||
|
printf("\t st1 sta[0..2]\n") ;
|
||||||
|
|
||||||
|
printf("s_i\t%15d%15d%15d%15d\n",
|
||||||
|
st1.s_i,sta[0].s_i,sta[1].s_i,sta[2].s_i) ;
|
||||||
|
printf("s_ca[0]\t%15d%15d%15d%15d\n",
|
||||||
|
st1.s_ca[0],sta[0].s_ca[0],sta[1].s_ca[0],sta[2].s_ca[0]) ;
|
||||||
|
printf("s_ca[1]\t%15d%15d%15d%15d\n",
|
||||||
|
st1.s_ca[1],sta[0].s_ca[1],sta[1].s_ca[1],sta[2].s_ca[1]) ;
|
||||||
|
printf("s_ca[2]\t%15d%15d%15d%15d\n",
|
||||||
|
st1.s_ca[2],sta[0].s_ca[2],sta[1].s_ca[2],sta[2].s_ca[2]) ;
|
||||||
|
printf("s_l\t%15D%15D%15D%15D\n",
|
||||||
|
st1.s_l,sta[0].s_l,sta[1].s_l,sta[2].s_l) ;
|
||||||
|
printf("s_f\t %13e %13e %13e %13e\n\n",
|
||||||
|
st1.s_f,sta[0].s_f,sta[1].s_f,sta[2].s_f) ;
|
||||||
|
printf("(sta[0].s_s1)->s_i = %d\n",(sta[0].s_s1)->s_i) ;
|
||||||
|
|
||||||
|
printf("\nbit fields:\n\n") ;
|
||||||
|
printf("sizeof stb %d\n",sizeof stb) ;
|
||||||
|
printf("stb\t%d %d %d %d %d %d %d\n\n",
|
||||||
|
stb.s2_1,stb.s2_2,stb.s2_3,stb.s2_4,stb.s2_5,stb.s2_6,stb.s2_7);
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
pint() ;
|
||||||
|
pch() ;
|
||||||
|
pflt() ;
|
||||||
|
pdbl() ;
|
||||||
|
plong() ;
|
||||||
|
pstruct() ;
|
||||||
|
return(0) ;
|
||||||
|
}
|
112
lang/cem/ctest/ctinit/init.cem.g
Normal file
112
lang/cem/ctest/ctinit/init.cem.g
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
Integers:
|
||||||
|
|
||||||
|
in1 4
|
||||||
|
in2 32767
|
||||||
|
in3 -32768
|
||||||
|
in4 0
|
||||||
|
inzero 0
|
||||||
|
|
||||||
|
ice1 2
|
||||||
|
ice2 8
|
||||||
|
ice3 1
|
||||||
|
ice4 0
|
||||||
|
ice5 7
|
||||||
|
ice6 19
|
||||||
|
|
||||||
|
ina 1,3,5
|
||||||
|
|
||||||
|
sint -1
|
||||||
|
lint -32765
|
||||||
|
|
||||||
|
Characters:
|
||||||
|
|
||||||
|
ch1 a(97)
|
||||||
|
ch2 0
|
||||||
|
cha1 Mesg
|
||||||
|
cha2
|
||||||
|
cha3 1
|
||||||
|
cha4 12
|
||||||
|
cha5 0123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789
|
||||||
|
|
||||||
|
cha6 1, 2, 3
|
||||||
|
4, 5, 6
|
||||||
|
pch1==cha2 yes
|
||||||
|
pch2 pch2
|
||||||
|
pch3 pch3
|
||||||
|
pch4==0 yes
|
||||||
|
|
||||||
|
stc 123
|
||||||
|
stc1 1234
|
||||||
|
mult[0],mult[1],mult[2] ab, bc, de
|
||||||
|
Floats:
|
||||||
|
|
||||||
|
fl1 0.00000000000000000000e+00
|
||||||
|
fl2 2.00000000000000000000e+00
|
||||||
|
fl2 2.00000000000000000000e+00
|
||||||
|
fl4 4.00000000000000000000e+00
|
||||||
|
fl5 2.93873587705571892581e-39
|
||||||
|
fl6 1.70141163178059625000e+38
|
||||||
|
fl7 0.00000000000000000000e+00
|
||||||
|
fla1 fla2 fla3
|
||||||
|
1.000000e+00 -1.000000e+00 1.100000e+01
|
||||||
|
3.000000e+00 -3.000000e+00 0.000000e+00
|
||||||
|
5.000000e+00 -5.000000e+00 0.000000e+00
|
||||||
|
2.000000e+00 -2.000000e+00 1.200000e+01
|
||||||
|
4.000000e+00 -4.000000e+00 0.000000e+00
|
||||||
|
6.000000e+00 -6.000000e+00 0.000000e+00
|
||||||
|
3.000000e+00 -3.000000e+00 1.300000e+01
|
||||||
|
5.000000e+00 -5.000000e+00 0.000000e+00
|
||||||
|
7.000000e+00 -7.000000e+00 0.000000e+00
|
||||||
|
0.000000e+00 0.000000e+00 1.400000e+01
|
||||||
|
0.000000e+00 0.000000e+00 0.000000e+00
|
||||||
|
0.000000e+00 0.000000e+00 0.000000e+00
|
||||||
|
|
||||||
|
Doubles:
|
||||||
|
|
||||||
|
dbl1 0.00000000000000000000e+00
|
||||||
|
dbl2 2.00000000000000000000e+00
|
||||||
|
dbl2 2.00000000000000000000e+00
|
||||||
|
dbl4 4.00000000000000000000e+00
|
||||||
|
dbl5 2.93873600000000034793e-39
|
||||||
|
dbl6 1.70141170000000000000e+38
|
||||||
|
dbl7 0.00000000000000000000e+00
|
||||||
|
dbla1 dbla2 dbla3
|
||||||
|
1.000000e+00 -1.000000e+00 1.100000e+01
|
||||||
|
3.000000e+00 -3.000000e+00 0.000000e+00
|
||||||
|
5.000000e+00 -5.000000e+00 0.000000e+00
|
||||||
|
2.000000e+00 -2.000000e+00 1.200000e+01
|
||||||
|
4.000000e+00 -4.000000e+00 0.000000e+00
|
||||||
|
6.000000e+00 -6.000000e+00 0.000000e+00
|
||||||
|
3.000000e+00 -3.000000e+00 1.300000e+01
|
||||||
|
5.000000e+00 -5.000000e+00 0.000000e+00
|
||||||
|
7.000000e+00 -7.000000e+00 0.000000e+00
|
||||||
|
0.000000e+00 0.000000e+00 1.400000e+01
|
||||||
|
0.000000e+00 0.000000e+00 0.000000e+00
|
||||||
|
0.000000e+00 0.000000e+00 0.000000e+00
|
||||||
|
|
||||||
|
long
|
||||||
|
|
||||||
|
lo1 14
|
||||||
|
lo2 -17
|
||||||
|
lo3 2147483647
|
||||||
|
lo4 -2147483648
|
||||||
|
lo5 0
|
||||||
|
lo6 1
|
||||||
|
|
||||||
|
structures
|
||||||
|
|
||||||
|
st1 sta[0..2]
|
||||||
|
s_i 0 1 2 3
|
||||||
|
s_ca[0] 0 97 0 0
|
||||||
|
s_ca[1] 0 98 0 0
|
||||||
|
s_ca[2] 0 99 0 0
|
||||||
|
s_l 0 10 0 0
|
||||||
|
s_f 0.000000e+00 -1.000000e+01 0.000000e+00 0.000000e+00
|
||||||
|
|
||||||
|
(sta[0].s_s1)->s_i = 1
|
||||||
|
|
||||||
|
bit fields:
|
||||||
|
|
||||||
|
sizeof stb 6
|
||||||
|
stb 1 2 3 4 3 6 7
|
||||||
|
|
1
lang/cem/ctest/ctinit/run
Normal file
1
lang/cem/ctest/ctinit/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=init" -fsk ../makefile ${1-gen}
|
15
lang/cem/ctest/ctmargt/margt.c
Normal file
15
lang/cem/ctest/ctmargt/margt.c
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
main(argc,argv,envp) char **argv,**envp ; {
|
||||||
|
register int rargc ;
|
||||||
|
|
||||||
|
rargc=argc ;
|
||||||
|
printf("main called with argc = %d\n",argc) ;
|
||||||
|
printf("Arguments:\n") ;
|
||||||
|
while ( rargc-- ) {
|
||||||
|
printf(" %s\n",*argv++) ;
|
||||||
|
}
|
||||||
|
printf("Environment:\n") ;
|
||||||
|
while ( *envp ) {
|
||||||
|
printf(" %s\n",*envp++) ;
|
||||||
|
}
|
||||||
|
return(argc-1) ;
|
||||||
|
}
|
7
lang/cem/ctest/ctmargt/margt.cem.g
Normal file
7
lang/cem/ctest/ctmargt/margt.cem.g
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
main called with argc = 1
|
||||||
|
Arguments:
|
||||||
|
margt.cem
|
||||||
|
Environment:
|
||||||
|
HOME=/other/keie
|
||||||
|
PATH=:/other/keie/bin:/bin:/usr/bin
|
||||||
|
TERM=MiniBee
|
1
lang/cem/ctest/ctmargt/run
Normal file
1
lang/cem/ctest/ctmargt/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=margt" -fsk ../makefile ${1-gen}
|
35
lang/cem/ctest/ctprof/makefile
Normal file
35
lang/cem/ctest/ctprof/makefile
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
.SILENT:
|
||||||
|
CEM=pdp
|
||||||
|
head: gen
|
||||||
|
diffs:
|
||||||
|
echo No diffs in ctprof
|
||||||
|
egen: tp.e
|
||||||
|
echo comparing tp.e
|
||||||
|
-if test -f tp.e.g ; then diff tp.cem.r tp.e.g ; else echo creating tp.e.g ; cp tp.cem.r tp.e.g ; fi
|
||||||
|
rm -f tp.e
|
||||||
|
tp.e: tp.c $(CEM)
|
||||||
|
$(CEM) -p -c.e tp.c
|
||||||
|
tp.cem.r: tp.cem
|
||||||
|
echo running tp
|
||||||
|
-tp.cem >tp.cem.r
|
||||||
|
rm -f tp.cem
|
||||||
|
procentry.k: procentry.c
|
||||||
|
$(CEM) -c.k procentry.c
|
||||||
|
tp.cem: tp.c procentry.k
|
||||||
|
echo $(CEM) tp.c procentry.k
|
||||||
|
$(CEM) -p -o tp.cem -O tp.c procentry.k
|
||||||
|
rm -f procentry.[kosm] tp.[kmos]
|
||||||
|
gen: tp.cem.r
|
||||||
|
echo comparing tp
|
||||||
|
-if test -f tp.cem.g ; then diff tp.cem.r tp.cem.g ; else echo creating tp.cem.g ; cp tp.cem.r tp.cem.g ; fi
|
||||||
|
|
||||||
|
pr:
|
||||||
|
@pr `pwd`/*.c tp.cem.g
|
||||||
|
|
||||||
|
opr:
|
||||||
|
make pr | opr
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
-rm -f *.[kosme] *.old
|
||||||
|
|
||||||
|
transI transM cmpI cmpM:
|
36
lang/cem/ctest/ctprof/procentry.c
Normal file
36
lang/cem/ctest/ctprof/procentry.c
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int level = 0 ;
|
||||||
|
int procentry(name) char *name ; {
|
||||||
|
register int count ;
|
||||||
|
|
||||||
|
count=level++ ;
|
||||||
|
while ( count-- ) {
|
||||||
|
printf(" ") ;
|
||||||
|
}
|
||||||
|
printf("Entering %s\n",name) ;
|
||||||
|
}
|
||||||
|
int procexit(name) char *name ; {
|
||||||
|
register int count ;
|
||||||
|
|
||||||
|
count= --level ;
|
||||||
|
while ( count-- ) {
|
||||||
|
printf(" ") ;
|
||||||
|
}
|
||||||
|
printf("Leaving %s\n",name) ;
|
||||||
|
}
|
2
lang/cem/ctest/ctprof/run
Normal file
2
lang/cem/ctest/ctprof/run
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
echo test profiling
|
||||||
|
make -k "`grep CEM= ../makefile`" ${1-gen}
|
27
lang/cem/ctest/ctprof/tp.c
Normal file
27
lang/cem/ctest/ctprof/tp.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
*
|
||||||
|
* This product is part of the Amsterdam Compiler Kit.
|
||||||
|
*
|
||||||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||||||
|
* obtained in writing. Requests for such permissions may be sent to
|
||||||
|
*
|
||||||
|
* Dr. Andrew S. Tanenbaum
|
||||||
|
* Wiskundig Seminarium
|
||||||
|
* Vrije Universiteit
|
||||||
|
* Postbox 7161
|
||||||
|
* 1007 MC Amsterdam
|
||||||
|
* The Netherlands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Author: E.G. Keizer */
|
||||||
|
|
||||||
|
int fac(n) { return ( n==0 ? 1 : n*fac(n-1)) ; }
|
||||||
|
|
||||||
|
main() {
|
||||||
|
{ int dummy ;
|
||||||
|
if ( fac(6) != 720 ) printf("vernielt return waarde\n") ;
|
||||||
|
}
|
||||||
|
return 0 ;
|
||||||
|
}
|
16
lang/cem/ctest/ctprof/tp.cem.g
Normal file
16
lang/cem/ctest/ctprof/tp.cem.g
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
Entering main
|
||||||
|
Entering fac
|
||||||
|
Entering fac
|
||||||
|
Entering fac
|
||||||
|
Entering fac
|
||||||
|
Entering fac
|
||||||
|
Entering fac
|
||||||
|
Entering fac
|
||||||
|
Leaving fac
|
||||||
|
Leaving fac
|
||||||
|
Leaving fac
|
||||||
|
Leaving fac
|
||||||
|
Leaving fac
|
||||||
|
Leaving fac
|
||||||
|
Leaving fac
|
||||||
|
Leaving main
|
1
lang/cem/ctest/ctsys/run
Normal file
1
lang/cem/ctest/ctsys/run
Normal file
|
@ -0,0 +1 @@
|
||||||
|
make "P=tfork" -fsk ../makefile ${1-gen}
|
11
lang/cem/ctest/ctsys/signal.c
Normal file
11
lang/cem/ctest/ctsys/signal.c
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#include <signal.h>
|
||||||
|
foo()
|
||||||
|
{
|
||||||
|
printf("signal received\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
signal(SIGINT,foo);
|
||||||
|
while(1);
|
||||||
|
}
|
31
lang/cem/ctest/ctsys/tfork.c
Normal file
31
lang/cem/ctest/ctsys/tfork.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
main(argc,argv) char **argv ; {
|
||||||
|
int child, waitchild ;
|
||||||
|
int status ;
|
||||||
|
child=fork() ;
|
||||||
|
if ( child== -1 ) {
|
||||||
|
printf("fork returned -1\n") ;
|
||||||
|
return 1 ;
|
||||||
|
}
|
||||||
|
if ( child ) {
|
||||||
|
/* The parent */
|
||||||
|
printf("childno %d\n",child ) ;
|
||||||
|
do {
|
||||||
|
waitchild= wait(&status ) ;
|
||||||
|
printf("Child %d, status 0x%x\n",waitchild,status) ;
|
||||||
|
if ( waitchild== -1 ) {
|
||||||
|
printf("No children\n") ;
|
||||||
|
return 1 ;
|
||||||
|
}
|
||||||
|
} while ( waitchild!=child ) ;
|
||||||
|
if ( argc<=1 && status != (8<<8) ) {
|
||||||
|
printf("incorrect status return\n") ;
|
||||||
|
return 2 ;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* The child */
|
||||||
|
if ( argc>1 ) pause() ;
|
||||||
|
return 8 ;
|
||||||
|
}
|
||||||
|
printf("fork/wait ok\n") ;
|
||||||
|
return 0 ;
|
||||||
|
}
|
3
lang/cem/ctest/ctsys/tfork.cem.g
Normal file
3
lang/cem/ctest/ctsys/tfork.cem.g
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
childno N
|
||||||
|
Child N, status 0x800
|
||||||
|
fork/wait ok
|
9
lang/cem/ctest/local.h
Normal file
9
lang/cem/ctest/local.h
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# define MAXINT 32767
|
||||||
|
# define MININT -32768
|
||||||
|
# define MAXLONG 2147483647
|
||||||
|
# define MINLONG -2147483648
|
||||||
|
# define EPSFLOAT 2.938736e-39
|
||||||
|
# define MAXFLOAT 1.7014117e38
|
||||||
|
# define EPSDOUBLE 2.938736e-39
|
||||||
|
/* for 64-bit double 1.701411834604692293e38 */
|
||||||
|
# define MAXDOUBLE 1.7014117e38
|
49
lang/cem/ctest/makefile
Normal file
49
lang/cem/ctest/makefile
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.SILENT:
|
||||||
|
CEM=acc
|
||||||
|
head:
|
||||||
|
echo use run
|
||||||
|
|
||||||
|
diffs: $P.pcc.r $P.cc.r $P.cem.r
|
||||||
|
echo three compiler diff
|
||||||
|
-diff3 $P.*.r | tee diffs
|
||||||
|
egen: $P.e
|
||||||
|
echo comparing $P.e
|
||||||
|
-if test -f $P.e.g ; then diff -h $P.e $P.e.g ; else echo creating $P.e.g ; cp $P.e $P.e.g ; fi
|
||||||
|
rm -f $P.e
|
||||||
|
$P.e: $P.c $(CEM)
|
||||||
|
$(CEM) -c.e $P.c
|
||||||
|
$P.pcc.r: $P.pcc
|
||||||
|
echo running $P.pcc
|
||||||
|
-$P.pcc >$P.pcc.r
|
||||||
|
rm -f $P.pcc
|
||||||
|
$P.cc.r: $P.cc
|
||||||
|
echo running $P.cc
|
||||||
|
-$P.cc >$P.cc.r
|
||||||
|
rm -f $P.cc
|
||||||
|
$P.cem.r: $P.cem
|
||||||
|
echo running $P.cem
|
||||||
|
-$P.cem >$P.cem.r
|
||||||
|
rm -f $P.cem
|
||||||
|
$P.pcc: /tmp
|
||||||
|
echo pcc $P.c
|
||||||
|
pcc -o $P.pcc $P.c
|
||||||
|
$P.cc: /tmp
|
||||||
|
echo cc $P.c
|
||||||
|
cc -o $P.cc $P.c
|
||||||
|
$P.cem: /tmp
|
||||||
|
echo $(CEM) $P.c
|
||||||
|
$(CEM) -o $P.cem $P.c
|
||||||
|
gen: $P.cem.r
|
||||||
|
echo comparing $P
|
||||||
|
-if test -f $P.cem.g ; then diff -h $P.cem.r $P.cem.g ; else echo creating $P.cem.g ; cp $P.cem.r $P.cem.g ; fi
|
||||||
|
|
||||||
|
install cmp:
|
||||||
|
|
||||||
|
pr:
|
||||||
|
@pr `pwd`/$P.c `pwd`/$P.cem.g
|
||||||
|
|
||||||
|
opr:
|
||||||
|
make pr | opr
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f $P.[kmsoe] core a.out *.old
|
50
lang/cem/ctest/makefile.i86
Normal file
50
lang/cem/ctest/makefile.i86
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.SILENT:
|
||||||
|
CEM=net86
|
||||||
|
head:
|
||||||
|
echo use run
|
||||||
|
|
||||||
|
diffs: $P.pcc.r $P.cc.r $P.cem.r
|
||||||
|
echo three compiler diff
|
||||||
|
-diff3 $P.*.r | tee diffs
|
||||||
|
egen: $P.e
|
||||||
|
echo comparing $P.e
|
||||||
|
-if test -f $P.e.g ; then diff -h $P.e $P.e.g ; else echo creating $P.e.g ; cp $P.e $P.e.g ; fi
|
||||||
|
rm -f $P.e
|
||||||
|
$P.e: $P.c $(CEM)
|
||||||
|
$(CEM) -c.e $P.c
|
||||||
|
$P.pcc.r: $P.pcc
|
||||||
|
echo running $P.pcc
|
||||||
|
-$P.pcc >$P.pcc.r
|
||||||
|
rm -f $P.pcc
|
||||||
|
$P.cc.r: $P.cc
|
||||||
|
echo running $P.cc
|
||||||
|
-$P.cc >$P.cc.r
|
||||||
|
rm -f $P.cc
|
||||||
|
$P.cem.r: $P.cem
|
||||||
|
echo running $P.cem
|
||||||
|
idl I7 $P.cem
|
||||||
|
-talk I7 >$P.cem.r
|
||||||
|
rm -f $P.cem
|
||||||
|
$P.pcc: $P.c /usr/lib/ccom
|
||||||
|
echo pcc $P.c
|
||||||
|
pcc -o $P.pcc $P.c
|
||||||
|
$P.cc: $P.c /lib/c0 /lib/c1
|
||||||
|
echo cc $P.c
|
||||||
|
cc -o $P.cc $P.c
|
||||||
|
$P.cem: $P.c
|
||||||
|
echo $(CEM) $P.c
|
||||||
|
$(CEM) -o $P.cem $P.c
|
||||||
|
gen: $P.cem.r
|
||||||
|
echo comparing $P
|
||||||
|
-if test -f $P.cem.g ; then diff -h $P.cem.r $P.cem.g ; else echo creating $P.cem.g ; cp $P.cem.r $P.cem.g ; fi
|
||||||
|
|
||||||
|
install cmp:
|
||||||
|
|
||||||
|
pr:
|
||||||
|
@pr `pwd`/$P.c `pwd`/$P.cem.g
|
||||||
|
|
||||||
|
opr:
|
||||||
|
make pr | opr
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f $P.[kmsoe] core a.out *.old
|
49
lang/cem/ctest/makefile.int
Normal file
49
lang/cem/ctest/makefile.int
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.SILENT:
|
||||||
|
CEM=int -O
|
||||||
|
head:
|
||||||
|
echo use run
|
||||||
|
|
||||||
|
diffs: $P.pcc.r $P.cc.r $P.cem.r
|
||||||
|
echo three compiler diff
|
||||||
|
-diff3 $P.*.r | tee diffs
|
||||||
|
egen: $P.e
|
||||||
|
echo comparing $P.e
|
||||||
|
-if test -f $P.e.g ; then diff -h $P.e $P.e.g ; else echo creating $P.e.g ; cp $P.e $P.e.g ; fi
|
||||||
|
rm -f $P.e
|
||||||
|
$P.e: $P.c $(CEM)
|
||||||
|
$(CEM) -c.e $P.c
|
||||||
|
$P.pcc.r: $P.pcc
|
||||||
|
echo running $P.pcc
|
||||||
|
-$P.pcc >$P.pcc.r
|
||||||
|
rm -f $P.pcc
|
||||||
|
$P.cc.r: $P.cc
|
||||||
|
echo running $P.cc
|
||||||
|
-$P.cc >$P.cc.r
|
||||||
|
rm -f $P.cc
|
||||||
|
$P.cem.r: $P.cem
|
||||||
|
echo running $P.cem
|
||||||
|
-/usr/evert/compile/a.out $P.cem >$P.cem.r
|
||||||
|
rm -f $P.cem
|
||||||
|
$P.pcc: $P.c /usr/lib/ccom
|
||||||
|
echo pcc $P.c
|
||||||
|
pcc -o $P.pcc $P.c
|
||||||
|
$P.cc: $P.c /lib/c0 /lib/c1
|
||||||
|
echo cc $P.c
|
||||||
|
cc -o $P.cc $P.c
|
||||||
|
$P.cem: $P.c
|
||||||
|
echo $(CEM) $P.c
|
||||||
|
$(CEM) -o $P.cem $P.c
|
||||||
|
gen: $P.cem.r
|
||||||
|
echo comparing $P
|
||||||
|
-if test -f $P.cem.g ; then diff -h $P.cem.r $P.cem.g ; else echo creating $P.cem.g ; cp $P.cem.r $P.cem.g ; fi
|
||||||
|
|
||||||
|
install cmp:
|
||||||
|
|
||||||
|
pr:
|
||||||
|
@pr `pwd`/$P.c `pwd`/$P.cem.g
|
||||||
|
|
||||||
|
opr:
|
||||||
|
make pr | opr
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f $P.[kmsoe] core a.out *.old
|
49
lang/cem/ctest/makefile.std
Normal file
49
lang/cem/ctest/makefile.std
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.SILENT:
|
||||||
|
CEM=acc
|
||||||
|
head:
|
||||||
|
echo use run
|
||||||
|
|
||||||
|
diffs: $P.pcc.r $P.cc.r $P.cem.r
|
||||||
|
echo three compiler diff
|
||||||
|
-diff3 $P.*.r | tee diffs
|
||||||
|
egen: $P.e
|
||||||
|
echo comparing $P.e
|
||||||
|
-if test -f $P.e.g ; then diff -h $P.e $P.e.g ; else echo creating $P.e.g ; cp $P.e $P.e.g ; fi
|
||||||
|
rm -f $P.e
|
||||||
|
$P.e: $P.c $(CEM)
|
||||||
|
$(CEM) -c.e $P.c
|
||||||
|
$P.pcc.r: $P.pcc
|
||||||
|
echo running $P.pcc
|
||||||
|
-$P.pcc >$P.pcc.r
|
||||||
|
rm -f $P.pcc
|
||||||
|
$P.cc.r: $P.cc
|
||||||
|
echo running $P.cc
|
||||||
|
-$P.cc >$P.cc.r
|
||||||
|
rm -f $P.cc
|
||||||
|
$P.cem.r: $P.cem
|
||||||
|
echo running $P.cem
|
||||||
|
-$P.cem >$P.cem.r
|
||||||
|
rm -f $P.cem
|
||||||
|
$P.pcc: /tmp
|
||||||
|
echo pcc $P.c
|
||||||
|
pcc -o $P.pcc $P.c
|
||||||
|
$P.cc: /tmp
|
||||||
|
echo cc $P.c
|
||||||
|
cc -o $P.cc $P.c
|
||||||
|
$P.cem: /tmp
|
||||||
|
echo $(CEM) $P.c
|
||||||
|
$(CEM) -o $P.cem $P.c
|
||||||
|
gen: $P.cem.r
|
||||||
|
echo comparing $P
|
||||||
|
-if test -f $P.cem.g ; then diff -h $P.cem.r $P.cem.g ; else echo creating $P.cem.g ; cp $P.cem.r $P.cem.g ; fi
|
||||||
|
|
||||||
|
install cmp:
|
||||||
|
|
||||||
|
pr:
|
||||||
|
@pr `pwd`/$P.c `pwd`/$P.cem.g
|
||||||
|
|
||||||
|
opr:
|
||||||
|
make pr | opr
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f $P.[kmsoe] core a.out *.old
|
174
lang/cem/ctest/out.std
Normal file
174
lang/cem/ctest/out.std
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
Tue May 22 15:12:22 MDT 1984
|
||||||
|
***** ctconv
|
||||||
|
acc conv.c
|
||||||
|
conv.c
|
||||||
|
"conv.c", line 41: warning: Overflow in constant expression
|
||||||
|
running conv.cem
|
||||||
|
comparing conv
|
||||||
|
***** ctdecl
|
||||||
|
acc decl.c
|
||||||
|
decl.c
|
||||||
|
running decl.cem
|
||||||
|
comparing decl
|
||||||
|
***** ctdivers
|
||||||
|
acc ops.c
|
||||||
|
ops.c
|
||||||
|
running ops.cem
|
||||||
|
comparing ops
|
||||||
|
***** cterr
|
||||||
|
acc bugs.c
|
||||||
|
bugs.c
|
||||||
|
"bugs.c", line 92: warning: Overflow in constant expression
|
||||||
|
running bugs.cem
|
||||||
|
comparing bugs
|
||||||
|
9,$c9,$
|
||||||
|
< compl_ind
|
||||||
|
< END
|
||||||
|
---
|
||||||
|
> END
|
||||||
|
***** ctest1
|
||||||
|
acc test.c
|
||||||
|
test.c
|
||||||
|
running test.cem
|
||||||
|
comparing test
|
||||||
|
***** ctest2
|
||||||
|
acc t7.c
|
||||||
|
t7.c
|
||||||
|
"t7.c", line 161: warning: statement not reached
|
||||||
|
"t7.c", line 178: warning: statement not reached
|
||||||
|
"t7.c", line 182: warning: statement not reached
|
||||||
|
"t7.c", line 186: warning: statement not reached
|
||||||
|
"t7.c", line 190: warning: statement not reached
|
||||||
|
"t7.c", line 194: warning: statement not reached
|
||||||
|
"t7.c", line 198: warning: statement not reached
|
||||||
|
"t7.c", line 205: warning: statement not reached
|
||||||
|
"t7.c", line 207: warning: statement not reached
|
||||||
|
"t7.c", line 211: warning: statement not reached
|
||||||
|
"t7.c", line 213: warning: statement not reached
|
||||||
|
"t7.c", line 287: warning: statement not reached
|
||||||
|
"t7.c", line 294: warning: statement not reached
|
||||||
|
"t7.c", line 300: warning: statement not reached
|
||||||
|
"t7.c", line 307: warning: statement not reached
|
||||||
|
"t7.c", line 343: warning: statement not reached
|
||||||
|
"t7.c", line 344: warning: statement not reached
|
||||||
|
"t7.c", line 345: warning: statement not reached
|
||||||
|
"t7.c", line 346: warning: statement not reached
|
||||||
|
"t7.c", line 348: warning: statement not reached
|
||||||
|
"t7.c", line 452: warning: statement not reached
|
||||||
|
"t7.c", line 561: warning: statement not reached
|
||||||
|
"t7.c", line 589: warning: statement not reached
|
||||||
|
running t7.cem
|
||||||
|
comparing t7
|
||||||
|
***** ctest3
|
||||||
|
acc test2.c
|
||||||
|
test2.c
|
||||||
|
running test2.cem
|
||||||
|
comparing test2
|
||||||
|
***** ctest5
|
||||||
|
acc test1.c
|
||||||
|
test1.c
|
||||||
|
"test1.c", line 101: warning: Illegal shift count in constant expression
|
||||||
|
"test1.c", line 370: warning: illegal pointer combination
|
||||||
|
"test1.c", line 371: warning: illegal pointer combination
|
||||||
|
"test1.c", line 372: warning: illegal pointer combination
|
||||||
|
"test1.c", line 384: warning: illegal pointer combination
|
||||||
|
"test1.c", line 407: warning: illegal pointer combination
|
||||||
|
"test1.c", line 408: warning: illegal pointer combination
|
||||||
|
"test1.c", line 409: warning: illegal pointer combination
|
||||||
|
"test1.c", line 421: warning: illegal pointer combination
|
||||||
|
running test1.cem
|
||||||
|
comparing test1
|
||||||
|
***** ctgen
|
||||||
|
`bf.c' is up to date.
|
||||||
|
acc bf.c
|
||||||
|
bf.c
|
||||||
|
running bf.cem
|
||||||
|
comparing bf
|
||||||
|
`cel.c' is up to date.
|
||||||
|
acc cel.c
|
||||||
|
cel.c
|
||||||
|
running cel.cem
|
||||||
|
comparing cel
|
||||||
|
`clu.c' is up to date.
|
||||||
|
acc clu.c
|
||||||
|
clu.c
|
||||||
|
"clu.c", line 60: warning: Overflow in constant expression
|
||||||
|
"clu.c", line 66: warning: Overflow in constant expression
|
||||||
|
running clu.cem
|
||||||
|
comparing clu
|
||||||
|
28c28
|
||||||
|
< x *= 40000 0
|
||||||
|
---
|
||||||
|
> x *= 40000 6784
|
||||||
|
65c65
|
||||||
|
< y = ( x *= 40000 ) 0 0
|
||||||
|
---
|
||||||
|
> y = ( x *= 40000 ) 6784 6784
|
||||||
|
102c102
|
||||||
|
< no if ( x *= 40000 ) yes() ; else no() 0
|
||||||
|
---
|
||||||
|
> yes if ( x *= 40000 ) yes() ; else no() 6784
|
||||||
|
`ec.c' is up to date.
|
||||||
|
acc ec.c
|
||||||
|
ec.c
|
||||||
|
"ec.c", line 58: warning: Overflow in constant expression
|
||||||
|
"ec.c", line 64: warning: Overflow in constant expression
|
||||||
|
running ec.cem
|
||||||
|
comparing ec
|
||||||
|
`ef.c' is up to date.
|
||||||
|
acc ef.c
|
||||||
|
ef.c
|
||||||
|
running ef.cem
|
||||||
|
comparing ef
|
||||||
|
`ei.c' is up to date.
|
||||||
|
acc ei.c
|
||||||
|
ei.c
|
||||||
|
"ei.c", line 22: warning: Overflow in constant expression
|
||||||
|
"ei.c", line 65: warning: Overflow in constant expression
|
||||||
|
"ei.c", line 108: warning: Overflow in constant expression
|
||||||
|
running ei.cem
|
||||||
|
comparing ei
|
||||||
|
`el.c' is up to date.
|
||||||
|
acc el.c
|
||||||
|
el.c
|
||||||
|
running el.cem
|
||||||
|
comparing el
|
||||||
|
`eu.c' is up to date.
|
||||||
|
acc eu.c
|
||||||
|
eu.c
|
||||||
|
"eu.c", line 58: warning: Overflow in constant expression
|
||||||
|
"eu.c", line 64: warning: Overflow in constant expression
|
||||||
|
running eu.cem
|
||||||
|
comparing eu
|
||||||
|
28c28
|
||||||
|
< x *= 40000 0
|
||||||
|
---
|
||||||
|
> x *= 40000 6784
|
||||||
|
65c65
|
||||||
|
< y = ( x *= 40000 ) 0 0
|
||||||
|
---
|
||||||
|
> y = ( x *= 40000 ) 6784 6784
|
||||||
|
102c102
|
||||||
|
< no if ( x *= 40000 ) yes() ; else no() 0
|
||||||
|
---
|
||||||
|
> yes if ( x *= 40000 ) yes() ; else no() 6784
|
||||||
|
`id.c' is up to date.
|
||||||
|
acc id.c
|
||||||
|
id.c
|
||||||
|
running id.cem
|
||||||
|
comparing id
|
||||||
|
`lc.c' is up to date.
|
||||||
|
acc lc.c
|
||||||
|
lc.c
|
||||||
|
"lc.c", line 60: warning: Overflow in constant expression
|
||||||
|
"lc.c", line 66: warning: Overflow in constant expression
|
||||||
|
running lc.cem
|
||||||
|
comparing lc
|
||||||
|
`ld.c' is up to date.
|
||||||
|
acc ld.c
|
||||||
|
ld.c
|
||||||
|
running ld.cem
|
||||||
|
comparing ld
|
||||||
|
`lf.c' is up to date.
|
||||||
|
acc lf.c
|
||||||
|
lf.c
|
13
lang/cem/ctest/run
Executable file
13
lang/cem/ctest/run
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
date
|
||||||
|
for A in ct*
|
||||||
|
do (
|
||||||
|
echo "***** $A"
|
||||||
|
cd "$A"
|
||||||
|
if test -r run ; then
|
||||||
|
sh run "${1-gen}"
|
||||||
|
else
|
||||||
|
echo "No run file present"
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
done
|
||||||
|
date
|
Loading…
Reference in a new issue