I. Syntactic Domains:
C in Command
G in Guarded-command
E in Expression
B in Boolean-expression
I in Identifier
II. Abstract Syntax:
C ::= C_1; C_2 | I := E | if G fi | do G
od
G ::= G_1 [] G_2 | B -> C
E ::= ...
B ::= ...
Example
do
A mod 2 = 0 -> A := A/2
[] A mod 3 = 0 -> A := A/3
[] A mod 5 = 0 -> A := A/5
od