A beadandóhoz használandó programozási nyelv leírása (While, 2019 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 oktatási célokra gyakran felhasznált While nyelv egy változata.

Az alábbi példaprogram a bemeneten kapott nemnegatív egész szám legkisebb valódi osztóját számolja ki.

Tesztfájlok letölthetőek!

program oszto
  natural a;
  natural i;
  natural oszto;
  boolean vanoszto;
begin
  read( a );
  vanoszto := false;
  i := 2;
  while not vanoszto and i < a do
    if a mod i = 0 then
      vanoszto := true;
      oszto := i;
    endif
    i := i+1;
  done
  if vanoszto then
    write( vanoszto );
    write( oszto );
  else
    write( vanoszto );
  endif
end

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. A nyelv case-sensitive, azaz számít a kis és nagybetűk közötti különbség.

Kulcsszavak

A nyelv kulcsszavai a következők: program, begin, end, natural, boolean, true, false, div, mod, and, or, not, skip, if, then, else, elseif, endif, while, do, done, read, write

Azonosítók

A változók nevei betűkből, számjegyekből és _ jelből állhatnak, betűvel kell kezdődniük, és nem ütközhetnek egyik kulcsszóval sem.

Típusok

Megjegyzések

A # karaktertől kezdve a következő # karakterig. Megjegyzések a program tetszőleges pontján előfordulhatnak, és tetszőleges számú sorra kiterjedhetnek. 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, törzsből és befejezésből áll. A szignatúra tartalma: program név, ahol a név tetszőleges azonosító. A szignatúrát a deklarációs rész követi, majd begin kulcsszó vezeti be a törzset. A deklarációs rész lehet üres is. A törzs legalább egy utasítást tartalmaz. A befejezést az end kulcsszó jelzi.

Változódeklarációk

Minden változót típus név ; alakban kell deklarálni, több azonos típusú változó esetén mindegyiket külön-külön.

Kifejezések
Utasítások