User Tools

Site Tools


abap2015

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
abap2015 [2015/10/02 16:26]
deva
abap2015 [2016/02/17 09:48]
deva removed
Line 1: Line 1:
-==== A beadandóhoz használandó programozási nyelv leírása ====+===== A beadandóhoz használandó programozási nyelv leírása ​=====
  
 A félév során az alábbi programozási nyelvhez kell fordítóprogramot írni //flex// és //​bisonc++//​ segítségével. A félév során az alábbi programozási nyelvhez kell fordítóprogramot írni //flex// és //​bisonc++//​ segítségével.
Line 28: Line 28:
 </​code>​ </​code>​
  
-=== A nyelv definíciója ===+==== A nyelv definíciója ​====
  
-== Karakterek ==+=== Karakterek ​===
  
 A forrásfájlok a következő ASCII karaktereket tartalmazhatják:​ A forrásfájlok a következő ASCII karaktereket tartalmazhatják:​
   * az angol abc kis és nagybetűi   * az angol abc kis és nagybetűi
   * számjegyek (0-9)   * számjegyek (0-9)
-  * ():<>​=_,​.+  * ''​():<>​=_,​.''​
   * szóköz, tab, sorvége ​   * szóköz, tab, sorvége ​
  
Line 41: Line 41:
  
  
-== Azonosítók ==+=== Azonosítók ​===
  
-A változók nevei, illetve a program neve az angol ábécé kisbetűiből,​ számjegyekből és _ jelből állhatnak, és betűvel kell kezdődniük.+A változók nevei, illetve a program neve az angol ábécé kisbetűiből,​ számjegyekből és ''​_'' ​jelből állhatnak, és betűvel kell kezdődniük.
  
-== Típusok =+=== Típusok ===
-         +
-  * I: négy bájtos, előjel nélküli egészként kell megvalósítani;​ literáljai számjegyekből állnak és nincs előttük előjel +
-  * B: egy bájton kell ábrázolni,​ literáljai a FALSE és a TRUE  +
-     +
-== Megjegyzések ​==+
  
-A sor elején álló ​karakterektől kezdve a sor végéig. Megjegyzések a program tetszőleges pontján ​előfordulhatnak, a fordítást ​és a keletkező programkódot nem befolyásolják.+  ​''​I'':​ négy bájtos, előjel nélküli egészként kell megvalósítani;​ literáljai számjegyekből állnak és nincs előttük előjel 
 +  * ''​B'':​ egy bájton kell ábrázolniliteráljai ​''​FALSE'' ​és a ''​TRUE''​
  
-== A program felépítése ​==+=== Megjegyzések ===
  
-A program szignatúrából,​ deklarációs részből és törzsből. A szignatúra tartalma: PROGRAM név ., ahol a név tetszőleges azonosító. A deklarációs részt DATA: vezeti be. A deklarációs rész nem kötelező, de ha van, akkor legalább egy változódeklarációt tartalamaz. A törzs utasításokat tartalamaz, de lehet üres is. +A sor elején álló ''​*''​ karakterektől kezdve a sor végéig. Megjegyzések a program tetszőleges pontján előfordulhatnak,​ a fordítást és a keletkező programkódot nem befolyásolják. 
-    Változódeklarációk: minden ​változót név TYPE típus alakban, egy vesszőkkel elválasztott listában kell deklarálni,​ minden változóhoz külön feltüntetve a típusát. + 
-    I típusú kifejezések:​ számliterálok,​ I típusú változók. +=== A program felépítése === 
-    B típusú kifejezések:​ TRUE és FALSE, B típusú változók, két I típusú kifejezésből az = (egyenlőség),​ < (kisebb), > (nagyobb) infix operátorral,​ valamint az ezekből AND (konjunkció),​ OR (diszjunkció) infix és a NOT (negáció) prefix operátorral és zárójelekkel felépített kifejezések. + 
-    Az infix operátorok mind balasszociatívak és a precedenciájuk növevő sorrendben a következő:​ +A program szignatúrából,​ deklarációs részből és törzsből. A szignatúra tartalma: ​''​PROGRAM'' ​név ''​.''​, ahol a név tetszőleges azonosító. A deklarációs részt ​''​DATA:'' ​vezeti be. A deklarációs rész nem kötelező, de ha van, akkor legalább egy változódeklarációt tartalamaz. A törzs utasításokat tartalamaz, de lehet üres is. 
-        OR + 
-        AND +== Változódeklarációk ​== 
-        + 
-        < >  +Minden ​változót név ''​TYPE'' ​típus alakban, egy vesszőkkel elválasztott listában kell deklarálni,​ minden változóhoz külön feltüntetve a típusát 
-    Értékadás:​ MOVE kifejezés TO változó . alakú. A változó és a kifejezés típusa csak azonos lehet. + 
-    Olvasás: A READ TO változó . utasítás a megadott változóba olvas be egy megfelelő típusú értéket a standard bemenetről. (Megvalósítása:​ meg kell hívni a be eljárást, amit a 4. beadandó feladathoz mellékelt C fájl tartalmaz. A beolvasott érték az eax (logikai típus esetén az al) regiszterben lesz.) +== Kifejezések == 
-    Írás: A WRITE utasítás a megadott kifejezés értékét a képernyőre írja (és egy sortöréssel fejezi be). (Megvalósítása:​ meg kell hívni a ki eljárást, amit a 4. beadandó feladathoz mellékelt C fájl tartalmaz. Paraméterként a kiírandó értéket (mindkét esetben 4 bájtot) kell a verembe tenni.) + 
-    Aritmetika:​ +  * ''​I'' ​típusú kifejezések:​ számliterálok, ​''​I'' ​típusú változók. 
-        ADD kifejezés TO változó . +  * ''​B'' ​típusú kifejezések: ​''​TRUE'' ​és ''​FALSE''​''​B'' ​típusú változók, két ''​I'' ​típusú kifejezésből az ''​='' ​(egyenlőség), ​''​<'' ​(kisebb), ​''​>'' ​(nagyobb) infix operátorral,​ valamint az ezekből ​''​AND'' ​(konjunkció), ​''​OR'' ​(diszjunkció) infix és a ''​NOT'' ​(negáció) prefix operátorral és zárójelekkel felépített kifejezések. 
-        SUBTRACT kifejezés FROM változó . +  ​* ​Az infix operátorok mind balasszociatívak és a precedenciájuk növevő sorrendben a következő:​ 
-        MULTIPLY változó BY kifejezés . +    * ''​OR''​ 
-        DIVIDE változó BY kifejezés . +    * ''​AND''​ 
-        MOD változó BY kifejezés TO változó .  +    * ''​=''​ 
-    Ciklus: WHILE feltétel . utasítások ENDWHILE. +    * ''​<''​ ''​>''​ 
-    A feltétel logikai kifejezés, és a ciklus belsejében legalább egy utasításnak kell lennie. A megszokott módon, elöltesztelős ciklusként működik. + 
-    Elágazás: IF feltétel . utasítások ENDIF. +== Utasítások == 
-    ​vagy +  
-    ​IF feltétel . utasítások ELSE. utasitasok ENDIF. +  * Értékadás: ​''​MOVE'' ​kifejezés ​''​TO'' ​változó ​''​.'' ​alakú. A változó és a kifejezés típusa csak azonos lehet. 
-    A feltétel logikai kifejezés, és az egyes ágakban legalább egy-egy utasítás van. A megszokott módon működik. ​+  ​* ​Olvasás: A ''​READ TO'' ​változó ​''​.'' ​utasítás a megadott változóba olvas be egy megfelelő típusú értéket a standard bemenetről. (Megvalósítása:​ meg kell hívni a be eljárást, amit a 4. beadandó feladathoz mellékelt C fájl tartalmaz. A beolvasott érték az eax (logikai típus esetén az al) regiszterben lesz.) 
 +  ​* ​Írás: A ''​WRITE'' ​utasítás ​''​.'' ​a megadott kifejezés értékét a képernyőre írja (és egy sortöréssel fejezi be). (Megvalósítása:​ meg kell hívni a ki eljárást, amit a 4. beadandó feladathoz mellékelt C fájl tartalmaz. Paraméterként a kiírandó értéket (mindkét esetben 4 bájtot) kell a verembe tenni.) 
 +  ​* ​Aritmetika:​ 
 +    * ''​ADD'' ​kifejezés ​''​TO'' ​változó ​''​.''​ 
 +    * ''​SUBTRACT'' ​kifejezés ​''​FROM'' ​változó ​''​.''​ 
 +    * ''​MULTIPLY'' ​változó ​''​BY'' ​kifejezés ​''​.''​ 
 +    * ''​DIVIDE'' ​változó ​''​BY'' ​kifejezés ​''​.''​ 
 +    * ''​MOD'' ​változó ​''​BY'' ​kifejezés ​''​TO'' ​változó ​''​.'' ​ 
 +  ​* ​Ciklus: ​''​WHILE'' ​feltétel ​''​.'' ​utasítások ​''​ENDWHILE''​ ''​.''​ 
 +    ​A feltétel logikai kifejezés, és a ciklus belsejében legalább egy utasításnak kell lennie. A megszokott módon, elöltesztelős ciklusként működik. 
 +  ​* ​Elágazás: 
 +    * ''​IF'' ​feltétel ​''​.'' ​utasítások ​''​ENDIF''​ ''​.''​ 
 +    ​* ''​IF'' ​feltétel ​''​.'' ​utasítások ​''​ELSE''​ ''​.'' ​utasitasok ​''​ENDIF''​ ''​.''​ 
 +    ​A feltétel logikai kifejezés, és az egyes ágakban legalább egy-egy utasítás van. A megszokott módon működik.