[Oberon] Module aliases - what is the correct way to handle them
Joerg
joerg.straube at iaeth.ch
Sun Feb 16 21:55:04 CET 2020
Luca
The out-of-the-box NW compiler does not. What compiler do you use?
If it‘s your compiler then at least we have one that supports our discussed ideas😊
Gruss
Jörg
> Am 16.02.2020 um 21:00 schrieb Luca Boasso <luke.boasso at gmail.com>:
>
>
> oberonc implements the module systems based on the ideas of "On the Linearization of Graphs and Writing Symbol Files (1991)"
>
> The following example compiles and run:
> MODULE M0;
> TYPE T0* = RECORD i: INTEGER END ;
> END M0.
> MODULE M7;
> IMPORT Y := M0, M0, X := M0,
> S1 := SYSTEM, S2 := SYSTEM;
> VAR a: Y.T0;
> b: M0.T0;
> c: X.T0;
> i: INTEGER;
> BEGIN
> a := b;
> c := a;
> i := S1.VAL(INTEGER, {1});
> i := S2.VAL(INTEGER, {2})
> END M7.
>
> On Sun, Feb 16, 2020 at 6:04 AM Joerg <joerg.straube at iaeth.ch> wrote:
>> thinking of it, the importscope idea is like a generalization of SYSTEM.
>> Currently, ORB has a special invisible scope for the module SYSTEM. And it has a special treatment like IF modid1 = “SYSTEM“ THEN it links those objects to topscope.
>>
>> Currently you can compile
>>
>> IMPORT S1 := SYSTEM, S2 := SYSTEM;
>>
>> this is because SYSTEM lives in an own scope with name „system“.
>>
>> The generalization of it would be that all imported modules (including SYSTEM) are imported into importscope and the special treatment IF modid1=“SYSTEM“ is replaced with a search in importscope.
>>
>> Let me see, how I find time to implement this idea...
>>
>> br
>> Jörg
>>
>> > Am 16.02.2020 um 13:37 schrieb Joerg <joerg.straube at iaeth.ch>:
>> >
>> > Chris
>> >
>> > you‘re absolutely right the aliases must not be allowed on the righthand side.
>> >
>> > If I think of a possible implementation, the righthand sides and lefthand sides might live in different scopes, eg lefthand side are objects visible in the well known topscope, the righthand sides (aka filenames :-) might live in a new importscope... Just thinking loud.
>> >
>> > br
>> > Jörg
>> >
>> >> Am 16.02.2020 um 13:16 schrieb Chris Burrows <chris at cfbsoftware.com>:
>> >>
>> >>
>> >>>
>> >>> -----Original Message-----
>> >>> From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of
>> >>> Paul Reed
>> >>> Sent: Sunday, 16 February 2020 10:38 PM
>> >>> To: ETH Oberon and related systems
>> >>> Subject: Re: [Oberon] Module aliases - what is the correct way to
>> >>> handle them
>> >>>
>> >>> Hi Chris,
>> >>>
>> >>>> I think that the language spec does have such a restriction. In one
>> >>> M0
>> >>>> is a module alias, in the other M0 is an actual module name. A
>> >>> single
>> >>>> identifier (i.e. M0) can't be used for two different purposes in
>> >>> the
>> >>>> same scope... the report says nothing about the order in which the
>> >>>> import list should be processed.
>> >>>> IMPORT Z := M0, M0 := M1 ... Should be treated identically to
>> >>> IMPORT
>> >>>> M0 := M1, Z := M0
>> >>>
>> >>> Thanks, and (I'm sorry if this is boring for everyone else) now I'm
>> >>> beginning to see that Jorg and I are thinking one way and you and
>> >>> Andreas are perhaps thinking another, which has helped me understand
>> >>> where the complications have come in.
>> >>>
>> >>> I don't have a problem with the above being switched around because I
>> >>> (and Jorg) see the aliases and the canonical module names as
>> >>> different things. I think you and Andreas are allowing a module
>> >>> alias to appear on the right hand side of an alias definition, but I
>> >>> wouldn't. What's right?
>> >>>
>> >>
>> >> No - I agree with you. I was just pointing out that if aliases were allowed
>> >> on the right hand side of an alias definition it could result in ambiguous
>> >> import lists.
>> >>
>> >> --
>> >> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
>> >> https://lists.inf.ethz.ch/mailman/listinfo/oberon
>> >
>> > --
>> > Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
>> > https://lists.inf.ethz.ch/mailman/listinfo/oberon
>>
>> --
>> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
>> https://lists.inf.ethz.ch/mailman/listinfo/oberon
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20200216/e083f751/attachment.html>
More information about the Oberon
mailing list