Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!think!nike!sri-spam!sri-unix!hplabs!tektronix!oresoft!randy From: randy@oresoft.UUCP (Randy Bush) Newsgroups: net.lang.mod2 Subject: Re: Single Pass Modula-2 Compiler Message-ID: <22@oresoft.UUCP> Date: Thu, 16-Oct-86 20:12:40 EDT Article-I.D.: oresoft.22 Posted: Thu Oct 16 20:12:40 1986 Date-Received: Fri, 17-Oct-86 06:00:19 EDT References: <12243102365.25.KURKURE@Sushi.Stanford.EDU> Reply-To: randy@oresoft.UUCP (Randy Bush) Organization: Oregon Software, Portland OR Lines: 28 Keywords: One-pass, Internal Modules The fourth pass of the old ETH compiler had mutually importing internal modules, both at the outer level of the enclosing implementation module. As the compiler could compile itself, I am nonplussed that its compilers derived from it could not. I would note that if two internal modules are mutually importing, that both may not have code in their module bodies (the initialization sections, not procedures), as it is a case of circular initialization. A degenerate example might be MODULE A; MODULE B; IMPORT c; EXPORT b; VAR b : CARDINAL; BEGIN b := c + 42 END B; MODULE C; IMPORT b; EXPORT c; VAR c : CARDINAL; BEGIN c := b + 42 END C; END A. randy