Petra BNF (with lower-case 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) | ; | assumez ::= z , z | () -> {q;}q ::= q ; q | x_i.m()