<> <> <> <> <> DIRECTORY CodeDefs: TYPE USING [CaseCVState, CCIndex, LabelCCIndex, Lexeme], CompilerUtil: TYPE USING [], P5: TYPE USING [Module], SourceMap: TYPE USING [Loc], Symbols: TYPE USING [ContextLevel, CTXIndex, ISEIndex, RecordSEIndex]; Code: PROGRAM IMPORTS P5 EXPORTS CompilerUtil = { OPEN CodeDefs; <> curctxlvl: PUBLIC Symbols.ContextLevel; codeptr: PUBLIC CCIndex; bodyRetLabel, bodyComRetLabel: PUBLIC LabelCCIndex; reentryLabel: PUBLIC LabelCCIndex; bodyInRecord, bodyOutRecord: PUBLIC Symbols.RecordSEIndex; bodyStartLoc: PUBLIC SourceMap.Loc; mainBody: PUBLIC BOOL; ZEROlexeme: PUBLIC Lexeme.literal.word; stking: PUBLIC BOOL; tailJumpOK: PUBLIC BOOL; caseCVState: PUBLIC CaseCVState; mwCaseCV: PUBLIC Lexeme; fileLoc, inlineFileLoc: PUBLIC SourceMap.Loc; catchcount: PUBLIC CARDINAL; catchoutrecord: PUBLIC Symbols.RecordSEIndex; tempcontext: PUBLIC Symbols.CTXIndex; firstTemp, tempstart, framesz: PUBLIC CARDINAL; cfSize: PUBLIC CARDINAL; cfsi: PUBLIC CARDINAL; actenable, substenable: PUBLIC LabelCCIndex; xtracting: PUBLIC BOOL; xtractlex: PUBLIC Lexeme; xtractsei: PUBLIC Symbols.ISEIndex; ACStackOverflow: PUBLIC SIGNAL = CODE; ACStackUnderflow: PUBLIC SIGNAL = CODE; StackNotEmptyAtStatement: PUBLIC SIGNAL = CODE; CodeNotImplemented: PUBLIC SIGNAL = CODE; DeletingUnreachableCode: PUBLIC SIGNAL = CODE; CodePassInconsistency: PUBLIC SIGNAL = CODE; P5module: PUBLIC PROC = { -- starts the code generation pass P5.Module[]}; }.