Petra BNF (with capitalized terms)
3. PETRA: ABSTRACT SYNTAX
Section titled “3. PETRA: ABSTRACT SYNTAX”OBJ ::= A{β* φ* δ*}β ::= x_i : A_iφ ::= P = Eδ ::= M = {C}E ::= x_i.P | E & E | E ∨ E | E + E | !E | (E)D ::= D + D | PC ::= C + C | [PRE] S [POST]PRE, POST ::= DS ::= Z | SKIP | ASSUMEZ ::= Z ∥ Z | QQ ::= Q ; Q | x_i.M2. PETRA: CONTROLLED ENGLISH
Section titled “2. PETRA: CONTROLLED ENGLISH”OBJ ::= A has β*, and is in one of P_φ states,where φ*, and has actions δ.β ::= a x_i which is some A_i,φ ::= P means E,δ ::= M where C,E ::= x_i P | E and E | E or E | E either E | not E | (E)D ::= D, or D | PC ::= C, or C | if only PRE, when S completes, then POSTPRE, POST ::= DS ::= Z | do nothing | assumed operationZ ::= Z separately with Z | QQ ::= Q before Q | M x_i3. PETRA-JAVA: CONCRETE SYNTAX
Section titled “3. PETRA-JAVA: CONCRETE SYNTAX”OBJ ::= A{β* φ* δ*}β ::= private final A_i x_i = new A_i();φ ::= boolean P(){ return E; }δ ::= void M(){ return C }E ::= x_i.P | E && E | E || E | E ^ E | !E | (E)D ::= D ^ D | PC ::= C else C | if(PRE){ S; assert(POST); }PRE, POST ::= DS ::= sep(z) | seq(z) | par(z) | ; | EDGEZ ::= Z , Z | () -> {Q;}Q ::= Q ; Q | x_i.M()