hmmm
lemme try smth
very untested code
```antlr
grammar DF;
prog: header* EOF;
header: category=NAME action=NAME params tags? '>' stmt* '<';
stmt: regstmt | blockstmt;
regstmt: category=NAME action=NAME params tags?
blockstmt: category=NAME action=NAME params tags? '{' stmt* '}';
params: '('...