OSTRAJava má za cíl pozvednout kvalitu (nejen ostravského) programování. Na rozdíl od Javy vychází OSTRAJava přímo z mluveného jazyka (ostravského nářečí), tedy z něčeho, čemu obyčejní lidé rozumějí. Typický ostravský horník pak nebude mít problém přejít od těžby uhlí ke klávesnici. Jazyk tak mimo jiné řeší i problém nezaměstnanosti na Moravsko-Slezsku.
Zde je typický "Hello world" program v OSTRAJavě.
banik pyco
tryda Ostrava{
rynek(){
Konzola.pravit("Toz vitaj") pyco
}
}
fajront pyco
banik
. fajront
, označující konec směny.pyco
. Nahrazuje tedy v Javě používaný středník.Ostrava
(jak jinak) a hlavní metoda se vždy jmenuje rynek
.OSTRAJava obsahuje 4 primitivní typy:
cyslo
– integerbul
– booleanchachar
– charcyslo_desetinne
– floatHodnoty:
fajne
– truenyt
– falsechuj
– nullZákladní knihovna OSTRAJavy také obsahuje třídy:
Dryst
– ekvivalent String
. Bazmek
– všechny třídy dědí implicitně od této třídy. Obsahuje metody naDryst()
a kantuje(Bazmek b)
, ekvivalent pro toString()
a equals(Object o)
.Citac
– čtení ze souboru.Konzola
– výpis do konzole.Bafr
– jednoduchý buffer na čtení chacharů.Deklaraci je nutno začít klíčovým slovem toz
.
toz cyslo i = 1 pyco
Pro vytvoření podmínky použijeme konstrukt kaj
– kajtez
– boinak
.
Jednotlivé výrazy můžeme spojovat pomocí boolenovského ci
(or
) a aj
(and
).
toz bul a pyco
toz bul b pyco
//...
kaj (a == fajne aj b == fajne){
// ...
} kajtez (a == nyt ci b == fajne){
// ...
} boinak {
// ...
}
Cyklus má OSTRAJava pouze jeden. Pomocí rubat
vytvoříme while
.
Rubat cyklus se dá přeřušit pomocí zdybat
(break
) a nebo přeskočit jeden cyklus pomocí dlabat
(continue
)
toz cyslo i = 0 pyco
rubat (i < 5){
kaj (i == 4){
zdybat pyco
}
//...
i = i+1 pyco
}
Následuje jednoduchý příklad na čtení ze souboru.
banik pyco
tryda Priklad2 {
nacti(Dryst nazevSouboru){
toz Citac c = zrob Citac() pyco
c.otevr(nazevSouboru) pyco
toz Dryst radka pyco
radka = c.citajRadku() pyco
rubat (radka != chuj){
// ...
radka = c.citajRadku() pyco
}
c.zavr() pyco
}
}
fajront pyco
banik pyco
tryda Obdelnik{
toz cyslo dylka pyco
toz cyslo vyska pyco
Obdelnik(cyslo dylka, cyslo vyska){
joch.dylka = dylka pyco
joch.vyska = vyska pyco
}
}
tryda Stverec fagan od Obdelnik{
Stverec(cyslo velikost){
forant(velikost, velikost) pyco
}
}
tryda Ostrava{
rynek(){
toz Stverec s = zrob Stverec(5) pyco
}
}
fajront pyco
OSTRAJava je samozřejmě jazyk objektový. Pokud chceme uvést třídu, z které chceme dědit, použijeme konstrukt fagan od
.
joch
slouží jako reference na vlastní instanci tedy ekvivalent this
.
forant
, tedy předák na šichtě, slouží jako reference na rodiče, tedy ekvivalent super
.
Nový objekt vytvoříme pomocí zrob
.
Pokud bychom chtěli vytvořit pole, uděláme to následovně:
toz cyslo[] pole = zrob cyslo[5] pyco
Navratový typ metody se píše stejně jako v Javě před název metody. Pro metodu s prázdným návratovým typem není třeba psát nic.
Pro navrácení hodnoty je použito klíčové slovo davaj
.
tryda Buu{
cyslo fuu(Dryst text){
//...
davaj text.dylka pyco
}
}
Implementováno momentálně je:
Compiler
.tryda
classfiluInterpreter
integer
, float
) na stacku a pointer s 1 na posledním bituinteger
a float
Pro kompilaci OSTRAJava překladače je potřeba:
Pro spuštění zkompilovaných binárek postačí Java interpret (JRE) >= 1.7 (http://www.oracle.com/technetwork/java/javase/downloads/index.html).
V root složce:
$ mvn clean
$ mvn install
Nastavení práv pro skripty
$ chmod u+x ostrajavac
$ chmod u+x ostrajava
Program SATSolver je ve složce examples/SATSolver/
:
$ ./ostrajavac examples/SATSolver/ -d compiled/
$ ./ostrajava -h 1024 -f 256 -s 128 compiled/ resources/sats/01.txt
Tomáš Kohout
FIT ČVUT
(www.whostolemyunicorn.com)