how natural to express an action how much text to express action
how easy to understand and follow program
aids in understanding to make a modification
e.g., symbolic constants, data abstraction, polymorphism
Arrays, Records, If-then-else, for/while loops
efficiency improving transformations
if-then goto if-then-else, while, for
subprograms with parameters exception handling coroutines concurrent units
begin -- the begin reserved word := -- the assignment operator [A-Z][A-Z0-9]* -- an identifier [0-9]+ -- an integer literal
E --> E '+' E
E --> E '*' E
E --> '(' E ')'
E --> Identifier
for (expr1; expr2; expr3) stmt
expr1; LoopTop: if expr2 == 0 goto LoopEnd stmt expr3; goto LoopTop LoopEnd: