On 12/04/2012 16:54, Thomas Beale wrote:
> On 12/04/2012 15:47, Athanasios Anastasiou wrote:
>>
>> > It's eiffel, so easy to read ;-)
>> I am not familiar with Eiffel so let's just say i am glad you have
>> included that comment in the beginning of the function :-D
>
> back to Pascal / Algol class then ;-)
That's definitely not similar to Pascal! If i was to be sent back to a 
class for this, better make it Eiffel directly :-)

>> That last (pseudocode) ELSE is to complement the outer if...right? (or
>> is it the elif?)
>
> hm.... some dumb rendering problem to do with tabs i guess. here is the
> original:
>
> -- build slot_id_index in ARCH_REP_ARCHETYPE.
> -- Current slot logic of include/exclude lists:
> -- IF includes not empty and /= 'any' THEN
> -- IF not excludes empty THEN -- excludes must = any; means not a
> recommendation
> -- create match list = includes constraint
> -- ELSE -- it is just a recommendation;formally it means match all
> -- create match list = all archetypes of compatible RM type
> -- END
> -- ELSEIF excludes not empty and /= 'any' THEN
> -- IF not includes empty THEN -- includes must = any; means not a
> recommendation
> -- create match list = all achetypes - excludes constraint matchlist
> -- ELSE -- just a recommendation; formally it means match all
> -- create match list = all archetypes of compatible RM type
> -- END
> -- ELSE
> -- create match list = all archetypes of compatible RM type
> -- END
Thank you

>>
>> Still there's only two cases "formal binding" (i.e. ONLY the indicated
>> archetype) and recommendation (i.e. Anything of indicated TYPE but
>> better if it's one of the indicated archetypes).
>>
>> If that's the case, maybe rule 3 should be absorbed by rule 1 in
>> adl1.5.pdf p 62 ?
>> *
>> *
>
> I think the text needed some work. How about this:
>
> The semantics of the include and exclude lists are somewhat subtle, and
> may initially be confusing. The semantics are as follows:
>
>   * The meaning of the ?set of all archetypes? in any given environment
>     is evaluatable (and evaluated) to a finite set consisting of all
>     archetypes actually available within that environment, known as the
>     /current archetype set/, not some notional virtual / global set of
>     archetypes, or theoretically possible set.
>   * An include or exclude constraint may be ?substantive?, i.e. defining
>     a particular set of archetypes that would be matched within a given
>     slot, or ?open?, i.e. matching all possible archetype.
>   * A slot constraint may consist of a single include or exclude
>     constraint, or of an include / exclude pair.
>   * If an include or exclude constraint is present on its own, it is
>     understood as a recommendation, i.e. it does not constitute a formal
>     constraint for matching or exclusion, but tools and applications may
>     use the recommended match set in an intelligent way. The result set
>     for such an include or exclude is the whole current archetype set.
>   * If a substantive include or exclude constraint is present with a
>     corresponding open exclude or include, respectively, the substantive
>     constraint is considered formally binding.
I think it's clearer.

> BTW, these lexical rules are historical, and will be obsoleted one day -
> I more or less had to construct them after 100s of archetypes that
> actually assume these rules had been built! You will see further down in
> the ADL 1.5 text an indication of the future, but for today, we are
> stuck with the above...
Oh joy. (Yes, i did notice that part in the text, it will make the 
constraint more strict but inserts yet more parsing).

Is there a single BNF description of ADL 1.5 available from somewhere?

All the best
Athanasios


Reply via email to