DIRECTORY Symbols USING [SEIndex], SymbolTable USING [Base]; TypeStrings: DEFINITIONS = { Code: TYPE = MACHINE DEPENDENT { definition(200b), name, record, structure, union, array, sequence, enumerated, subrange, opaque, countedZone, uncountedZone, list, relativeRef, ref, refAny, pointer, longPointer, descriptor, longDescriptor, --address-- port, process, program, type, nil, any, boolean, unspecified, globalFrame, localFrame, procedure, signal, error, --transfer-- cardinal, integer, character, longInteger, longCardinal, --basic -- string, stringBody, text, atomRec, mds, ordered, packed, readOnly, -- options real, paint, leftParen, rightParen, safeProc, safe, var, longUnspecified, code, base, dcard, dint, dreal }; TypeString: TYPE = LONG STRING; Create: PROC [base: SymbolTable.Base, sei: Symbols.SEIndex, z: UNCOUNTED ZONE] RETURNS [TypeString]; }. ` TypeStrings.mesa Copyright Σ 1985, 1986, 1987, 1989, 1991 by Xerox Corporation. All rights reserved. Satterthwaite, May 6, 1983 1:08 pm Russ Atkinson (RRA) December 19, 1989 7:34:15 pm PST Code starts at 200b so that a typestring can be parsed rapidly a character in [000c..'Z] is a string name or length a character in [200b..377b] is a code the only exception is paint(8 chars), which is always proceeded by an opaque or paint code will complain if all of the necessary information isn't in base ASSERTION: TypePack.Equivalent[[base1,sei1],[base2,sei2]] IFF (Create[base1,sei1]=Create[base2,sei2]) ΚŠ–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ ΟeœI™TKšΟy"™"J™4—˜šΟk ˜ KšœŸœ ˜Kšœ Ÿœ˜——IheadšΟn œŸ œ˜˜šœŸœŸœŸ œ˜ K˜K˜HK˜KšœRΟc ˜]K˜K˜K˜K˜K˜K˜ K˜Kšœ‘ œ˜'Kšœ9‘ ˜CK˜"Kšœ ‘ ˜*K˜K˜K˜K˜ K˜K˜K˜K˜K˜K˜Kšœ˜—Kšœ>™>Kšœ4™4Kšœ%™%KšœZ™ZK˜Kšœ ŸœŸœŸœ˜K˜š  œŸœ3Ÿ œŸœŸœ˜eKšœ?™?Kšœ9™9Kšœ+™+—K˜K˜——…—dN