tkohout / OSTRAJava

Bo neni cas pyco
884 stars 29 forks source link

OSTRAJava

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.

Syntaxe

Příklad 1 – Hello world

Zde je typický "Hello world" program v OSTRAJavě.

banik pyco

tryda Ostrava{
    rynek(){
        Konzola.pravit("Toz vitaj") pyco
    }
} 

fajront pyco

Typy

OSTRAJava obsahuje 4 primitivní typy:

Hodnoty:

Základní knihovna OSTRAJavy také obsahuje třídy:

Deklarace

Deklaraci je nutno začít klíčovým slovem toz.

toz cyslo i = 1 pyco

Podmínky

Pro vytvoření podmínky použijeme konstrukt kajkajtezboinak.

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 {
   // ...
}

Cykly

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
}

Příklad 2

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 

Dědičnost

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

Metody

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
   }
}

Implementace

Implementováno momentálně je:

Kompilace a spuštění

Závislosti

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).

Kompilace OSTRAJava překladače a interpretru

V root složce:

$ mvn clean
$ mvn install

Nastavení práv pro skripty

$ chmod u+x ostrajavac
$ chmod u+x ostrajava

Kompilace OSTRAJava programů

Program SATSolver je ve složce examples/SATSolver/:

$ ./ostrajavac examples/SATSolver/ -d compiled/

Spuštění OSTRAJava programů

$ ./ostrajava -h 1024 -f 256 -s 128 compiled/ resources/sats/01.txt

Autor

Tomáš Kohout

FIT ČVUT

(www.whostolemyunicorn.com)