Mercurial > repo
annotate share/delvs-master/bf.h @ 12312:ab575fb7f10e draft
<b_jonas> `` cp -vi /hackenv/tmp/egel-master/include/prelude-hackeso.eg /hackenv/interps/egel/
author | HackEso <hackeso@esolangs.org> |
---|---|
date | Thu, 20 Feb 2020 23:23:38 +0000 |
parents | 38a5b4d8a98e |
children |
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 */ |