comparison share/delvs-master/bf.h @ 3840:38a5b4d8a98e

<oerjan> rm -R share/delvs-master; mv delvs-master share
author HackBot
date Wed, 25 Sep 2013 13:47:14 +0000
parents
children
comparison
equal deleted inserted replaced
3839:02b377019805 3840:38a5b4d8a98e
1 #include <stdio.h>
2 #define c g->code
3 #define p g->pointer
4 #define f g->file
5
6 struct Data {
7 const char *code;
8 char vars[30000];
9 char *pointer;
10 };
11
12 void dummyLexer(struct Data *g) { while(*c) if(*c++ == ']') return; }
13
14 void lexer(struct Data *g) {
15 const char *cc = c;
16 while(*c) {
17 switch (*c++) {
18 case '>':
19 ++p;
20 break;
21
22 case '<':
23 --p;
24 break;
25
26 case '+':
27 ++*p;
28 break;
29
30 case '-':
31 --*p;
32 break;
33
34 case '.':
35 putchar(*p);
36 break;
37
38 case ',':
39 *p = getchar();
40 break;
41
42 case '[':
43 cc = c;
44 if(!*p) dummyLexer(g);
45 while(*p) {
46 c = cc; // restore char position to start of loop
47 lexer(g);
48 }
49 break;
50
51 case ']':
52 return;
53
54 default:
55 // everything else is comments
56 break;
57 }
58 }
59 return;
60 }
61 /*
62 * Usage:
63 * struct Data g;
64 * g.code = file;
65 * g.pointer = &g.data[15000];
66 * lexer(&g);
67 */