-- file: MFInputImpl2.mesa -- Pascal-to-Mesa translator output, translated at October 31, 1985 4:28:02 pm PST -- Pavel, October 31, 1985 5:07:14 pm PST DIRECTORY PascalBasic, PascalWizardFiles, MFTypes, MFRest, MFProcArray, MFInteraction, MFMemory, MFSymbols, MFInput; MFInputImpl2: PROGRAM IMPORTS MFRest, MFProcArray, MFInteraction, MFMemory, MFSymbols, MFInput EXPORTS MFInput = PUBLIC BEGIN OPEN MFRest, PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFInteraction, MFMemory, MFSymbols, MFInput; GetClearSymbol: PROCEDURE = BEGIN GetSymbol[];ClearSymbol[CurSym,FALSE]; END;--:691----692: CheckEquals: PROCEDURE = BEGIN IF CurCmd#51 THEN IF CurCmd#77 THEN BEGIN MissingErr[61]; BEGIN HelpPtr_5;HelpLine^[4]_537;HelpLine^[3]_538;HelpLine^[2]_539; HelpLine^[1]_540;HelpLine^[0]_541; END;BackError[]; END; END;--:692----693: MakeOpDef: PROCEDURE = BEGIN M:CommandCode;P, Q, R:Halfword; M_CurMod;GetSymbol[];Q_GetNode[2];Mem[Q]^.Hh.Lh_CurSym; Mem[ INT[Q]+1]^.Int_2242;GetClearSymbol[];WarningInfo_CurSym;GetSymbol[]; P_GetNode[2];Mem[P]^.Hh.Lh_CurSym;Mem[ INT[P]+1]^.Int_2243;Mem[P]^.Hh.Rh_Q; GetNext[];CheckEquals[];ScannerStatus_5;Q_GetAvail[];Mem[Q]^.Hh.Lh_0; R_GetAvail[];Mem[Q]^.Hh.Rh_R;Mem[R]^.Hh.Lh_0; Mem[R]^.Hh.Rh_ScanToks[16,P,0,0];ScannerStatus_0; Eqtb^[WarningInfo].Lh_M;Eqtb^[WarningInfo].Rh_Q;GetXNext[]; END;--:693 --696:----1031:-- CheckDelimiter: PROCEDURE[LDelim,RDelim: Halfword] = BEGIN {IF CurCmd=62 THEN IF CurMod=LDelim THEN GOTO Label10; IF CurSym#RDelim THEN BEGIN MissingErr[Hash^[RDelim].Rh]; BEGIN HelpPtr_2;HelpLine^[1]_787;HelpLine^[0]_788; END;BackError[]; END ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[133];Print[789]; END; Print[Hash^[RDelim].Rh];Print[790];BEGIN HelpPtr_3;HelpLine^[2]_791; HelpLine^[1]_792;HelpLine^[0]_793; END;Error[]; END;EXITS Label10 => NULL}; END;--:1031----1010: ScanDeclaredVariable: PROCEDURE RETURNS[ScanDeclaredVariableResult: Halfword] = BEGIN X:Halfword; H, T:Halfword;L:Halfword; GetSymbol[];X_CurSym; IF CurCmd#41 THEN ClearSymbol[X,FALSE]; IF Eqtb^[X].Rh=0 THEN NewRoot[X];H_GetAvail[];Mem[H]^.Hh.Lh_X;T_H; {WHILE TRUE DO BEGIN GetXNext[];IF CurSym=0 THEN GOTO Label30; IF CurCmd#41 THEN IF CurCmd#40 THEN IF CurCmd=63 THEN--1011: BEGIN L_CurSym;GetXNext[];IF CurCmd#64 THEN BEGIN BackInput[]; CurSym_L;CurCmd_63; GOTO Label30; END ELSE CurSym_0; END--:1011 ELSE GOTO Label30;Mem[T]^.Hh.Rh_GetAvail[];T_Mem[T]^.Hh.Rh; Mem[T]^.Hh.Lh_CurSym; END ENDLOOP ;EXITS Label30 => NULL};ScanDeclaredVariableResult_H; END;--:1010 ScanDef: PROCEDURE = BEGIN M:PascalInteger[1..2];N:PascalInteger[0..3];K:PascalInteger[0..150];C:PascalInteger[0..7];R:Halfword; Q:Halfword;P:Halfword;Base:Halfword;LDelim, RDelim:Halfword; M_CurMod;C_0;Mem[49999]^.Hh.Rh_0;Q_GetAvail[];Mem[Q]^.Hh.Lh_0; R_0;--699:--IF M=1 THEN BEGIN GetClearSymbol[];WarningInfo_CurSym; GetNext[];ScannerStatus_5;N_0;Eqtb^[WarningInfo].Lh_10; Eqtb^[WarningInfo].Rh_Q; END ELSE BEGIN P_ScanDeclaredVariable[]; FlushVariable[Eqtb^[Mem[P]^.Hh.Lh].Rh,Mem[P]^.Hh.Rh,TRUE]; WarningInfo_FindVariable[P];FlushList[P]; IF WarningInfo=0 THEN--700:--BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[133];Print[548]; END;BEGIN HelpPtr_2;HelpLine^[1]_549; HelpLine^[0]_550; END;Error[];WarningInfo_21; END--:700--; ScannerStatus_4;N_2;IF CurCmd=61 THEN IF CurMod=3 THEN BEGIN N_3; GetNext[]; END;Mem[WarningInfo]^.Hh.B0_20+N;Mem[WarningInfo+1]^.Int_Q; END--:699--;K_N;IF CurCmd=31 THEN--702:--DO LDelim_CurSym; RDelim_CurMod;GetNext[]; IF(CurCmd=56)AND (CurMod>=2242) THEN Base_CurMod ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[133];Print[551]; END;BEGIN HelpPtr_1; HelpLine^[0]_552; END;BackError[];Base_2242; END;--703: DO Mem[Q]^.Hh.Rh_GetAvail[];Q_Mem[Q]^.Hh.Rh;Mem[Q]^.Hh.Lh_ INT[Base]+K; GetSymbol[];P_GetNode[2];Mem[ INT[P]+1]^.Int_ INT[Base]+K;Mem[P]^.Hh.Lh_CurSym; IF K=150 THEN Overflow[553,150];K_K+1;Mem[P]^.Hh.Rh_R;R_P;GetNext[]; IF CurCmd#79--:703-- THEN EXIT; ENDLOOP;CheckDelimiter[LDelim,RDelim];GetNext[]; IF CurCmd#31--:702-- THEN EXIT; ENDLOOP;IF CurCmd=56 THEN--704:--BEGIN P_GetNode[2]; IF CurMod<2242 THEN BEGIN C_CurMod;Mem[ INT[P]+1]^.Int_2242+K; END ELSE BEGIN Mem[ INT[P]+1]^.Int_CurMod+K; IF CurMod=2242 THEN C_4 ELSE IF CurMod=2392 THEN C_6 ELSE C_7; END; IF K=150 THEN Overflow[553,150];K_K+1;GetSymbol[];Mem[P]^.Hh.Lh_CurSym; Mem[P]^.Hh.Rh_R;R_P;GetNext[];IF C=4 THEN IF CurCmd=69 THEN BEGIN C_5; P_GetNode[2];IF K=150 THEN Overflow[553,150];Mem[ INT[P]+1]^.Int_2242+K; GetSymbol[];Mem[P]^.Hh.Lh_CurSym;Mem[P]^.Hh.Rh_R;R_P;GetNext[]; END; END--:704--;CheckEquals[];P_GetAvail[];Mem[P]^.Hh.Lh_C;Mem[Q]^.Hh.Rh_P; --697: IF M=1 THEN Mem[P]^.Hh.Rh_ScanToks[16,R,0,N] ELSE BEGIN Q_GetAvail[]; Mem[Q]^.Hh.Lh_BgLoc;Mem[P]^.Hh.Rh_Q;P_GetAvail[];Mem[P]^.Hh.Lh_EgLoc; Mem[Q]^.Hh.Rh_ScanToks[16,R,P,N]; END; IF WarningInfo=21 THEN FlushTokenList[Mem[22]^.Int]--:697--; ScannerStatus_0;GetXNext[]; END;--:696----705:-- --719:----721:-- PrintMacroName: PROCEDURE[A,N: Halfword] = BEGIN P, Q:Halfword; IF N#0 THEN Print[Hash^[N].Rh] ELSE BEGIN P_Mem[A]^.Hh.Lh; IF P=0 THEN Print[Hash^[Mem[Mem[Mem[A]^.Hh.Rh]^.Hh.Lh]^.Hh.Lh].Rh] ELSE BEGIN Q_P;WHILE Mem[Q]^.Hh.Rh#0 DO Q_Mem[Q]^.Hh.Rh ENDLOOP ; Mem[Q]^.Hh.Rh_Mem[Mem[A]^.Hh.Rh]^.Hh.Lh;ShowTokenList[P,0,1000,0]; Mem[Q]^.Hh.Rh_0; END; END; END;--:721----722:-- END.