-- file CompilerUtil.Mesa -- last modified by Satterthwaite, March 13, 1979 11:02 AM DIRECTORY CompilerOps: FROM "compilerops" USING [TableId], SegmentDefs: FROM "segmentdefs" USING [FileHandle, FileSegmentHandle], StreamDefs: FROM "streamdefs" USING [StreamHandle, StreamIndex], Tree: FROM "tree" USING [Link, Map, Scan]; CompilerUtil: DEFINITIONS = BEGIN -- binary table management TableId: TYPE = CompilerOps.TableId; parse: TableId = 0; error: TableId = 1; debug: TableId = 2; TableSegment: PROCEDURE [CompilerOps.TableId] RETURNS [SegmentDefs.FileSegmentHandle]; -- compiler passes PassIndex: TYPE = {utilities, pass1, pass2, pass3, pass4, pass5, debug}; P1Unit: PROCEDURE RETURNS [BOOLEAN]; P2Unit: Tree.Map; P3Unit: Tree.Map; P4Unit: Tree.Scan; P5module: PROCEDURE; -- object output SetObjectStamp: PROCEDURE; StartObjectFile: PROCEDURE [SegmentDefs.FileHandle] RETURNS [StreamDefs.StreamHandle]; EndObjectFile: PROCEDURE [success: BOOLEAN]; TableOut: PROCEDURE [sourceFile: STRING]; nextFilePage: PROCEDURE RETURNS [CARDINAL]; StartBCD: PROCEDURE; ReadBCDOffset: PROCEDURE RETURNS [CARDINAL]; ReadBCDIndex: PROCEDURE RETURNS [StreamDefs.StreamIndex]; AppendBCDWord: PROCEDURE [word: UNSPECIFIED]; AppendBCDWords: PROCEDURE [addr: POINTER, n: CARDINAL]; AppendBCDString: PROCEDURE [s: STRING]; UpdateBCDWords: PROCEDURE [offset: CARDINAL, addr: POINTER, n: CARDINAL]; EndBCD: PROCEDURE; -- debugging PrintTree: PROCEDURE [Tree.Link]; PrintBodies: PROCEDURE; PrintSymbols: PROCEDURE; -- swapping control MakeSwappable: PUBLIC PROCEDURE [module: PROGRAM, pass: PassIndex]; Pass1, Pass2, Pass3, Pass4, Code: PROGRAM; END.