annotate CbC-examples/goto.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 5d30d517ebed
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
78
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #define __environment _CbC_environment
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #define __return _CbC_return
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 extern int printf(const char *,...);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 __code (*conv)(int,__code (*)());
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 __code a2(int i,__code conv());
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 __code a3(int i,__code conv());
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 __code a4(int i,__code conv());
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 __code a5(int i,__code conv());
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 __code a6();
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 __code a7();
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 __code a8();
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 __code a9();
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 char* print_conv(__code conv());
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 __code (*exit0)(int,void*);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 void *env;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 a2(int i,__code conv())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 printf("#0023:a2 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 goto conv(i+1,a4);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 a3(int i,__code (*conv)())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 printf("#0030:a3 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 goto conv(i+1,a5);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 a4(int i,__code conv())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 printf("#0037:a4 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 goto (*conv)(i+1,a6);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 a5(int i,__code (*conv)())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 printf("#0044:a5 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 goto (*conv)(i+1,i+2,i+3,a7);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 a6(int i,int j,int k,__code conv())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 printf("#0051:a6 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 goto conv(i+1,j,k,a8);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 a7(int i,int j,int k,__code (*conv)())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 printf("#0058:a7 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 goto conv(i+1,j,k,a9);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 a8(int i,int j,int k,__code conv())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 printf("#0065:a8 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 goto (*conv)(i+1,j,k,exit0);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 __code
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 a9(int i,int j,int k,__code (*conv)())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 printf("#0072:a9 %d %s\n",i,print_conv(conv));
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 goto (*conv)(0,env);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
126
5d30d517ebed fix example
mir3636
parents: 78
diff changeset
77 int main(int ac,char *av[]) {
78
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 exit0 = __return;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 env = __environment;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 conv = a2;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 goto conv(1,a3);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 char*
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 print_conv(__code conv())
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 if(conv==a2) return "a2";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 if(conv==a3) return "a3";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 if(conv==a4) return "a4";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 if(conv==a5) return "a5";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 if(conv==a6) return "a6";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 if(conv==a7) return "a7";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 if(conv==a8) return "a8";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 if(conv==a9) return "a9";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 else return "xx";
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 }