User Tools

Site Tools


abap2015

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

===== 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 nyelv az [[http://en.wikipedia.org/wiki/ABAP|ABAP]] egyszerűsített változata. Az alábbi példaprogram a bemenetről logikai értékeket és egészeket olvas felváltva. Az egészek közül a 10 és 100 közöttieket összeadja, amíg először hamis értéket nem kap a bemeneten. Az összeget kiírja a kimenetre. Tesztfájlok [[http://deva.web.elte.hu/fordprog/abap2015-tesztfajlok.zip|letölthetőek]]! <code> * Osszegzes PROGRAM osszeg. DATA: i TYPE I, s TYPE I, more TYPE B. MOVE 0 TO s. READ TO more. WHILE more. READ TO i. IF i> 10 AND i < 100. ADD i TO s. ENDIF. READ TO more. ENDWHILE. WRITE s. </code> ==== A nyelv definíciója ==== === Karakterek === A forrásfájlok a következő ASCII karaktereket tartalmazhatják: * az angol abc kis és nagybetűi * számjegyek (0-9) * ():<>=_,. * szóköz, tab, sorvége Minden más karakter esetén hibajelzést kell adnia a fordítónak, kivéve megjegyzések belsejében, mert ott tetszőleges karakter megengedett. Az ABAP-pal ellentétben ebben a nyelvben számítanak a kis és nagybetű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. === 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. === A program felépítése === 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. == 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 == Kifejezések == * I típusú kifejezések: számliterálok, I típusú változók. * 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ő: * OR * AND * = * < > == Utasítások == * É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.) * Í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.

abap2015.1443798369.txt.gz · Last modified: 2015/10/02 17:06 by deva