DIRECTORY IO, Rope; EDIFfing: CEDAR DEFINITIONS = { LexError: ERROR [stream: IO.STREAM, index: INT, complaint: ROPE]; ROPE: TYPE = Rope.ROPE; REFTEXT: TYPE = REF TEXT; ParseTreeList: TYPE = LIST OF ParseTree; ParseTree: TYPE = REF ParseTreePrivate; ParseTreePrivate: TYPE = RECORD [ origin: SourceLocation _ [], replacing, generator: ParseTree _ NIL, variant: SELECT type: ParseTreeNodeType FROM string => [s: ROPE], integer => [i: INT], identifier => [id: ATOM--case untouched--], list => [children: ParseTreeList], ENDCASE ]; ParseTreeNodeType: TYPE = {string, integer, identifier, list}; SourceLocation: TYPE = RECORD [ source: Source _ NIL, where: PositionRange _ []]; Source: TYPE = REF SourcePrivate; SourcePrivate: TYPE = RECORD [ description: ROPE, data: REF ANY ]; PositionRange: TYPE = RECORD [start, endPlusOne: INT _ FIRST[INT]]; unspecifiedPositionRange: PositionRange = []; LexEDIF: PROC [source: Source, from: IO.STREAM] RETURNS [pt: ParseTree]; FmtOrg: PROC [pt: ParseTree] RETURNS [rope: ROPE]; }. @EDIFfing.Mesa Spreitzer, February 23, 1986 3:03:52 pm PST Κϊ– "cedar" style˜code™ K™+—K˜KšΟk œœ˜K˜šΠbxœœ œ˜K˜Kš œ œ œœ œ œ˜AK˜Kšœœœ˜Kšœœœœ˜K˜Kšœœœœ ˜(Kšœ œœ˜'šœœœ˜!Kšœ˜Kšœ"œ˜&šœ œ˜,Kšœœ˜Kšœœ˜KšœΟcœ˜+Kšœ"˜"Kš˜—K˜—K˜Kšœœ'˜>K˜šœœœ˜Kšœœ˜K˜—K˜Kšœœœ˜!šœœœ˜Kšœ œ˜Kšœœ˜ K˜—K˜Kš œœœœœœ˜CKšœ-˜-K˜Kš Οnœœœœœ˜HK˜Kš œœœœ˜2K˜K˜——…—>