-- file CompilerUtil.Mesa -- last modified by Sandman, August 26, 1980 2:30 PM DIRECTORY Segments USING [FHandle, SHandle], Tree USING [Link, Map, Scan]; CompilerUtil: DEFINITIONS = BEGIN -- binary table management TableId: TYPE = [0..3); parse: TableId = 0; error: TableId = 1; debug: TableId = 2; TableSegment: PROC [TableId] RETURNS [Segments.SHandle]; LockTableSegment: PROC [TableId] RETURNS [LONG POINTER]; UnlockTableSegment: PROC [TableId]; -- compiler passes PassIndex: TYPE = {utilities, pass1, pass2, pass3, pass3p, pass4, pass5, debug}; PrefillSymbols: PROC; P1Unit: PROC RETURNS [BOOLEAN]; P2Unit: Tree.Map; P3Unit: Tree.Map; P3Postlude: PROC [expand: BOOLEAN]; P4Unit: Tree.Scan; P5module: PROC; -- object output SetObjectStamp: PROC; StartObjectFile: PROC [Segments.FHandle] RETURNS [POINTER]; EndObjectFile: PROC [success: BOOLEAN]; TableOut: PROC [sourceFile: STRING]; NextFilePage: PROC RETURNS [CARDINAL]; StartBCD: PROC; ReadBCDOffset: PROC RETURNS [CARDINAL]; ReadBCDIndex: PROC RETURNS [LONG UNSPECIFIED]; AppendBCDWord: PROC [word: UNSPECIFIED]; AppendBCDWords: PROC [addr: POINTER, n: CARDINAL]; AppendBCDString: PROC [s: STRING]; UpdateBCDWords: PROC [offset: CARDINAL, addr: POINTER, n: CARDINAL]; EndBCD: PROC; -- debugging PrintTree: PROC [Tree.Link]; PrintBodies: PROC; PrintSymbols: PROC; -- swapping control MakeSwappable: PROC [module: PROGRAM, pass: PassIndex]; Pass1, Pass2, Pass3, Pass3P, Pass4, Code: PROGRAM; END.