DIRECTORY Commander USING[CommandProc, Register], IO USING[CharClass, Close, EndOfStream, GetTokenRope, IDProc, int, PutF, RIS, STREAM], FS USING[StreamOpen], OneCasabaParser USING[GetReportStream], ThreeC4Support USING[GetReportStream], ThreeC4BaseDecl1Def USING[FileSeqNode], ThreeC4BaseDecl2Def USING[BuildEmptyContext], ThreeC4PrimImplDefs USING[ClearMode, GlobalEnvHandle, GlobalEnvRec, GetGlobalEnv, ReadModeInfo, SetMode, WriteFiles, UnrecoveredError], ThreeC4CentralDef USING[ParseOneStream], ThreeC4BasicAbTypesDef USING[WholeFileNode], Rope USING[Cat, ROPE], ProcessProps USING [AddPropList], List USING [PutAssoc]; ThreeC4Driver: CEDAR MONITOR IMPORTS Commander, FS, IO, OneCasabaParser, Rope, ThreeC4Support, ThreeC4BaseDecl2Def, ThreeC4PrimImplDefs, ThreeC4CentralDef, ProcessProps, List = BEGIN OPEN Commander, IO, Rope, ThreeC4PrimImplDefs, ProcessProps, List; 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 ENABLE ThreeC4PrimImplDefs.UnrecoveredError => BEGIN IO.PutF[cmd.out, "\NProcessing Terminated\N"]; IO.PutF[cmd.out, "%g errors\N", IO.int[GetGlobalEnv[].errorCount]]; GOTO Quit; END; 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; globalEnv: GlobalEnvHandle; DoItBody: PROC = BEGIN [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]]; globalEnv _ GetGlobalEnv[]; IF globalEnv.errorCount = 0 THEN BEGIN IO.PutF[cmd.out, "\Nno errors -- writing files . . .\N"]; ThreeC4PrimImplDefs.WriteFiles[files, targetFilesNamePrefix, cmd.out]; END ELSE IO.PutF[cmd.out, "\N%g errors\N", IO.int[globalEnv.errorCount]]; END; AddPropList[PutAssoc[$ThreeCasabaFourGlobalEnv, NEW[GlobalEnvRec], NIL], DoItBody]; EXITS Quit => NULL; 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 Shoup, June 23, 1986 9:52:04 am PDT main code ΚΓ˜Jšœ™J™;šœ$™$Icode™#—J˜šΟk ˜ Jšœ œ˜'JšœœAœœ˜VJšœœ ˜Jšœ'˜'J˜&Jšœ'˜'Jšœ-˜-Jšœˆ˜ˆJšœ(˜(Jšœ,˜,Jšœœœ˜Jšœ!˜!Jšœ˜—J˜J˜šœœ˜Jšœ œœœb˜”—˜Jšœœ œ0˜HJ˜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š˜J˜˜.J˜J˜.J˜CJ˜ J˜J˜—Jšœœœ˜1J˜Jšœ œœ˜"Jšœ ˜ Jšœ!˜!Jšœœ˜Jšœ+˜+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˜šœN˜NJšœ2˜2Jšœ4˜4J˜—J˜J˜˜ J˜J˜9JšœF˜FJ˜—˜J˜@J˜—J˜J˜J˜[J˜˜J˜ —J˜Jšœ˜J˜—J˜Jšœ ™ J˜J˜J˜%J˜J˜J˜Jšœ˜—J˜—…— ²