Ostravak (ostrava-c) je preprocesorové rozšíření jazyka C++ do ostravštiny.
Pro používání Ostravaku stačí načíst hlavičkový souboru ostrava.h do C++ programu. Ve složce Integration je volitelně též zvýrazňovač syntaxe pro PSPad a návod na zapnutí podpory pro .cp soubory ve VS Code. Programům je doporučeno dávat příponu cp, což je málo používaná, ale podporovaná přípona C++ programů. Významově se blíží ostravskému "cyp" a kodér je tak před otevřením varován před pokročilou syntaxí jazyka Ostravak.
Lidi, kteří mají tu smůlu, že se narodili na jih od Místku-Frýdku nebo na západ od Opavy, nechápou Ostravaka od přirozeni a měli by absolvovat základní kurz OSTRAVSTINA.md
Příklady ze složky Examples jde použít jako tutoriál v tomto pořadí.
- bumbac.cp Vypíše na konzoli čísla 1-100 podle pravidla bumbác. Cyklus, podmínky, výstup na konzoli, komentáře.
- nasobilka.cp Zeptá se uživatele na základ násobilky a vypíše malou násobilku daného základu. Vstup z konzole, funkce, ošetření neplatného vstupu.
- nahodne.cp Vypíše náhodné slovo z ostravského slovníku slovnik.dat. Čtení ze souboru, tvorba objektu, integrace s C++ kontejnery
std::vector
astd::string
- psc.cp Zobrazí kraj dle čísla zadaného jako parametr programu. Parametry programu, vyjímky, statické proměnné, reference.
Všechny příkazy se ukončují jedním zvýrazů pyco
, kurva
, gizde
i gyzde
, podle nálady. Ostravak doporučuje používat kurva
za definicemi, pyco
u běžných příkazů a gizde
u těch málo intuitivních, čímž se upozorní čtenář kódu, že by zde měl zbystřit. No když je někdo fajnovka nebo guvňoř pedagogický, može tam najebat aji středník.
Kompatibilní s OstraJava
cyslo
intcyslo_desetinne
floatchachar
charbul
booldryst
- řetězec délky 80 znaků (vč. ukončovací 0)guvno
nebona_picu
- void
Dále pak
referenca_na(X)
& Xcajger_na(X)
X *pribity
const
jak
iftak
(používá se místo pascalovského then)jinak
else
jak (výraz) tak { blok }
jinak { blok }
Pro tvorbu výrazů
nula
0je
==neni
!=je_kec(X)
!(X)ci
||aj
&&zgrupuj_po
%nastav_na
=
rubat (5 krat) { blok }
- 5x zopakuje blok, ve kterém proměnnásichta
nabývá hodnot 0 - 4, zatímco --normalni(sichta)
hodnot 1 - 5rubat (do_aleluja) { blok }
- do_aleluja je synonymum pro dvě miliardy (nekonečný cyklus je filosoficky nesmysl)
cyklus do - while
je pro gizdy, co neumí používat goto. Inteligentni programátoři používají návěští, které zároveň popisuje důvod návratu (místo nic neříkajícího do
).
duvod_navratu:
blok
jak (výraz) tak jdi_do duvod_navratu pyco
V cyklech můžou být dále výrazy
chuj_s_tym
continuedi_do_pici
break
najebej_do_konzole
printfvyjebej_z_konzole
scanfnajebej_do_fajlu
fprintfvyjebej_z_fajlu
fscanfnajebej_do_bafru
sprintfvyjebej_z_bafru
sscanf
Pro pohodlné čtení řetězců a čísel je též definováno
dryst_z_konzole(name)
scanf("%79[^\n]", name)cyslo_z_konzole(name)
scanf("%d", &name)poklid_konzolu
- vyhodí ze vstupního bufferu konzoly všechny znay až do konce řádku (ošetření situace, kdy se očekává číselný vstup a není zadáno číslo)
Dále je definováno
dryst_z_fajlu
- soubor čteme po 80znakových blocích ukončených koncem řádkycyslo_z_bafru
cekej
getchar()odradkuj
puts("")
befel
uvozuje funkcivyrubej
return
befel cyslo faktoryjal (cyslo N) {
jak (N < nula) tak bulat "faktoryjal zaporneho cysla je na picu" gizde
jak (N je nula) tak vyrubej 1 pyco
vyrubej N * faktoryjal (N - 1) pyco
}
robota {}
- hlavní program mainhavirna {};
- třída s členytajny
,protekcni
aproflaknuty
partyja {};
- struktura
prubni
trybulat
throwexception
pojebsichruj
nebozychruj
catch
Komentáře jsou před zpracováním preprocesorem odstraněny, takže je nelze snadno nahradit.
Správný Ostravak však zásadně používá makro ted_tam_najebu
, které je prázdné - za ním může pak následovat ničemu nepřiřazená řetězcová konstanta a ekvivalent středníku.
ted_tam_najebu "komentar k vypoctu" pyco
// ted_tam_najebu komentar k vypoctu pyco