{azonosító} ::= (["a"-"z"]|["A"-"Z"]) ("_"|["a"-"z"]|["A"-"Z"]|[0-9])* {szám} ::= (0) | ("-"{0,1} [1-9][0-9]*) {program} ::= "program" {programnév} "is" {törzs} {programnév}; {programnév} ::= {azonosító} {törzs} ::= "begin" {sor}* "end" {sor} ::= {utasítás} ";" {utasítás} ::= {deklaráció}|{értékadás}|{elágazás}|{ciklus}|{művelet} {kifejezés1} ::= ({kifejezés1} ("+"|"-") {kifejezés2}) | {kifejezés2} {kifejezés2} ::= ({kifejezés2} ("*"|"/") {kifejezés3}) | {kifejezés3} {kifejezés3} ::= ("(" {kifejezés1} ")") | ({azonosító}|{szám}) {feltétel1} ::= ({feltétel2} ("&"|"|") {feltétel2}) | (feltétel2) {feltétel2} ::= {azonos}|{eltérő}|{kisebb}|{kisebb_egyenlő}|{nagyobb}|{nagyonbb_egynlő} {azonos} ::= {azonosító}|{szám} "=" {azonosító}|{szám} {eltérő} ::= {azonosító}|{szám} "!=" {azonosító}|{szám} {kisebb} ::= {azonosító}|{szám} "<" {azonosító}|{szám} {kisebb_egyenlő} ::= {azonosító}|{szám} "<=" {azonosító}|{szám} {nagyobb} ::= {azonosító}|{szám} ">" {azonosító}|{szám} {nagyobb_egyenlő} ::= {azonosító}|{szám} ">=" {azonosító}|{szám} {deklaráció} ::= "int" {azonosító}|{értékadás2} {értékadás1} ::= ({azonosító} ("+="|"*=") ({szám}|{kifejezés1})) | {értékadás2} {értékadás2} ::= {azonosító} ":=" ({szám}|{kifejezés1}) {elágazás} ::= "if" ({feltétel1}) "then" {törzs} {"else" {törzs}}{0, 1} "if"; {ciklus} ::= {while-ciklus}|{for-ciklus}; {while-ciklus} ::= "while" ({feltétel1}) "do" {törzs} "loop"; {for-ciklus} ::= "for" ({enumeráció}) "do" {törzs} "loop"; {enumeráció} ::= {{deklaráció} "in" {felsorolás}}|{{deklaráció}";" {feltétel1}";" {értékadás1}} {felsorolás} ::= {szám}".."{szám} {művelet} ::= {kiírás} | {beolvasás}; {kiírás} ::= "write(" {azonosító}|{szám} ")" {beolvasás} ::= "read(" {azonosító} ")" //valahogy így kellene kinéznie benne a kódnak: //int count := 1; //int input; //read(input); //count += input; //for (int i := input; i <= 15; i += 1) do begin // if ((i > 10)) then begin // wirte(i); // end; // else begin // int j := 10 - i; // write(j); // end; // end if; //end loop;