comparison Example.ipynb @ 92:9cde0dc0699e default tip

fix README.md
author aka
date Wed, 27 Jun 2018 00:10:30 +0900
parents
children
comparison
equal deleted inserted replaced
91:ee031a093708 92:9cde0dc0699e
1 {
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# CbC kernel"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "## Hello CbC!"
15 ]
16 },
17 {
18 "cell_type": "code",
19 "execution_count": 4,
20 "metadata": {
21 "scrolled": true
22 },
23 "outputs": [
24 {
25 "name": "stdout",
26 "output_type": "stream",
27 "text": [
28 "Hello CbC!\n"
29 ]
30 },
31 {
32 "name": "stderr",
33 "output_type": "stream",
34 "text": [
35 "[CbC kernel] Executable exited with code 11"
36 ]
37 }
38 ],
39 "source": [
40 "#define __environment _CbC_environment\n",
41 "#define __return _CbC_return\n",
42 "\n",
43 "extern int printf(const char*, ...);\n",
44 "\n",
45 "__code Hello_CbC();\n",
46 "\n",
47 "int main(int argc, char **argv){\n",
48 " goto Hello_CbC();\n",
49 " return 0;\n",
50 "}\n",
51 "\n",
52 "__code Hello_CbC(){\n",
53 " printf(\"Hello CbC!\\n\");\n",
54 " \n",
55 "}"
56 ]
57 },
58 {
59 "cell_type": "markdown",
60 "metadata": {},
61 "source": [
62 "## fizzbazz"
63 ]
64 },
65 {
66 "cell_type": "markdown",
67 "metadata": {},
68 "source": [
69 "https://gist.github.com/hanachin/3e2f9034e0fe382f019e55de4c6b016b"
70 ]
71 },
72 {
73 "cell_type": "code",
74 "execution_count": 2,
75 "metadata": {},
76 "outputs": [
77 {
78 "name": "stdout",
79 "output_type": "stream",
80 "text": [
81 "1\n",
82 "2\n",
83 "Fizz\n",
84 "4\n",
85 "Buzz\n",
86 "Fizz\n",
87 "7\n",
88 "8\n",
89 "Fizz\n",
90 "Buzz\n",
91 "11\n",
92 "Fizz\n",
93 "13\n",
94 "14\n",
95 "FizzBuzz\n",
96 "16\n",
97 "17\n",
98 "Fizz\n",
99 "19\n",
100 "Buzz\n",
101 "Fizz\n",
102 "22\n",
103 "23\n",
104 "Fizz\n",
105 "Buzz\n",
106 "26\n",
107 "Fizz\n",
108 "28\n",
109 "29\n",
110 "FizzBuzz\n",
111 "31\n",
112 "32\n",
113 "Fizz\n",
114 "34\n",
115 "Buzz\n",
116 "Fizz\n",
117 "37\n",
118 "38\n",
119 "Fizz\n",
120 "Buzz\n",
121 "41\n",
122 "Fizz\n",
123 "43\n",
124 "44\n",
125 "FizzBuzz\n",
126 "46\n",
127 "47\n",
128 "Fizz\n",
129 "49\n",
130 "Buzz\n",
131 "Fizz\n",
132 "52\n",
133 "53\n",
134 "Fizz\n",
135 "Buzz\n",
136 "56\n",
137 "Fizz\n",
138 "58\n",
139 "59\n",
140 "FizzBuzz\n",
141 "61\n",
142 "62\n",
143 "Fizz\n",
144 "64\n",
145 "Buzz\n",
146 "Fizz\n",
147 "67\n",
148 "68\n",
149 "Fizz\n",
150 "Buzz\n",
151 "71\n",
152 "Fizz\n",
153 "73\n",
154 "74\n",
155 "FizzBuzz\n",
156 "76\n",
157 "77\n",
158 "Fizz\n",
159 "79\n",
160 "Buzz\n",
161 "Fizz\n",
162 "82\n",
163 "83\n",
164 "Fizz\n",
165 "Buzz\n",
166 "86\n",
167 "Fizz\n",
168 "88\n",
169 "89\n",
170 "FizzBuzz\n",
171 "91\n",
172 "92\n",
173 "Fizz\n",
174 "94\n",
175 "Buzz\n",
176 "Fizz\n",
177 "97\n",
178 "98\n",
179 "Fizz\n",
180 "Buzz\n"
181 ]
182 }
183 ],
184 "source": [
185 "#define __environment _CbC_environment\n",
186 "#define __return _CbC_return\n",
187 "\n",
188 "#include <stdio.h>\n",
189 "\n",
190 "typedef __code(*main_ret_code_t)(int, void *env);\n",
191 "\n",
192 "__code fizzbuzz(int n, int max, main_ret_code_t ret, void *env);\n",
193 "__code fizz(int n, int max, main_ret_code_t ret, void *env);\n",
194 "__code buzz(int n, int max, const char *fizz, main_ret_code_t ret, void *env);\n",
195 "__code print_fizzbuzz(int n, int max, const char *fizz, const char *buzz, main_ret_code_t ret, void *env);\n",
196 "\n",
197 "int main(void){\n",
198 " goto fizzbuzz(1, 100, __return, __environment);\n",
199 "}\n",
200 "\n",
201 "__code fizzbuzz(int n, int max, main_ret_code_t ret, void *env) {\n",
202 " if (n > max) goto ret(0, env);\n",
203 "\n",
204 " goto fizz(n, max, ret, env);\n",
205 "}\n",
206 "\n",
207 "__code fizz(int n, int max, main_ret_code_t ret, void *env) {\n",
208 " if (n % 3 == 0) {\n",
209 " goto buzz(n, max, \"Fizz\", ret, env);\n",
210 " } else {\n",
211 " goto buzz(n, max, \"\", ret, env);\n",
212 " }\n",
213 "}\n",
214 "\n",
215 "__code buzz(int n, int max, const char *fizz, main_ret_code_t ret, void *env) {\n",
216 " if (n % 5 == 0) {\n",
217 " goto print_fizzbuzz(n, max, fizz, \"Buzz\", ret, env);\n",
218 " } else {\n",
219 " goto print_fizzbuzz(n, max, fizz, \"\", ret, env);\n",
220 " }\n",
221 "}\n",
222 "\n",
223 "__code print_fizzbuzz(int n, int max, const char *fizz, const char *buzz, main_ret_code_t ret, void *env) {\n",
224 " if (*fizz || *buzz) {\n",
225 " printf(\"%s%s\\n\", fizz, buzz);\n",
226 " } else {\n",
227 " printf(\"%d\\n\", n);\n",
228 " }\n",
229 "\n",
230 " goto fizzbuzz(n + 1, max, ret, env);\n",
231 "}"
232 ]
233 },
234 {
235 "cell_type": "code",
236 "execution_count": null,
237 "metadata": {},
238 "outputs": [],
239 "source": []
240 }
241 ],
242 "metadata": {
243 "kernelspec": {
244 "display_name": "CbC",
245 "language": "CbC",
246 "name": "cbc"
247 },
248 "language_info": {
249 "file_extension": ".c",
250 "mimetype": "text/plain",
251 "name": "C"
252 }
253 },
254 "nbformat": 4,
255 "nbformat_minor": 2
256 }