A beadandóhoz használandó programozási nyelv leírása (Abap, 2018 tavasz)

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 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 letölthetőek!

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

A nyelv definíciója

Karakterek

A forrásfájlok a következő ASCII karaktereket tartalmazhatják:

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, nagybetűiből és számjegyekből állhatnak, és betűvel kell kezdődniük.

Típusok

Megjegyzések

A sor elején álló * karakterektől kezdve a sor végéig. Megjegyzések a program tetszőleges sorában előfordulhatnak (de csak a sor elején). 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
Utasítások