1.2 KiB
1.2 KiB
Struktur von Program
Programme sind hierarchisch aus Komponenten aufgebaut. Für jede
Komponente geben wir Regeln an, wie sie aus anderen
Komponenten zusammengesetzt sein können.
program = decl* stmt*
decl = type name ( , name)*
type = int
Statements
stmt ::= ; | { stmt* } |
name = expr; | name = read(); | write( expr ); |
if ( cond ) stmt |
if ( cond ) stmt else stmt |
while ( cond ) stmt
- Ein Statement ist entweder leer (d.h. gleich ;) oder eine
geklammerte Folge von Statements; - Oder eine Zuweisung, eine Lese- oder Schreib-Operation;
- Eine (einseitige oder zweiseitige) bedingte Verzweigung;
- Oder eine Schleife.
Expressions
expr ::= number | name | ( expr ) |
unop expr | expr binop expr
unop ::= -
binop ::= - | + | * | / | %
- Ein Ausdruck ist eine Konstante, eine Variable oder ein geklammerter Ausdruck
- Oder ein unärer Operator (unop), angewandt auf einen Ausdruck,
- Oder ein binärer Operator(binop), angewandt auf zwei Argument-Ausdrücke.
- Einziger unärer Operator ist (bisher) die Negation.
- Mögliche binäre Operatoren sind Addition, Subtraktion, Multiplikation, (ganz-zahlige) Division und Modulo.