Virtuálny stroj programovacieho jazyka TUKAFUK sa skladá z dvoch pások. Na jednej páske je napísaný program. Po programovej páske beží programová hlava PH a číta inštrukcie zľava doprava. Stroj má k dispozícii aj dátovú pásku s osobitnou hlavou DH.
Príklad počiatočného stavu virtuálneho stroja TUKAFUK:
```
PH
|
v
+-----+-----+-----+-----+
Program | TUK | INK | DEK | FUK |
+-----+-----+-----+-----+
DH
|
v
+---+---+---+---+
Data | 0 | 0 | 0 | 0 |
+---+---+---+---+
```
Skladá sa z nasledujúcich symbolov:
```
TUK začiatok programu
INK inkrementuj údaj na mieste kde ukazuje DH
DEK dekrementuj údaj na mieste kde ukazuje DH
BREK posuň hlavu DH do prava o jedno miesto
GLEK posuň hlavu DH do ľava o jedno miesto
PUK vypíš 1 byte z miesta kde ukazuje hlava DH
KUK načítaj 1 byte na miesto je ukazuje hlava DH
[ ak je hlava DH nula, posuň PH na zodpovedajúcu značku ]. Inak pokračj ďalej.
] ak hlava nie je nula, pokračuj s PH na zodpovedajúvej značke [. Inak pokračuj ďalej.
FUK koniec programu
iný znak: odeľuje príkazy alebo slúži ako komentár.
```
Vytvorte interpret jazyka TUKAFUK. Program by mal implementovať funkciu:
Funkcia preloží vstupný program (zistí adresy skokov) a spustí ho. Preklad programu znamená identifikáciu inštrukcií a zistenie adries pre skok programovej hlavy PH. Pri implementácii zistenia adries PH v programe pre inštrukcie [ a ]. Funkcie getchar() a putchar() použite pre implementáciu inštrukcií PUK a KUK . Pre implementáciu dátovej pásky použite pole znakov, pre implementáciu programovej pásky použite pole spracovaných inštrukcií.
Musíme navrhnúť jednoduchý programovací jazyk podobný brainfucku. Načíta zdrojový súbor s príkazmi a potom vykoná rôzne operácie s poľom údajov na základe príkazov, ktoré prečítal
Program číta vstupy slovo po slove (oddelené medzerou) a ak je načítaná slová jednou z funkcií, potom sa zapíše do špeciálneho poľa, ktoré tieto funkcie ukladá. Potom sa operácia zavolá na pole s funkciami, ktoré potom spustí samotnú akciu funkcie.