ietf-mta-filters
[Top] [All Lists]

Re: draft-homme-sieve-variables-03.txt

2004-08-12 07:36:06


On Wed, 2004-08-11 at 11:21 -0400, Tony Hansen wrote:
It says this:

    This extension changes the semantics of quoted-string, multi-line-
    literal and multi-line-dotstuff found in [SIEVE] to enable the inclu-
    sion of the value of variables.  The syntax follows [ABNF].

but never gives the redefined ABNF for quoted-string, multi-line-literal
nor multi-line-dotstuff.

my very first draft (not submitted) tried to make a change to the
syntax, but it was pointed out on this list that it was ambiguous:
*CHAR expands to valid variable references.  I tried to rewrite the
syntax to avoid the problem, but it got really convoluted.

Exacly. I ran into the same thing in MIME when I tried to fix the
ABNF there that did this. The solution was to dump it all. I don't
believe I've seen a single complaint that this was done.

list
consensus at the time was to leave the syntax alone and change the
semantics.  this also mimics the natural way of implementing the
extension, IMHO.

Given the recent addition of text making it clear extensions may need
access to unexpanded parameters, it is pretty much the only way to
implement it.

I do agree the wording in that paragraph is a little confusing, though.
perhaps it's better to put the grammar _below_ the explanation of the
procedure.  also, the reference to [ABNF] is a better fit in the
conventions paragraph in the introduction:

    Conventions for notations are as in [SIEVE] section 1.1, including
-   use of [KEYWORDS].  In this document, "character" means a [UNICODE]
+   use of [KEYWORDS] and [ABNF].  In this document, "character" means a

Much better.

my copy now says:

3.  Interpretation of strings

   This extension changes the semantics of quoted-string, multi-line-
   literal and multi-line-dotstuff found in [SIEVE] to enable the inclu-
   sion of the value of variables.

   When a string is evaluated, substrings matching variable-ref shall be
   replaced by the value of variable-name.  Only one pass through the
   string shall be done.  Variable names are case insensitive, so "foo"
   and "FOO" refer to the same variable.  Unknown variables are replaced
   by the empty string.

      variable-ref        =  "${" variable-name "}"
      variable-name       =  num-variable / *namespace identifier
      namespace           =  identifier "."
      num-variable        =  1*DIGIT

   Examples:
      [...]

This sounds fine to me.

                                Ned


<Prev in Thread] Current Thread [Next in Thread>