Here, in no particular order, are the rules I found:
LINES ::= LINE | LINE ""
"" LINE
EXEC ::= {...}
LINE ::= SET | EXEC | BLOCK | CONDITIONAL | INVOKE | RENAME
RVALUE ::= SINGULAR QNAMECHAIN
CONDITIONAL ::= If TRUTHY Then BLOCK
INVOKE ::= METHODNAME The SELECTOR | Do METHODNAME SELECTOR
SELECTOR ::= SINGULAR | PLURAL
TRIGGER ::= When TRUTHY BLOCK
DECL ::= A THINGNAME Is SINGULAR | TRIGGER | To METHODNAME A THINGNAME BLOCK
SINGULAR ::= It | That THINGNAME | The PROPERTYVALUECHAIN THINGNAME | THINGID
BLOCK ::= {...} | { LINE }
QUALITYVALUE ::= Red | Green | Yellow | Big | Small | Medium
PLURAL ::= Each THINGNAME | Each PROPERTYVALUECHAIN THINGNAME
METHODNAME ::= Pick | Poke | Rotate
PROPERTYVALUECHAIN ::= QUALITYVALUE | QUALITYVALUE PROPERTYVALUECHAIN
RENAME ::= Call SELECTOR THINGID
SET ::= SELECTOR Has RVALUE | SELECTOR QNAMECHAIN is QUALITYVALUE
QUALITYNAME ::= Colour | Size | Owner
DECLARATIONS ::= DECL | DECL ""
"" DECL
THINGID ::= foo | bar | fred | stuff | temp
bnf ::= DECLARATIONS ""
"" LINES
LINES
LINES
THINGNAME ::= Thing | Token | Bag | Map | Board | Ship | Counter | Piece
option ::= debug = 1
TRUTHY ::= RVALUE | RVALUE Is Not RVALUE | RVALUE Is QUALITYVALUE | Truthy Or RVALUE | Truthy And RVALUE
QNAMECHAIN ::= 's QUALITYNAME | 's QUALITYNAME QNAMECHAIN
This is what I did with them:
Iteration 1: Lookup: bnf ::= DECLARATIONS "
" LINES
LINES
LINES
Iteration 2: Lookup: DECLARATIONS ::= DECL "
" DECL
Iteration 3: Lookup: DECL ::= TRIGGER
Iteration 4: Lookup: TRIGGER ::= When TRUTHY BLOCK
Iteration 5: Iteration 6: Lookup: TRUTHY ::= RVALUE
Iteration 7: Lookup: RVALUE ::= SINGULAR QNAMECHAIN
Iteration 8: Lookup: SINGULAR ::= That THINGNAME
Iteration 9: Iteration 10: Lookup: THINGNAME ::= Counter
Iteration 11: Iteration 12: Lookup: QNAMECHAIN ::= 's QUALITYNAME QNAMECHAIN
Iteration 13: Iteration 14: Lookup: QUALITYNAME ::= Owner
Iteration 15: Iteration 16: Lookup: QNAMECHAIN ::= 's QUALITYNAME QNAMECHAIN
Iteration 17: Iteration 18: Lookup: QUALITYNAME ::= Size
Iteration 19: Iteration 20: Lookup: QNAMECHAIN ::= 's QUALITYNAME
Iteration 21: Iteration 22: Lookup: QUALITYNAME ::= Colour
Iteration 23: Iteration 24: Lookup: BLOCK ::= { LINE }
Iteration 25: Iteration 26: Lookup: LINE ::= RENAME
Iteration 27: Lookup: RENAME ::= Call SELECTOR THINGID
Iteration 28: Iteration 29: Lookup: SELECTOR ::= SINGULAR
Iteration 30: Lookup: SINGULAR ::= That THINGNAME
Iteration 31: Iteration 32: Lookup: THINGNAME ::= Map
Iteration 33: Iteration 34: Lookup: THINGID ::= bar
Iteration 35: Iteration 36: Iteration 37: Iteration 38: Lookup: DECL ::= A THINGNAME Is SINGULAR
Iteration 39: Iteration 40: Lookup: THINGNAME ::= Counter
Iteration 41: Iteration 42: Iteration 43: Lookup: SINGULAR ::= THINGID
Iteration 44: Lookup: THINGID ::= stuff
Iteration 45: Iteration 46: Iteration 47: Lookup: LINES ::= LINE "
" LINE
Iteration 48: Lookup: LINE ::= RENAME
Iteration 49: Lookup: RENAME ::= Call SELECTOR THINGID
Iteration 50: Iteration 51: Lookup: SELECTOR ::= SINGULAR
Iteration 52: Lookup: SINGULAR ::= THINGID
Iteration 53: Lookup: THINGID ::= bar
Iteration 54: Iteration 55: Lookup: THINGID ::= stuff
Iteration 56: Iteration 57: Iteration 58: Lookup: LINE ::= CONDITIONAL
Iteration 59: Lookup: CONDITIONAL ::= If TRUTHY Then BLOCK
Iteration 60: Iteration 61: Lookup: TRUTHY ::= RVALUE
Iteration 62: Lookup: RVALUE ::= SINGULAR QNAMECHAIN
Iteration 63: Lookup: SINGULAR ::= THINGID
Iteration 64: Lookup: THINGID ::= bar
Iteration 65: Iteration 66: Lookup: QNAMECHAIN ::= 's QUALITYNAME
Iteration 67: Iteration 68: Lookup: QUALITYNAME ::= Size
Iteration 69: Iteration 70: Iteration 71: Lookup: BLOCK ::= { LINE }
Iteration 72: Iteration 73: Lookup: LINE ::= BLOCK
Iteration 74: Lookup: BLOCK ::= {...}
Iteration 75: Iteration 76: Iteration 77: Iteration 78: Iteration 79: Lookup: LINES ::= LINE
Iteration 80: Lookup: LINE ::= BLOCK
Iteration 81: Lookup: BLOCK ::= { LINE }
Iteration 82: Iteration 83: Lookup: LINE ::= BLOCK
Iteration 84: Lookup: BLOCK ::= { LINE }
Iteration 85: Iteration 86: Lookup: LINE ::= BLOCK
Iteration 87: Lookup: BLOCK ::= { LINE }
Iteration 88: Iteration 89: Lookup: LINE ::= INVOKE
Iteration 90: Lookup: INVOKE ::= METHODNAME The SELECTOR
Iteration 91: Lookup: METHODNAME ::= Pick
Iteration 92: Iteration 93: Iteration 94: Lookup: SELECTOR ::= PLURAL
Iteration 95: Lookup: PLURAL ::= Each THINGNAME
Iteration 96: Iteration 97: Lookup: THINGNAME ::= Bag
Iteration 98: Iteration 99: Iteration 100: Iteration 101: Iteration 102: Iteration 103: Iteration 104: Lookup: LINES ::= LINE
Iteration 105: Lookup: LINE ::= CONDITIONAL
Iteration 106: Lookup: CONDITIONAL ::= If TRUTHY Then BLOCK
Iteration 107: Iteration 108: Lookup: TRUTHY ::= RVALUE
Iteration 109: Lookup: RVALUE ::= SINGULAR QNAMECHAIN
Iteration 110: Lookup: SINGULAR ::= It
Iteration 111: Iteration 112: Lookup: QNAMECHAIN ::= 's QUALITYNAME QNAMECHAIN
Iteration 113: Iteration 114: Lookup: QUALITYNAME ::= Owner
Iteration 115: Iteration 116: Lookup: QNAMECHAIN ::= 's QUALITYNAME QNAMECHAIN
Iteration 117: Iteration 118: Lookup: QUALITYNAME ::= Owner
Iteration 119: Iteration 120: Lookup: QNAMECHAIN ::= 's QUALITYNAME QNAMECHAIN
Iteration 121: Iteration 122: Lookup: QUALITYNAME ::= Size
Iteration 123: Iteration 124: Lookup: QNAMECHAIN ::= 's QUALITYNAME
Iteration 125: Iteration 126: Lookup: QUALITYNAME ::= Owner
Iteration 127: Iteration 128: Iteration 129: Lookup: BLOCK ::= {...}
Iteration 130:
..and here's what I got:
When That Counter 's Owner 's Size 's Colour { Call That Map bar }
A Counter Is stuff
Call bar stuff
If bar 's Size Then { {...} }
{ { { Pick The Each Bag } } }
If It 's Owner 's Owner 's Size 's Owner Then {...}
Vitenka/TempSyntax