[grammar] → ([block] (/\n\.\n?/ [block])*)? [block] → [pragma-block] → [rule-block] → [where-block] [pragma-block] → [pragma] (/\n(?!\t)/ [pragma])* [rule-block] → [rule-decl] [rule-case] (/\n\t/ [rule-case])* [where-block] -> where /\n\t/ ([rule-block] /\n\t/)+ in /\n\t/ [rule-block] [pragma] → pragma [pragma-name] [pragma-body]