*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