program ::= -> (, ) ident ::= function-identifier | identifier type ::= "Typ von " value ::= | ; Funktionsrumpf von statement ::= | | | | | labeled-statement ::= LABELED-STMT | CASE | DEFAULT compound-statement ::= COMPOUND-STMT ( -> (, )) * ; { int i = 7; i+1; j+i; } expression-statement ::= EXP-STMT selection-statement ::= IF [] | SWITCH ; für binäre Suche in den case-statements iteration-statement ::= WHILE ; while (e1) e2; jump-statement ::= GOTO | CONTINUE | BREAK | RETURN [] exp ::= EXPRESSION-SEQUENCE ; e1 , e2 | SELECT-EXPR ; e1 ? e2 : e3 | ASGN ; e1 = e2 | CNST ; 4711 "hello" 'c' ... | POINTER-EXP (ADDR | INDIR ) | UN-EXP | BIN-EXP | REL-EXP | CONVERT-EXP (F | I | P | U) (F | I | P | U) binary-exp ::= (MUL | DIV | MOD | ADD | SUB | LSH | RSH | BAND | BOR | BXOR) unary-exp ::= (NEG | BCOM) relational-exp ::= (LT | GT | LE | GE | NE | EQ)