Jó volt, szép volt.
Kiemelt támogatók
BIG FISH
Pentaschool
WISH
Macasoft
G'Roby
23vnet
Kiskapu
 

  5k – górcső : PHP BrainF*ck Interpreter (programnyelv 512byte-s fordítóval)

screenshotelkövette: Kétszeri Csaba
LEÍRÁS


Leírás

/***************************************************************************
*                                                                         
*
*  PHP Brainfuck Interpreter (c): Kétszeri Csaba (Csabii), 2003           
*
*  csaba##kukac##ketszeri.hu         http://www.ketszeri.hu/                      
*
*                                                                         
*
*  Készült az 1. Magyar PHP Konferenciára                                 
*
*                                                                         
*
*  A kód módosítások nélkül szabadon terjeszthető                         
*
*                                                                         
*
****************************************************************************/

A Brainfuck egy úgynevezett "ezoterikus" programozási nyelv, azaz
"szándékosan használhatatlan" (Chris Pressey). A Brainfuck Urban
Müller fejlesztése, akinek a célja a legkisebb létező fordító program
megírása volt. Ez a fordító 240 bájt volt (lefordított ASM)!
Urban müller írt egy C interpretert:

char
m[9999],*n[99],*r=m,*p=m+5000,**s=n,d,c;main(){for(read(0,r,4000);c=*r;
r++)c-']'||(d>1||(r=*p?*s:(--s,r)),!d||d--),c-'['||d++||(*++s=r),d||(*p+=c==
'+',*p-=c=='-',p+=c=='>',p-=c=='<',c-'.'||write(2,p,1),c-','||read(2,p,1));}

Bár a Brainfuck egy nagyon korlátozott szolgáltatásokat nyújtó nyelv
(csak 8 operátora van, nincsenek változó nevek, stb.), Turing-gép
kompatibilis, azaz tetsztőleges számítástechikai feladat megoldható vele.

Az operátorok: +-<>[].,

 +  bájt értékét növeli a pointer által mutatott területen
 -  bájt értékét növeli a pointer által mutatott területen
 >  pointer növelése
 <  pointer csökkentése
 [  ciklus kezdete, ha a pinter által mutatott bájt nem nulla
 ]  visszatér a vezérlés a [ operátorhoz
 .  bájt kiirása a stdout-ra
 ,  bájt olvasása a stdin-ről


Mivel a PHP nem tesz lehetővé interaktív szövegbevitelt és kiíratást,
a PHP Brainfuck Interpreter egy formot használ a kód és az input
beolvasására, és szövegesen, a kód lefutása után írja ki a kimenetet
a böngésző felé. A kód érdekessége, hogy egyetlen for ciklusból áll.
Közismert(?), hogy C nyelven, de PHP-ban is minden probléma megoldható
egy for cikluson belül.

A nyelv tanulásához egy nagyon jó tutorial található a következő címen:
(angol nyelven)

http://nieko.net/data/bf.txt

A PHP Brainfuck Interpreter pontosan 512 bájt hosszú/rövid.
Az első input boxba kerül a futtatandó kód, a második mint STDIN buffer,
azaz a teljes input, amit fel akarsz dolgozni a kóddal (opcionális).

Ez a dokumentum, a Brainfuck Interpreter,, a tutorial és a
PHP Brainfuck Interpreter módosítások nélkül szabadon terjeszthető.


Egy "Hello World!" program Brainfuck nyelven:

++++++++[>+++++++++<-]>.<+++++[>++++++<-]>-.+++++++..+++.<++++++++[>>++++<<-]>>.<<++++[>------<-]>.<++++[>++++++<-]>.+++.------.--------.>+.

Copyright (c) 2002 Nieko Maatjes 


Tipp: A tutorial jóval egyszerűbb kódokkal indul, nyugodtan vágj bele,
és játszadozz kedvedre!


Csabii
Valid XHTML 1.0! Valid CSS!