Yes, that is a reasonable way to get the string into the grammar. Could
you explain if / how it would deal with #3, #4 (and hence #5)?

3. expect (a fragment of) a Ruby AST back, t
4. call t.process (or whatever is Ruby's way to combine and analyze its
AST fragments and eventually produce classes, methods, etc. Probably a
richer protocol than a single method)
5. keep going from just after "}"

I want the DSL fragment to contribute to building the overall AST and
subsequently processing it. e.g. even use a DSL fragment inside a
normal Ruby method. Any suggestions in that direction?