annotate share/delvs-master/bf.h @ 12500:e48c08805365 draft default tip

<b_jonas> ` learn \'The password of the month is Cthulhuquagdonic Mothraquagdonic Narwhalicorn.\' # https://logs.esolangs.org/libera-esolangs/2024-04.html#lKE Infinite craft
author HackEso <hackeso@esolangs.org>
date Wed, 01 May 2024 06:39:10 +0000
parents 38a5b4d8a98e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3840
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
1 #include <stdio.h>
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
2 #define c g->code
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
3 #define p g->pointer
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
4 #define f g->file
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
5
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
6 struct Data {
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
7 const char *code;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
8 char vars[30000];
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
9 char *pointer;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
10 };
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
11
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
12 void dummyLexer(struct Data *g) { while(*c) if(*c++ == ']') return; }
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
13
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
14 void lexer(struct Data *g) {
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
15 const char *cc = c;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
16 while(*c) {
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
17 switch (*c++) {
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
18 case '>':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
19 ++p;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
20 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
21
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
22 case '<':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
23 --p;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
24 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
25
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
26 case '+':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
27 ++*p;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
28 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
29
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
30 case '-':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
31 --*p;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
32 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
33
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
34 case '.':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
35 putchar(*p);
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
36 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
37
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
38 case ',':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
39 *p = getchar();
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
40 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
41
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
42 case '[':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
43 cc = c;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
44 if(!*p) dummyLexer(g);
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
45 while(*p) {
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
46 c = cc; // restore char position to start of loop
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
47 lexer(g);
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
48 }
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
49 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
50
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
51 case ']':
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
52 return;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
53
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
54 default:
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
55 // everything else is comments
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
56 break;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
57 }
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
58 }
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
59 return;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
60 }
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
61 /*
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
62 * Usage:
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
63 * struct Data g;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
64 * g.code = file;
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
65 * g.pointer = &g.data[15000];
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
66 * lexer(&g);
38a5b4d8a98e <oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff changeset
67 */