Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!cbosgd!ucbvax!SUSHI.STANFORD.EDU!KURKURE From: KURKURE@SUSHI.STANFORD.EDU (Uday Kurkure) Newsgroups: net.lang.mod2 Subject: Re: One Pass compiler Message-ID: <12243907247.41.KURKURE@Sushi.Stanford.EDU> Date: Fri, 3-Oct-86 15:11:16 EDT Article-I.D.: Sushi.12243907247.41.KURKURE Posted: Fri Oct 3 15:11:16 1986 Date-Received: Sat, 4-Oct-86 12:30:35 EDT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 44 > Actually, you can note the fact that whatever type the symbol has > must be compatable with how it is being used, and check that against > the actual declaration when you see it. For example, if I see a > function call: > intvar := funct( 5.0, "test", 7 ); > I can note that funct must return a type that can be assigned to an int, > and accept a floating point, char array, and integer argument; then, > when I see a declaration of funct, I can check against this usage, and > determine whether the previous usage was correct. What happens if the intvar is also declared forward ? Such things can lead to lot of bookkeeping. Consider a following statment and lot of occurrences of the similar statements. . . a1 := a1 * f1( x,y,z )+ a2 + a3 + f3............* x100 . .. VAR x100: type; . . . . a1: type100 etc etc. This could be reasonably difficult to do with one pass. ..Uday -------