Ahoj,
29.1. byly rámečky
Ramecky
Vasim ukolem je naprogramovat interpreter jazyka, ktery slouzi k zobrazovani "ramecku" kolem retezcu.
Jazyk
Kazdy prikaz je na samostatnem radku.
V programu se mohou vyskytnout nasledujici prikazy:
// radek zacinajici dvema slashi je komentar, prazdne radky se ignoruji
//
// JAZYKOVE KONSTRUKTY
//////////////////////
// deklarace promenne
HBOX {identifikator}
VBOX {identifikator}
LABEL {identifikator} {string (do konce radku)}
// vlozeni prvku do "kontejneru"
ADD {identifikatorKontejneru} {identifikatorVkladanehoPrvku}
// vykresleni prvku na obrazovku
PRINT {identifikator}
Priklad programu 1:
Kód: Vybrat vše
LABEL paulus Roman Paulus
LABEL ihnacak Peter Ihnacak
LABEL babica Jiri Babica
VBOX vert
ADD vert babica
HBOX hor
ADD hor paulus
ADD hor ihnacak
ADD vert hor
ADD vert babica
PRINT vert
Vystup programu 1:
Kód: Vybrat vše
+----------------------------+
|Jiri Babica |
+----------------------------+
|+------------+-------------+|
||Roman Paulus|Peter Ihnacak||
|+------------+-------------+|
+----------------------------+
|Jiri Babica |
+----------------------------+
Priklad programu 1:
Kód: Vybrat vše
LABEL paulus Roman Paulus
LABEL ihnacak Peter Ihnacak
LABEL babica Jiri Babica
VBOX vert
ADD vert babica
HBOX hor
ADD vert hor
ADD vert babica
PRINT vert
Vystup programu 1:
Kód: Vybrat vše
+-----------+
|Jiri Babica|
+-----------+
+-----------+
|Jiri Babica|
+-----------+
Okrajove podminky
spatny pocet argumentu, problem s otevrenim vstupniho souboru - "Argument error"
nedeklarovana promenna - "Line 21: Variable 'A' not declared"
redeklarace promenne - "Line 21: Variable 'A' redeclared"
cyklus (vypsat az pri PRINTu, radka 21 obsahuje PRINT) - "Line 21: Cycle detected"
prirazeni do labelu, neznama operace nebo spatny pocet argumentu operace - "Line 21: Operation error"
nevyskytuji se zadne "multi-line" labely, tj. cely retezec je na jednom radku
pokud je prvek prazdny - tj. label nulove delky nebo kontejner s nulovym poctem prvku, tak se na vystup nevypisuje (viz priklad 2)
Poznamky
vstupni soubor se vejde do pameti
"platno", na ktere budete kreslit, se vejde do pameti
pozor, jedna promenna (napr. label) muze byt pouzita v programu nekolikrat - napr. vlozena do stejneho kontejneru vicekrat.
rozmery HBOXu a VBOXu jsou vzdy co nejmensi, ale tak, aby to stale byl obdelnik
polozka v HBOXu i VBOXu je vzdy zarovnana doleva a nahoru.
identifikator je retezec bez bilych znaku