Latin2 Stepan Roh's Befunge-93 Interpreter (c)1998 Štěpán Roh verze 1.0 Takže, co to tady máme ---------------------- Stepan Roh's Befunge-93 Interpreter (dále jen SRB93I) je interpretem jazyka Befunge dle normy z roku 1993. Befunge ? --------- Ano, Befunge. Jedná se o první dvoudimenzionální jazyk na světě. Ve verzi 93 se jedná o jazyk s několika málo příkazy a i když to tak na první pohled nevypadá, dají se v něm programovat zajímavé věci. V současné době existuje několik norem : Befunge-93, Befunge-97, obecnější Funge-97 a nejnovější Funge-98. Novější normy obsahují i takové věci jako multithreading apod. Ze zřejmých důvodů (jsem bohužel nucen programovat v Pascalu) jsem se rozhodl pro normu nejstarší. Popis syntaxe jazyka je v souboru BEFUN93.DOC. Jedná se o přeloženou a mírně rozšířenou verzi originální dokumentace. Apropos, jaké jsou rozdíly mezi originálem a SRB93I ? ----------------------------------------------------- No, téměř žádné. SRB93I obsahuje i jednoduchou implementaci direktivy '=', tak jak ji zavádí Befunge-97 a jak ji implementuje originální Befunge-93 Interpreter 2.20. Také ignoruje '#' na první řádce, což je poznámka i direktiva v *nixových shellech. Některé odlišnosti jsou dány Pascalem, ale 99,99% zdrojových textů je funkčních. Zato debugger se poněkud liší. Spuštění debugger se děje uvedením '-d' jako poslední parametr při spouštění SRB93I. Nápověda se vyvolá stiskem 'h' na řádce s výzvou 'DBG:'. Co všechno se tedy dodává ------------------------- SRBEF93 .EXE - interpret a debugger v jednom SRBEF93 .DOC - tato dokumentace BEFUN93 .DOC - překlad originální dokumentace TEST1 .BF - první rychlostně-testovací Befunge program - 10000 smyček TEST2 .BF - druhý rychlostně-testovací Befunge program - 10000 čísel BFEXAMPL.DOC - popis Befunge příkladů EXAMPLE\ - Befunge příklady SRC\ - zdrojové texty k SRB93I v Pascalu Pascalské zvláštnosti --------------------- Kvůli nechuti Pascalu přerušit program po stisku Ctrl-C a kvůli mé nechuti programovat nějaký vlastní CtrlBreak handler jsem byl nucen uplácat vlastní klávesnicové funkce, které zajišťují jak kompatibilitu s originálním Befunge, tak i zastavení programu po Ctrl-C. Z toho důvodu jsou možnosti editace vstupu poněkud omezené. Jediné, co je možno s úspěchem použít, je Backspace, který, ač to není vidět, skutečně smaže předchozí znak. Také rychlost interpretace se poněkud snížila. Viz tabulka : test1.bf test2.bf originální Befunge-93 v C (BC++ 3.1) 1.02 s 7.53 s SRB93I v TMT Pascalu 2.18 s 8.85 s Testy byly prováděny na 486DX4-75 s 12 MB RAM. Chybové hlášky -------------- Chyba je vyvolána při neexistenci vstupního souboru, při přílišné velikosti vstupního souboru (nevejde se do jemu vymezené oblasti 80x25), při požadavku na jinou verzi Befunge než 93 a když se příkazy p nebo g snaží pracovat s daty mimo datovou oblast. Jiné chyby (dělení nulou apod.) jsou plně v kompetenci standardních chybových rutin Pascalu (např. dělení nulou je Runtime error 200). To je vše ? ----------- Ano, to je všechno. Celý SRB93I je FREEWARE, ještě jsem zapomněl dodat. Více o Befunge se můžete dozvědět na adrese : http://www.catseye.mb.ca/esoteric/befunge/ Štěpán Roh (src@post.cz)