Alexey Melnikov wrote:
Hi Stephan,
Thank you for your review.
I am quickly answering easy comments/questions and will followup on the
rest later on.
2.6:
- Clarify what is meant by syntax checking. In the strictest sense it
could mean that any script that complies with the basic grammar of the
Sieve language would pass. Command syntax, i.e. which arguments are
required/allowed, would then be ignored. Also, wouldn't it be
helpful/useful/desirable to include contextual checks here as well?
E.g. unknown/invalid comparators etc.
IMHO, invalid/unknown comparator would be covered by syntactic checks.
I first encountered this distinction when discussing the ihave
extension to the Sieve language. I implicitly interpreted this
requirement as a full script check (i.e. as would be done for full
compilation), which seems overly restrictive when reading this
standard more carefully.
You need to suggest specific text, especially if you want the document
to describe interaction with ihave in more details.
I was not saying that the interaction with ihave needs to be described
better, I was merely saying that during the discussion of the ihave
extension I noticed that the current formulation of the syntactic
validation requirement is very much open for interpretation. IMHO, this
is usually a bad thing in a document that is intended to establish a
standard.
I am not very good at writing such texts myself, but I can provide a
textual representation of how I interpret the sentence 'The server MUST
check the submitted script for syntactic validity, which includes
checking that all Sieve extensions mentioned in Sieve script "require"
statement(s) are supported by the Sieve interpreter.' (somewhere on page
20):
'The server MUST check the submitted script for validity, which includes
checking that the script complies with the Sieve grammar [SIEVE], that
all Sieve extensions mentioned in script's "require" statement(s) are
supported by the Sieve interpreter, that all used commands are known
(i.e. either part of the main Sieve language or an extension mentioned
in the "require" lines), that commands are used in the correct context
and that the supplied command arguments are valid for each command.
Essentially, the performed validation should be equal to what is
performed when compiling the script for execution. Implementations that
use a binary representation to store compiled scripts can extend the
validation to a full compile, in order to avoid validating uploaded
scripts multiple times.'
Does this interpretation match your intention of that sentence? I am
also wondering what others think of this. I can imagine that the ihave
authors have some amendments, but I think the text that follows the
aforementioned sentence in the draft should cover most potential issues.
Regards,
--
Stephan Bosch
stephan(_at_)rename-it(_dot_)nl