1234567891011121314151617181920212223242526272829303132333435363738 |
- %
- % STRING-GENSYM.RED - Complement to GenSym, makes a string instead of ID
- %
- % Author: Eric Benson
- % Symbolic Computation Group
- % Computer Science Dept.
- % University of Utah
- % Date: 14 January 1982
- % Copyright (c) 1982 University of Utah
- %
- % Edit by Cris Perdue, 9 Feb 1983 1620-PST
- % Modified to avoid using the CHAR macro in a top level form
- fluid '(StringGenSym!*);
- StringGenSym!* := copystring("L0000"); % Copy to force into heap /csp
- CompileTime flag('(StringGenSym1), 'InternalFunction);
- lisp procedure StringGenSym(); %. Generate unique string
- StringGenSym1 4;
- lisp procedure StringGenSym1 N; %. Auxiliary function for StringGenSym
- begin scalar Ch;
- return if N > 0 then
- if (Ch := Indx(StringGenSym!*, N)) < char !9 then
- << SetIndx(StringGenSym!*, N, Ch + 1);
- TotalCopy StringGenSym!* >>
- else
- << SetIndx(StringGenSym!*, N, char !0);
- StringGenSym1(N - 1) >>
- else % Increment starting letter
- << SetIndx(StringGenSym!*, 0, Indx(StringGenSym!*, 0) + 1);
- StringGenSym() >>;
- end;
- END;
|