A beadandóhoz használandó programozási nyelv leírása (C++, 2018 ősz)

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 a C++ erősen leegyszerűsített 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!

// A legkisebb valodi oszto meghatarozasa.
int main()
{
  unsigned a;
  unsigned i;
  unsigned oszto;
  bool vanoszto;
  cin >> a;
  vanoszto = false;
  i = 2;
  while( !vanoszto && i < a )
  {
    if( a % i == 0 )
    {
      vanoszto = true;
      oszto = i;
    }
    i = i+1;
  }
  if( vanoszto )
  {
    cout << vanoszto;
    cout << oszto;
  }
  else
  {
    cout << vanoszto;
  }
}

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: int, main, unsigned, bool, true, false, if, else, while, cout, cin

Azonosítók

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

Típusok

Megjegyzések

A // 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 áll. A szignatúra tartalma: int main(). A szignatúrát a deklarációs rész követi, amely lehet üres is. A törzs legalább egy utasítást tartalmaz.

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