Merhaba,
Fazla söze gerek yok, ismi yeter ama şu viki maddesi (http://tr.wikipedia.org/wiki/Brainfuck)nde kendisi hakkında Türkçe bilgi alabilirsiniz...:)
Ayrıca hemen şu js yorumlayıcı (http://www.undermined.org/tools/programming/brainfuck.php)sıyla, aşağıdaki sonsuza giden kodu deneyebilirsiniz:
(Debugger ile denemenizi ve Run to Breakpoint ile devam etmenizi öneririm)
++++++++++>>+>>+
[
[
+++++[<++++++++>-]<.
>++++++[<-------->-]
+<<<
]<.>>>>
[
-<[<+>>+<-]
<[>+<-[>+<-[>+<-[>+<-[>+<-
[>+<-[>+<-[>+<-[>+<-.
[>[-]>>+>>[-]+<<<<<-
[>+<-]]]]]]]]]]]
>>[<<+>>-]
+>>>
]<<<
]
Daniel B. Cristofani (cristofd@hevanet.com)
Kodun dilediğiniz yerine diyez(#~breakpoint) işareti koyunca orada durur ve adım adım devam edebilirsiniz. Küçüktür (<~sola kayma) işaretinin soluna veya ekrana çıktı veren nokta (.) işareti sağına koymanızı öneririm...
Ezoterik (http://esolangs.org/wiki/Main_Page) bir dil olan BF, dosyalarının uzantıları kısaca .b veya karışıklık olmaması için .bf şeklinde adlandırılabiliyor. Basit bir şekilde C'ye dönüştürmek de mümkün:
/*
* BF2C
* Copyright (C) 2003 Thomas Cort
* Code edited by Salih Dincer (2012.02.29)
* Version: 1.0 -> 1.1b
* Date: 2003-03-18
* Description: Converts Brainfuck source to C source
* License: GPL
* Download: http://web.archive.org/web/20031030035801/http://www.brainfuck.ca/BF2C.c
* Developer: Thomas Cort <tom@brainfuck.ca>
* Interfaces: Command Line
*/
#include<stdio.h>
int main(int argc, char **argv) {
int pc, /* program counter */
prog_len = 0; /* length of program */
int c[32768]; /* storage space for the code */
FILE *stream, *fopen();
/* Open stream file */
stream = fopen(argv[1], "r");
/* read the file and store it in c[] */
for (pc = 0; pc < 32768 && (c[pc] = getc(stream)) != EOF; pc++) prog_len++;
/* Close stream file */
fclose(stream);
/* print the beginning of the program */
printf("// %s convert...\n", argv[1]);
printf("\n\nint main() {\nint m[255], x;\n");
printf("for(x = 0; x < 255; x++) m[x] = 0;\nx=0;\n");
/* visit every element that has part of the bf program in it */
for(pc = 0; pc < prog_len; pc++) switch (c[pc]) {
case 43: printf("m[x]++;\n");break; // '+' increment current memory
case 45: printf("m[x]--;\n");break; // '-' decrement current memory
case 62: printf("x++;\n");break; // '>' increment pointer
case 60: printf("x--;\n");break; // '<' decrement pointer
case 91: printf("while(m[x]!=0) {\n");break;// '[' if pointer is nonzero
case 93: printf("}\n");break; // ']' end loop
case 46: printf("putchar(m[x]);\n");break; // '.' output a character
case 44: printf("m[x] = getchar();\n"); // ',' accept one byte of input
}
printf("}\n");
return 0;
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]