A Befunge egy verem alapú ezoterikus programozási nyelv . Kétdimenziósnak tekinthető , mivel a Befunge program egy összefűzött élekkel ( tórusz ) ellátott táblázatba van írva, amely mentén az értelmező különböző irányokba mozog , végrehajtva a celláiban található parancsokat. A nyelv neve az „előtte” szó elírásából született.
A Befunge nyelv első változatát Chris Pressy készítette 1993 -ban . A szerző elmondása szerint célja egy olyan nyelv kialakítása volt, amelyet a lehető legnehezebben lehet fordítani . A bonyolultságot a program szövegét módosító p és g parancsok biztosítják.
A Befunge-93 verzió egy 25x80-as táblázatra korlátozódik (a szabványos szöveges képernyőméret ), ezért nem teljes a Turing . A Befunge egy végtelen asztalon a Turing teljes .
Minden egydimenziós programozási nyelv bizonyos szintaktikai különbséget tesz a megjegyzések és a forráskód között. A Befunge nyelvnek nincs külön szintaxisa a megjegyzésekhez, hogy a dokumentációt beillessze a kódba, a programozó egyszerűen a megjegyzés terület köré csavarja a vezérlőt.
A Befunge nyelvi parancsok az alábbiakban találhatók. Minden parancs egy ASCII karakterrel van kódolva. Veremműveletek esetén a Forth nyelvű megfelelőjük zárójelben van megadva . Azok a parancsok, amelyek paramétereket vesznek át a veremből, kiemelik azokat a veremből.
elmozdulás (9): | |
> | Mozdulj jobbra |
< | menj balra |
^ | feljebb lépni |
v | mozogni lefelé |
_ | Mozogjon jobbra, ha a verem teteje 0, ellenkező esetben balra. |
| | Mozogjon lefelé, ha a verem teteje 0, ellenkező esetben lépjen felfelé. |
? | Mozgás véletlenszerű irányban |
# | Következő cella kihagyása ("ugródeszka") |
@ | Program vége |
veremkezelés (3): | |
: | Tolja a csúcs egy példányát a verembe (előre:DUP) |
\ | Csúcs és alcsúcs felcserélése (előre: SWAP) |
$ | Csúcs törlése (forth:DROP) |
programkód módosítás (2): | |
p | "PUT": a cella koordinátái és az ezekre a koordinátákra helyezett karakter ASCII kódja kikerül a veremből |
g | "GET": a cella koordinátáit a rendszer lekéri a veremből; Az ezeken a koordinátákon lévő karakter ASCII-kódja a verembe kerül |
állandók (2): | |
0-9 | nyomj egy számot a verembe |
" | Kezdő/vége karakter mód, amelyben az összes aktuális program karakter ASCII kódja a verembe kerül |
verem aritmetikai műveletek (5): | |
+ | Felső és alsó hozzáadás (előre:+) |
- | A felső és az alsó kivonása (előre:-) |
* | A felső és az alsó szorzása (előre:*) |
/ | Egész számok osztása (előre:/) |
% | Modulo (előre: MOD) |
verem logikai műveletek (2): | |
! | Negatív: a tetején lévő nulla helyére 1, a nullától eltérő érték helyére 0 (elöl: 0=) |
` | Nagyobb, mint az összehasonlítás: ha az alcsomópont nagyobb, mint a felső, nyomja meg az 1-et a veremben, ellenkező esetben a 0-t (előre:>) |
bemenet-kimenet (4): | |
& | Kérjen a felhasználótól egy számot, és nyomja be a verembe |
~ | Kérjen a felhasználótól egy karaktert, és nyomja be az ASCII-kódját a verembe |
. | Nyomtassa ki a köteg tetejét egész számként (előre:.) |
, | Nyomtassa ki az ASCII-kódnak megfelelő karaktert a verem tetején (forth:EMIT) |
Egy program, amely a Hello, World! »:
>v @,,,,,,,,,,,"Hello World!"<Véletlenszám generátor:
vv<< 2 ^v< v1<?>3v4 ^ ^ >>?> ?>5^ v v9<?>7v6 vv< nyolc . >> ^ ^<Az első 14 (0-tól 233-ig) Fibonacci-szám kimenete :
62*1+v>01p001>+v>\:02p\:02gv 0^< . :p ".egy v 0", "<0 ">1g12-+:| , @ >^
Programozási nyelvek | |
---|---|
|