Re: Specified Requirements for Modularisation

On Monday 11 May 2026 02:46:44 PM (+02:00), Norm Tovey-Walsh wrote:

> Broadly, I think our requirements are aligned.
> 
> A few comments…
> 
> > * There should be no change required to ixml proper:
> >   just use the existing syntax and semantics.
> 
> Both of the proposals involve new syntax (and, arguably, new semantics for the new syntax) so I’m not sure this is clear as stated. I think the intent is that after modularity has been “resolved” as it were, the same syntax, with the same semantics, remain.

Yes, that is what I meant with "ixml proper". There is new syntax for modules, but the underlying ixml stays the same. There is no change to the definition of 'rule' for instance.

> > * It should be possible to include any rule from a grammar. Ultimately, reuse should be in the hands of the author of the including grammar.
> 
> I think we both agree that a grammar author should be able to say what the public interface is. I think an author engaged in reuse should have the freedom to bypass that interface.

I disagree. I think a module should be inviolable. If the author needs a new rule, then make one; if the user needs a different module, then make one; if there is a usecase for the module to be parameterised, then make a separate module that that module uses. But don't go messing with someone else's module; you shouldn't know how that module is constructed.

> There’s no object code form here, there’s nothing preventing someone from just cutting and pasting. But we want to offer a mechanism that makes that unnecessary where possible. Sometimes that may mean reaching in and poking at “private” parts of the grammar being included. Your gun, your bullet, your foot.

I disagree.

By the way, I went through several versions of use/share before ending there. In particular, I avoided using "include" since I didn't want to suggest the C preprocessor semantics, and you have to say what you are using from a module so that the using grammar can be independently checked without necessarily knowing what was in a module: that would break one of my requirements that the module writer can change anything except the interface.

Best wishes,

Steven

Received on Tuesday, 12 May 2026 11:39:58 UTC