davidson@ihlpf.UUCP (12/08/83)
#R:sdcsvax:-6000:ihlpf:18400006:000:840 ihlpf!dap1 Dec 7 10:19:00 1983 It sounds like you are asking for a hashing function from the set of (Berkeley identifiers) to the set of (Standard C identifiers). There are ways to do this, but none of them that I know of would lend themselves very well to this particular situation. You could perform normal hashing to get a number from 1 to 10^8 - 1 and then prepend an X to the front, but your identiers won't be very identifiable. I don't see how you are going to create a utility that can come up with very reasonable choices when choosing between identifiers such as "thisthing" and "thisthinghere". It seems like the best you could do is have a utility to identify any identifiers longer than 8 characters, inquire for the new name from the user and then do the replacement throughout. I wouldn think this could be accomplished in YACC. Darrell Plank BTL-IH
thomas@utah-gr.UUCP (Spencer W. Thomas) (12/08/83)
It is my understanding that some clever folks at Georgia Tech have implemented such a program for mapping N-character Ratfor identifiers to 6-character FORTRAN identifiers. I don't know the details, and it may come up with G12345 type identifiers, but it HAS been done. (This is my memory of a talk given at the Software Tools conference in Boulder (1980?).) =Spencer
ags@pucc-k (Seaman) (12/12/83)
One way to handle the hashing problem is to resolve collisions by permuting the last character, if necessary, after truncating. For example, suppose you want a maximum identifier length of 6 characters and the original program contains (in this order) thisisalongidentifier thisisanotherlongidentifier thisisyetanotherlongidentifier These would be shortened as follows: thisisalongidentifier -> thisis thisisanotherlongidentifier -> thisit thisisyetanotherlongidentifier -> thisiu Dave Seaman ..!pur-ee!pucc-k!ags
chris@umcp-cs.UUCP (12/14/83)
Look at your K&R book. Chapter 2, p. 33: "Only the first eight characters of an internal name are significant, although more may be used." (They also mention that external names (i.e. globals) may have less than 8 significant characters.) So, a suggestion: *Prepend* a unique identifier to those which are not already unique. For example, you might replace long_name_function () ... with _1_long_name_function () ... if "long_na" (or whatever the name becomes after compilation) is not unique. The next occurance might have "_2_" prepended. The nice thing about this is that the original names are easy to find (and, if necessary, recreate). -- In-Real-Life: Chris Torek, Univ of MD Comp Sci UUCP: {seismo,allegra,brl-bmd}!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris.umcp-cs@CSNet-Relay