THINGNAME ::= Thing | Token | Bag | Map | Board | Ship | Counter | Piece THINGID ::= foo | bar | fred | stuff | temp QUALITYNAME ::= Colour | Size | Owner QUALITYVALUE ::= Red | Green | Yellow | Big | Small | Medium METHODNAME ::= Pick | Poke | Rotate bnf ::= DECLARATIONS "<hr />" LINES <br /> LINES <br /> LINES option ::= debug = 1 DECLARATIONS ::= DECL | DECL "<br />" DECL DECL ::= A THINGNAME Is SINGULAR | TRIGGER | To METHODNAME A THINGNAME BLOCK LINES ::= LINE | LINE "<br />" LINE # This would be 'lines' but for debugging sanity... BLOCK ::= {...} | { LINE } EXEC ::= {...} PROPERTYVALUECHAIN ::= | QUALITYVALUE | QUALITYVALUE PROPERTYVALUECHAIN SINGULAR ::= It | That THINGNAME | The PROPERTYVALUECHAIN THINGNAME | THINGID QNAMECHAIN ::= | 's QUALITYNAME | 's QUALITYNAME QNAMECHAIN RVALUE ::= SINGULAR QNAMECHAIN TRUTHY ::= RVALUE | RVALUE Is Not RVALUE | RVALUE Is QUALITYVALUE | Truthy Or RVALUE | Truthy And RVALUE CONDITIONAL ::= If TRUTHY Then BLOCK SELECTOR ::= SINGULAR | PLURAL PLURAL ::= Each THINGNAME | Each PROPERTYVALUECHAIN THINGNAME SET ::= SELECTOR Has RVALUE | SELECTOR QNAMECHAIN is QUALITYVALUE RENAME ::= Call SELECTOR THINGID TRIGGER ::= When TRUTHY BLOCK INVOKE ::= METHODNAME The SELECTOR | Do METHODNAME SELECTOR LINE ::= SET | EXEC | BLOCK | CONDITIONAL | INVOKE | RENAME
|