DIRECTORY Commander USING[CommandProc, Register], IO USING[CharClass, Close, EndOfStream, GetTokenRope, IDProc, RIS, STREAM], FS USING[StreamOpen], OneCasabaParser USING[GetReportStream], ThreeC4Support USING[GetReportStream], ThreeC4BaseDecl1Def USING[FileSeqNode], ThreeC4BaseDecl2Def USING[BuildEmptyContext], ThreeC4PrimImplDefs USING[ClearMode, ReadModeInfo, SetMode, WriteFiles], ThreeC4CentralDef USING[ParseOneStream], ThreeC4BasicAbTypesDef USING[WholeFileNode], Rope USING[Cat, ROPE]; ThreeC4Driver: CEDAR MONITOR IMPORTS Commander, FS, IO, OneCasabaParser, Rope, ThreeC4Support, ThreeC4BaseDecl2Def, ThreeC4PrimImplDefs, ThreeC4CentralDef = BEGIN OPEN Commander, IO, Rope; debugFlags: CARDINAL _ 0; TestThreeC4: ENTRY CommandProc = BEGIN ENABLE UNWIND => ThreeC4PrimImplDefs.ClearMode[]; ThreeC4PrimImplDefs.SetMode["X", ".ThreeC4"]; [result, msg] _ DoIt[cmd]; ThreeC4PrimImplDefs.ClearMode[]; END; XTran7: ENTRY CommandProc = BEGIN ENABLE UNWIND => ThreeC4PrimImplDefs.ClearMode[]; ThreeC4PrimImplDefs.SetMode["", ".7Casaba"]; [result, msg] _ DoIt[cmd]; ThreeC4PrimImplDefs.ClearMode[]; END; ThreeC4: ENTRY CommandProc = BEGIN ENABLE UNWIND => ThreeC4PrimImplDefs.ClearMode[]; ThreeC4PrimImplDefs.SetMode["", ".ThreeC4"]; [result, msg] _ DoIt[cmd]; ThreeC4PrimImplDefs.ClearMode[]; END; DoIt: CommandProc = BEGIN commandLineStream: STREAM _ RIS[cmd.commandLine]; errorFlag: BOOLEAN _ FALSE; rootName: ROPE; rootSubName: ROPE; sourceFileNameSuffix: Rope.ROPE; targetFilesNamePrefix: Rope.ROPE; sourceStream: STREAM; root: ThreeC4BasicAbTypesDef.WholeFileNode; files: ThreeC4BaseDecl1Def.FileSeqNode; [targetFilesNamePrefix, sourceFileNameSuffix] _ ThreeC4PrimImplDefs.ReadModeInfo[]; rootName _ GetTokenRope[commandLineStream, IDProc ! EndOfStream => {rootName _ NIL; CONTINUE}].token; Close[commandLineStream]; sourceStream _ FS.StreamOpen[Rope.Cat[rootName, rootSubName, sourceFileNameSuffix]]; root _ NARROW[ThreeC4CentralDef.ParseOneStream[sourceStream, debugFlags, cmd.out ! OneCasabaParser.GetReportStream => {errorFlag _ TRUE; RESUME[cmd.out]}]]; Close[sourceStream]; IF errorFlag THEN RETURN; files _ root.procs.FormFileSeq[root, ThreeC4BaseDecl2Def.BuildEmptyContext[] ! ThreeC4Support.GetReportStream => RESUME[cmd.out]; OneCasabaParser.GetReportStream => RESUME[cmd.out]]; ThreeC4PrimImplDefs.WriteFiles[files, targetFilesNamePrefix]; END; Register["ThreeC4", ThreeC4]; Register["TestThreeC4", TestThreeC4]; Register["XTran7", XTran7]; END.. „ThreeC4Driver.mesa Copied from Tran5Driver on October 21, 1985 10:54:50 am PDT Sturgis, May 10, 1986 3:54:25 pm PDT main code ĘH˜Jšœ™J™;Jšœ$™$J˜šĎk ˜ Jšœ œ˜'Jšœœ6œœ˜KJšœœ ˜Jšœ'˜'J˜&Jšœ'˜'Jšœ-˜-JšœH˜HJšœ(˜(Jšœ,˜,Jšœœœ˜—J˜J˜šœœ˜Jšœ œœœN˜€—˜Jšœœ œ˜J˜J˜J˜˜ J˜Jšœ1˜1Jšœ-˜-J˜Jšœ ˜ J˜—J˜˜J˜Jšœ1˜1Jšœ,˜,J˜Jšœ ˜ J˜—J˜˜J˜Jšœ1˜1Jšœ,˜,J˜Jšœ ˜ J˜—J˜˜Jš˜Jšœœœ˜1J˜Jšœ œœ˜"Jšœ ˜ Jšœ!˜!Jšœœ˜Jšœ+˜+Jšœ'˜'J˜JšœS˜SJ˜˜1Jšœœœ ˜3—J˜J˜JšœœC˜TJ˜šœP˜PJšœL˜L—J˜J˜J˜J˜šœL˜LJšœu˜u—J˜Jšœ=˜=J˜Jšœ˜J˜—J˜Jšœ ™ J˜J˜J˜%J˜J˜J˜Jšœ˜—J˜—…— Ć ’