Long lines: \-escape is working satisfactorily, But I'll look into the option of merging lines depending on the first chars in the next line, which would be much more attractive.

DSLR analysis: is a little more lenient; you may have, for instance  "when there is a foo" on a single line, and the trigger keywords (rule,query, when then, end) may be indented.

Substitution: is now done "manually" rather than with Matcher.replaceAll(). This eliminates some problems with '\' and '$' and creates the opportunity for new features.

New features: I'm experimenting with using key-value pairs saved from preceding lines to provide a replacement value for a {}-variable that isn't defined on the current line. Also, a variable reference such as {variable-name!function-name} is simple to implement; case conversions would be useful functions.
   [when]there is an? {entity}=${entity!lc}: {entity!ucf}()
   [then]discard the fact=retract( ${entity!lc} );
But these features depend on "reasonable" {}-variable names.

Open issue: {}-variable may contain almost any Unicode character. This causes much pain in the parser and even more in the expander; and users are burdened with having to escape this or that character. Is it really a good or important thing to be able to write a variable name like ><!@%^*|+?,/''"|&().; and/or escape sequences?? If someone would make a decisive statement ("has to remain as it is" OR "restrict to the usual lexical identifier syntax") I'd appreciate this very much.

Best
Wolfgang