�ΤϤ褫�ä���

�䤬�����Τ�ʤ�Ǥ������Ƕ�Υץ�����ߥ󥰸���Ȥ����顢 �䤿��ʣ���ǡ�����������ʤ�ΤˤʤäƤ���Ȼפ��ޤ���?

�פ��Ф��٤Ƥ��ѿ��������ƥ��å��Ǥ��ä����ϴ������ưפǤ����� ��������ALGOL�Ϥθ��줬���������ѿ��򥹥��å����ݻ�����褦�ˤʤä����Ȥǡ� �ѿ�������������Ȥ�����γ�ǰ���ɲä���Ƥ��ޤ��ޤ����� C�ǡ� ���������ѿ��ؤΥݥ��󥿤�����ͤ��֤��ƤҤɤ��ܤˤ��ä��鿴�Ԥ�¿�����ȤǤ��礦�� ����ˡ����������ѿ��򥹥��å����֤����Ȥ� �Ƶ��ƤӽФ�����ǽ�ˤʤäƤ��ޤ��ޤ������� ����ޤ��鿴�Ե㤫���Ǥ��� �����å������Ȥ�ϥΥ�����Υ��������ɤ⤦�Ȥ�����ΤΡ� Ƭ���椬���󤬤餬�ä���ȯ�������ˤʤä����Ȥ����Τϡ� ï�⤬�и����Ƥ������Ǥ���

����˺Ƕ�Υץ�����ߥ󥰸���Ǥϡ����֥������Ȥ򲿤⤫��ҡ��פ��֤����������ꡢ ���줬�ޤ��鿴�Ե㤫���γ�ǰ�Ǥ��� �ݥ�����¿�Ѥ��뤳�ȤˤĤʤ��äƤ��ޤ��� ��? �ݥ��󥿤���ʤ��������ä�? �����C�Υݥ��󥿤ˤ�����ι�ʸ����äƤ���Ȥ��¹Ի������å����ʤ��Ȥ��� ����Ϥ��뤱��ɡ����ȴط������󤬤餬��ȤҤɤ��ܤˤ����Ȥ�������� �ݥ��󥿤ȸƤܤ������ȤȸƤܤ���Ʊ�����ȡ� ���ޤǤ�1�����Υ����ΰ�����ˤ��Ƥ���Ф褫�ä��Τ��� �ݥ���(����)��Ƴ������뤳�Ȥǡ� ����Ū���İ�ǽ�Ϥ�ɬ�פˤʤäƤ��ޤä��ΤǤ���

����ɤ����������֥��������Ȥ�����ǰ�ϡ� �ץ������������֤���ĥ����ޥ꤬�������󤢤��Ȥ��� ��ǰ��¾�ʤ餺���Ȥ������Ȥ������� �ץ�����ޤϤ������󤢤륫���ޥ�ξ��֤��İ������������ʤ���Фʤ�ʤ��ΤǤ��� ����ϡ��ץ�������ʣ���٤򡢤����Ȥ߹�碌�ο������� �Ĥޤ�ؿ��ؿ�Ū�����ä����뤳�Ȥˤʤ�ޤ���

���ޤĤ�����OO����Ǥϡ��ݥ���ե������Ȥ�����ǽ�ˤ�� Ŭ�Ѥ�����³������¹Ի��˷�ޤ�ΤǤ����顢 �ץ������Υ��������ɤळ��(��Ū�ʲ���)�Ϥޤ��ޤ�����ˤʤäƤ��ޤäƤ��ޤ��� C�ʤɤǤϡ�����ؿ��Υ��������ɤ�ݡ� ��Ū�δؿ�����ɤ�ɤ󲼰̤ؤȷ���ʤ�Ƥ����Ф����櫓�Ǥ����� OO����Ǥϡ� ���󥹥��󥹥ե�����ɤʤɤ��ݻ�����Ƥ��륪�֥������ȤΥ᥽�åɤ��ƤФ�Ƥ����顢 ���Υ��֥������Ȥ���������Ƥ���Ȥ����ޤ��̤ä��ɤ�ɬ�פ�����ޤ��� �����������������̤ä��ɤࡢ�Ĥޤꡢ �ɤμ¹ԥѥ����̤äƤ������褿����õ�뤳�Ȥϡ� ñ�˼¹Խ���ɤ�Ǥ����Τ���٤ư���Ū���񤷤���ΤǤ����� ����ɤ���������ä�õ�����Ƥ����֥������Ȥ������ս�� �ǥ�����ѥ������ʤ󤾻Ȥ��Ƥ����ꤹ��ȡ� ����ˤ�������Ĺ��ι�λϤޤ�Ǥ���

���䡢�ޤ�����Ǥ⡢���֥������ȤΥ᥽�åɤ����饹�Ȥ����������Τ�������졢 �Ѿ��ط��⥽������ˤ�����ȵ��Ҥ���Ƥ���С��ޤ������ɤ����Ȥ��Ǥ���Ǥ��礦�� ���������ץ��ȥ����ץ١�����OO����Ǥϡ� ���饹�������Τ�������줺���¹Ի��ˤؤ��ؤ��Ѳ������ꤹ��ΤǤ���

�ޤ�����˽񤤤��褦�ˡ���������Υ��֥������Ȥ����������ʾ��֤���Ĥ��� ���θ�����񤷤��ΤǤ����� ����Ǥ⥪�֥������Ȥμ�ꤦ����֤� ���饹�Υե�����ɤȤ����������Τ��������Ƥ���� �ޤ��İ��Ǥ��뤫�⤷��ޤ��� ������������ˤ�äƤϡ������������Ȥ�������ε�ǽ�ǡ� ñ�ʤ���������ѿ��ΤĤ����ä���Τ����Ĥδ֤ˤ����֤���� ���֥������ȤȤ��ư����Ƥ��ޤä��ꤷ�ޤ��� ����Ǥϡ��ɤ��˾��֤�������Ƥ���Τ����äѤ�狼��ޤ���


���ΤϤ褫�ä��ġ�


�ȡ�����Ĥ���ò©���뤢�ʤ��Τ���ˡ�����ȯ�������줬��BF-BASIC'n�פǤ���

BF-BASIC'n�ϡ� �ָ���׻����ʳؤ���פȸ�����Alan Turing ���ͰƤ����Ǥ�ץ�ߥƥ��֤ʷ��β��ۥޥ���ξ�ˡ� ����80ǯ��Ρ��ץ�����ߥ󥰸���Ȥ�����BASIC���ä������ ʷ�ϵ���ȿ�Ǥ���������Ǥ��� �����å���ҡ��פ⥪�֥������Ȥ�ݥ���ե�����⥯��������⤢��ޤ��� �Ȥ�櫓�鿴�ԤˤȤäơ��ؽ�������ޤˤ��ʤ��Ȥ�����̣�ǡ� ���Τ褦�ʸ���ˤϽ��פʰ�̣������Ȼ�ϳο����Ƥ��ޤ���

���ơ��������ץ�����ߥ󥰸�����ä��Ȥ��ˤϡ� �ޤ���Hello World!�פ�ɽ�������Ƥߤ롢�Ȥ����Τ������꡼�Ǥ��礦�� BF-BASIC'n�ǡ���Hello World!�� ��ɽ��������ץ������Υ������ϰʲ��Τ褦�ˤʤ�ޤ���

���ݤݤݤݤݤݤݤݤݤ��Ƥ�ΤФܡ���ݤݤݤݤݤݤݤݤ��ӤʤФӤ�����
�Фܡ���ݡ��󤹤ݤݤݤݤݤݤݤ��Ƥ�ΤФܡ���ݤݤݤݤ��ӤʤФӤ�����
�Фܡ���ݤݡ���ݤݤݤݤݤݤݤݡ���ݡ���ݤݤݤݡ��󤹤Ƥ�ΤӤʤФӤ�����
���ݤݤݤݤݤݤݤݤ��Ƥ�ΤФܡ���ݤݤݤݤ��ӤʤФӤ�����
�Фܡ���ݡ��󤹤ݤݤݤݤݤݤݤݤݤݤݤ��Ƥ�ΤФܡ���ݤݤݤݤݤ��ӤʤФӤ�����
�Фܡ���ݡ��󤹤ݤݤݤݤݤݤݤݤ��Ƥ�ΤФܡ���ݤݤݤ��ӤʤФӤ�����
�Фܡ���ݡ���ݤݤݤݡ���ӤӤӤӤӤӤݡ���ӤӤӤӤӤӤӤӤݡ���
���Ƥ�ΤӤʤФӤ����󤹤ݤݤݤݤݤݤݤݤ��Ƥ�ΤФܡ���ݤݤݤݤ��ӤʤФӤ�����
�Фܡ���ݤݡ��󤹤Ƥ�ΤӤʤФӤ�����ݤݤݤݤݤݤݤݤݤݤݡ���

������������Τ�̵��ǤϤ���ޤ�����BF-BASIC'n���פ���ˡ� ���塼��󥰥ޥ�������Υץ�����ߥ󥰸���Ǥ���Brainfuck�� �֤١����÷��פ�̣�դ����ɲä�����ΤǤ���

Brainfuck�ˤĤ��Ƥβ���Ϥ����餬�狼��䤹���Ǥ��礦��

K.INABA����Ρ�������ʤ��� @ �͹����������פ�Brainf*ck�Υڡ�����

http://www.kmonos.net/alang/etc/brainfuck.php

Wikipedia�Ǥ������Ϥ����顣

http://ja.wikipedia.org/wiki/Brainfuck

�������֤١����÷��פ�Wikipedia�Ǥ������Ϥ����顣

http://ja.wikipedia.org/wiki/%E3%81%B9%E3%83%BC%E3%81%97%E3%81%A3%E5%90%9B

�֤١����÷��פ�ʷ�ϵ���Ĥ���ʤ顢 �֤��Τߤ���פΤ�����Υڡ����Τۤ����褤���⤷��ޤ���

http://www.tanomi.com/shop/jyuchu/items01064.html

Brainfuck��BF-BASIC'n�Υȡ�������б��դ��ϰʲ��Τ褦�ˤʤ�ޤ���

BrainfuckBF-BASIC'n
>��
<�Фܡ���
+��
-��
.�ݡ���
,�������
[���Ƥ��
]�ʤФӤ�����

BF-BASIC'n�Υ������Ϥ����顣

  1: #include <stdio.h>
  2: #include <string.h>
  3: #include <stdlib.h>
  4: #include <ctype.h>
  5: #include <assert.h>
  6: 
  7: typedef struct {
  8:     int bf;
  9:     char *basicn;
 10: } Conv;
 11: 
 12: static Conv st_conv[] = {
 13:     {'>', "��"},
 14:     {'<', "�Фܡ���"},
 15:     {'+', "��"},
 16:     {'-', "��"},
 17:     {'.', "�ݡ���"},
 18:     {',', "�������"},
 19:     {'[', "���Ƥ��"},
 20:     {']', "�ʤФӤ�����"},
 21: };
 22: 
 23: typedef struct {
 24:     int bf_code;
 25:     int address;
 26: } BfCode;
 27: 
 28: static BfCode st_bf_code[10000];
 29: static int st_code_count;
 30: 
 31: static int
 32: compare_conv(const void *a, const void *b)
 33: {
 34:     return strlen(((Conv*)b)->basicn) - strlen(((Conv*)a)->basicn);
 35: }
 36: 
 37: static void
 38: sort_conv_table(Conv *table, int table_count)
 39: {
 40:     qsort(table, table_count, sizeof(Conv), compare_conv);
 41: }
 42: 
 43: static void
 44: read_source(FILE *fp)
 45: {
 46:     unsigned char line[4096];
 47:     int i;
 48:     int j;
 49:     int code_idx = 0;
 50:     int stack[256];
 51:     int sp = 0;
 52: 
 53:     while ((fgets(line, 4096, fp)) != NULL) {
 54:         for (i = 0; line[i] != '\0'; ) {
 55:             if (isspace(line[i])) {
 56:                 i++;
 57:                 continue;
 58:             }
 59: 
 60:             for (j = 0; j < sizeof(st_conv)/sizeof(Conv); j++) {
 61:                 int len = strlen(st_conv[j].basicn);
 62:                 if (!strncmp(&line[i], st_conv[j].basicn, len)) {
 63:                     st_bf_code[code_idx].bf_code = st_conv[j].bf;
 64: 
 65:                     if (st_conv[j].bf == '[') {
 66:                         stack[sp] = code_idx;
 67:                         sp++;
 68:                     } else if (st_conv[j].bf == ']') {
 69:                         st_bf_code[stack[sp-1]].address = code_idx;
 70:                         st_bf_code[code_idx].address = stack[sp-1];
 71:                         sp--;
 72:                         if (sp < 0) {
 73:                             fprintf(stderr, "bracket mismatch\n");
 74:                             exit(2);
 75:                         }
 76:                     }
 77:                     code_idx++;
 78:                     i += len;
 79:                     break;
 80:                 }
 81:             }
 82:             if (j == sizeof(st_conv)/sizeof(Conv)) {
 83:                 fprintf(stderr, "syntax error\n");
 84:                 exit(2);
 85:             }
 86:         }
 87:     }
 88:     if (sp != 0) {
 89:         fprintf(stderr, "bracket mismatch\n");
 90:         exit(2);
 91:     }
 92: 
 93:     st_code_count = code_idx;
 94: }
 95: 
 96: static void
 97: interpret(void)
 98: {
 99:     int pc;
100:     int array[65536];
101:     int p = 0;
102: 
103:     for (pc = 0; pc < st_code_count; pc++) {
104:         switch (st_bf_code[pc].bf_code) {
105:         case '>':
106:             p++;
107:             break;
108:         case '<':
109:             p--;
110:             break;
111:         case '+':
112:             array[p]++;
113:             break;
114:         case '-':
115:             array[p]--;
116:             break;
117:         case '.':
118:             putchar(array[p]);
119:             break;
120:         case ',':
121:             array[p] = getchar();
122:             break;
123:         case '[':
124:             if (!array[p]) {
125:                 pc = st_bf_code[pc].address;
126:             }
127:             break;
128:         case ']':
129:             pc = st_bf_code[pc].address - 1;
130:             break;
131:         default:
132:             assert(0);
133:         }
134:     }
135: }
136: 
137: 
138: int
139: main(int argc, char **argv)
140: {
141:     FILE *in_fp;
142: 
143:     sort_conv_table(st_conv, sizeof(st_conv)/sizeof(Conv));
144: 
145:     if (argc == 2) {
146:         in_fp = fopen(argv[1], "r");
147:         if (in_fp == NULL) {
148:             fprintf(stderr, "%s not found.\n", argv[1]);
149:             exit(1);
150:         }
151:     } else {
152:         fprintf(stderr, "Usage:%s filename\n", argv[0]);
153:         exit(1);
154:     }
155: 
156:     read_source(in_fp);
157:     interpret();
158: 
159:     return 0;
160: }

Windows�����¹Է����Ϥ����顣

bfbasicn.lzh

�Ƽ掠��ץ륽����

�¤Ͼ�ǵ󤲤�hello, world.�ϡ� K.INABA����Υڡ����Υ������򸵤ˤ�����ΤʤΤǤ����� �䤬��ʬ�ǽ񤤤�hello, world.(K&R�������˽�������å�������ʸ���ˤ���)�� �����ʤ�ޤ�����

���ݤݤݤݤݤݤݤݤݤݤݤݤݤݤݤݤ��Ƥ�ΤФܡ���ݤݤݤݤݤݤ��ӤʤФӤ�����
�Фܡ���ݤݤݤݤݤݤݤݤݡ���ӤӤӤݡ���ݤݤݤݤݤݤݤݡ���ݡ���
�ݤݤݤݡ��󤹤ݤݤݤݤݤݤݤݤݤݤݤݤݤݤݤݤ��Ƥ�Τ��ݤݤФܡ���ӤʤФӤ�����
���ݤݤݤݤݤݤݤݤݤݤݤݤݡ���ӤӤӤӤӤӤӤӤӤӤӤӤݡ���
�Фܡ���Фܡ���ݤݤݤݤݤݤݤݤݡ���ӤӤӤӤӤӤӤӤݡ���ݤݤݤݡ���
�ӤӤӤӤӤӤݡ���ӤӤӤӤӤӤӤӤݡ��󤹤��ݤݤݤݤݤݤݤݤݤݤݤݤݤݤݡ���

���ޤ������ä��ϸ�Ⱦ��ñĴ�ǡ�

�Ȥ����ǡ� �¤ΤȤ���Brainfuck�Υȡ�������ִ���������Ȥ����Τ��̤˻�����ϤǤϤʤ��� ˨���Ȥ����������Ȥ������ʸ����Τ�2ch��ͳ�Ǹ����������Ȥ�����ޤ��� (�Ƕ�õ�������ɸ��Ĥ���ޤ���Ǥ���)��¾�ˤ�Ʊ�ͤλ�ߤϤ����������뤳�ȤǤ��礦��

�ޤ����ä��������Ϥ��äƤߤ����ȤǤ����� �Ѵ��ơ��֥��ʲ��Τ褦�˺����ؤ���ȡ�

static Conv st_conv[] = {
  {'>', "��"},
  {'<', "���פ�!!"},
  {'+', "��"},
  {'-', "�ۤ���"},
  {'.', "�ҤǤ֤�"},
  {',', "�����Ϥ⤦���Ǥ��� "},
  {'[', "�����!!"},
  {']', "���٤�!!"},
};

�嵭��hello, world.�פϤ����ʤ�ޤ���

����������������������������������
�����!!
���פ�!!
���������������ۤ���
���٤�!!
���פ�!!
����������������
�ҤǤ֤�
�ۤ����ۤ����ۤ���
�ҤǤ֤�
��������������
�ҤǤ֤�
�ҤǤ֤�
������
�ҤǤ֤�
����������������������������������
�����!!
������
���פ�!!
�ۤ���
���٤�!!
��������������������������
�ҤǤ֤�
�ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ���
�ҤǤ֤�
���פ�!!
���פ�!!
����������������
�ҤǤ֤�
�ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ���
�ҤǤ֤�
������
�ҤǤ֤�
�ۤ����ۤ����ۤ����ۤ����ۤ����ۤ���
�ҤǤ֤�
�ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ����ۤ���
�ҤǤ֤�
��������������������������������
�ҤǤ֤�

�ޤ����ʲ��Τ褦���֤�������С�

static Conv st_conv[] = {
    {'>', "�դ뤨�뤾�ϡ���!"},
    {'<', "dz���Ĥ���ۤɥҡ���!!"},
    {'+', "����"},
    {'-', "̵��"},
    {'.', "��!"},
    {',', "��������"},
    {'[', "���ޤ��μ��Υ���դϡ�"},
    {']', "�פȤ���!"},
};

�����ʤ�ޤ���

�դ뤨�뤾�ϡ���!
���饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪��
���ޤ��μ��Υ���դϡ�dz���Ĥ���ۤɥҡ���!!���饪�饪�饪�饪�饪��
�դ뤨�뤾�ϡ���!̵�̡פȤ���!
dz���Ĥ���ۤɥҡ���!!���饪�饪�饪�饪�饪�饪�饪�饡!
̵��̵��̵�̥�!
���饪�饪�饪�饪�饪�饪�饡!��!
���饪�饪�饡!�դ뤨�뤾�ϡ���!
���饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪��
���ޤ��μ��Υ���դϡ֤դ뤨�뤾�ϡ���!���饪��dz���Ĥ���ۤɥҡ���!!̵�̡פȤ���!
�դ뤨�뤾�ϡ���!���饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饡!
̵��̵��̵��̵��̵��̵��̵��̵��̵��̵��̵��̵�̥�!
dz���Ĥ���ۤɥҡ���!!dz���Ĥ���ۤɥҡ���!!���饪�饪�饪�饪�饪�饪�饪�饡!
̵��̵��̵��̵��̵��̵��̵��̵�̥�!
���饪�饪�饡!
̵��̵��̵��̵��̵��̵�̥�!
̵��̵��̵��̵��̵��̵��̵��̵�̥�!
�դ뤨�뤾�ϡ���!
�դ뤨�뤾�ϡ���!
���饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饪�饡!

�饤���󥹤ˤĤ���

��BF-Basic'n�פ�����ܥڡ����ǵ󤲤����٤ƤΥץ������� �Ѵ��ơ��֥�ΤΥ饤���󥹤ϡ� NYSL Version 0.9982�Ȥ��ޤ���

�����ۤ���Τ⡢�Ѵ��ơ��֥�򺹤��ؤ��Ƽ������Ȥ��Ƹ�������Τ� �����˼�ͳ�Ǥ���



���λ��� | �ҤȤľ�Υڡ�������� | �ȥåץڡ��������