On Mon, 5 Oct 2009, Barry Leiba wrote:
...
But I still contend the definition in 5229 of what bits of the core
5228 syntax can be replaced by variables isn't sufficiently clear.
Unfortunately, (1) we all know what we meant, and (2) neither of us
has yet come up with text that cleanly fixes the issue.
As an aside, there *is* an unarguable erratum in 5229: where the text
says "multi-line-dotstuff" it should be "multiline-dotstart", and
where it says "multi-line-literal" it should say "multiline-literal".
Yep, those are clearly typos.
For an example of the problem of clarity, let's look at an example from
5229:
fileinto "INBOX.lists.${2}"; stop;
I contend that's not valid from a strict reading of the grammar,
though we clearly want to allow it. We've said that a variable can
stand in for a "quoted-string", but we did not say it could stand in
for a PORTION of a quoted string -- specifically, for a quoted-text
construction (and I'm not sure even that would do it, given the 5228
grammar).
Umm, what? 5229, section 3p2 says:
When a string is evaluated, substrings matching variable-ref SHALL be
replaced by the value of variable-name.
*Substrings* matching variable-ref are replaced. That seems to me to be
an explict statement declaration that it "stands in" for a portion of a
string. Where do you see syntax or requirements that say that the entire
string must match the variable-ref syntax?
I'll also note that since we don't include "number" in the
constructions that can be substituted, we can't use variables in the
"size" test, for example. So this is syntactically invalid:
if size :over ${max} {
discard;
}
I'm not sure whether or not that was intended.
I seemed clear enough to me at the time. The fact that we call out the
syntax elements for quoted-string and multiline strings would seem to back
up that people knew we were just talking about strings.
Philip Guenther
_______________________________________________
sieve mailing list
sieve(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/sieve