SPL,L,M,O,T,C ! 11/14/75 REV C NAME SCNMN(8) ! ! SCANNER MAIN MODULE, CONTAINING: ! SCAN: SCAN FUNCTION CALLED BY COMPILER EXEC ! INCC,DECC,GENRT,DELET ROUTINES TOBE PASSED TO ! THE PARSING ALGORITHM (NOT GLOBAL). ! LET P.ARS,STPRG,DIAG,EXEC BE SUBROUTINE, EXTERNAL LET ISTR,DCP,SEG BE FUNCTION, EXTERNAL LET IWP,ICP,STAK BE PSEUDO, EXTERNAL LET SCGRM,CCPTR,CHAR,SOURC,SPTR BE INTEGER,EXTERNAL SCAN: SUBROUTINE GLOBAL CCPTR_ISTR(CCODE) P.ARS(@SCGRM,@GENRT,@INCC,@DECC) \ ?[GO TO FAIL] CALL STPRG(SOURC) RETURN ! FAIL: CHAR_ICP(SPTR); GOTO DIAG5 END SCAN ! INCC: SUBROUTINE GLOBAL CHAR_ICP(SPTR)?(0) RETURN END INCC ! DIAGNOSTIC CODE 5: ILLEGAL CHARACTER, OR NO CR/LF DIAG5: CALL DIAG(5,CHAR) ! DECC: SUBROUTINE GLOBAL CHAR_DCP(SPTR,SOURC) RETURN END DECC ! GENRT: SUBROUTINE(STKP,P,G,V) LET STKP,P,G,V BE INTEGER S_STKP ASTR_0 STAK(ASTR)_100000K ALWAYS DO[PTOP_STAK(S);GTOP_STAK(S); \ VTOP_STAK(S); \ IFNOT P=PTOP THEN GO TO GENR1; \ STAK(ASTR)_VTOP] GENR1: $(SEG($GTOP))(ASTR,CCODE,V) P_PTOP G_GTOP STKP_S RETURN END GENRT ! END END$