Trailing-Edge
-
PDP-10 Archives
-
decuslib10-04
-
43,50325/ldsf1.beg
There are no other files named ldsf1.beg in the archive.
! File: LDSF1.BEG
!
! This work was supported by the Advanced Research
! Projects Agency of the Office of the Secretary of
! Defense (F44620-73-C-0074) and is monitored by the
! Air Force Office of Scientific Research.
!
!
! THIS IS THE BEGIN FILE FOR LEXAN, DECLAR, SYNTAX, FLOWAN
!
!
!
!--------------------------------
!0. DEFINITION OF THE PARSE STACK
EXTERNAL
VECTOR STK, ! THE STACK ITSELF
TOS, ! INDEX OF THE (CURRENT) TOP OF STACK
LASTMARK; ! INDEX OF THE LAST FLOOR-MARK ON THE STACK
!-------------------------------------------
!1. FIELD DEFINITIONS FOR DELIMITER LEXEMES:
MACRO
HCLASS =34,2$,
HPRIORITY=30,6$,
HSE =29,1$,
HMT =28,1$,
HAE =27,1$,
HFORCER2L=26,1$,
HUNIQ =22,4$,
HSYNTYP =0,18$,
RELOPBASE =11$,
MAXDELIMITER=72$, ! CAUTION! RECOMPILE GLODEC IF YOU CHANGE THIS
MAXOPERATOR =39$, ! DITTO ABOVE COMMENT
OPNOTUNARY =OP[HMT]$;
!-----------------------------------------------
!2. SYNTAX ROUTINE INDICES, AND ASSOCIATED PLIT:
! THESE INDECES ARE PLACED WITHIN THE RESERVED WORD
! DELIMITER LEXEMES. THE SYNTAX ROUTINES THEN USE
! THESE VALUES TO INDEX INTO A PLIT OF ROUTINES SO AS TO
! EXECUTE THE CORRECT ROUTINE FOR EACH SYNTAX CONSTRUCT.
BIND
SADDOP=0,
SSWABOP=1,
SDIVOP=2,
SDOTOP=3,
SMINOP=4,
SMODOP=5,
SMULOP=6,
SNEGOP=7,
SPLUSOP=8,
SSHIFTOP=9,
SBITOP=10,
SGTROP=11,
SLEQOP=12,
SLSSOP=13,
SGEQOP=14,
SEQLOP=15,
SNEQOP=16,
SNOTOP=17,
SEQVOP=18,
SANDOP=19,
SOROP=20,
SXOROP=21,
SFADROP=22,
SFDVROP=23,
SFIXOP=24,
SFLOATOP=25,
SFMPROP=26,
SFNEGOP=27,
SFSBROP=28,
SGTRUOP=29,
SLEQUOP=30,
SLSSUOP=31,
SGEQUOP=32,
SEQLUOP=33,
SNEQUOP=34,
SROTOP=35,
SMAXOP=36,
SMINNOP=37,
SCARRYOP=38,
SOVFLOP=39,
SSTOROP=MAXOPERATOR+1,
SERROP=MAXOPERATOR+2,
SYNCASE=MAXOPERATOR+3,
SFPARM=MAXOPERATOR+4,
SFSTORE=MAXOPERATOR+5,
SYNWDO=MAXOPERATOR+6,
SYNUDO=MAXOPERATOR+7,
DCROUTINE=MAXOPERATOR+8,
SYNCOMP=MAXOPERATOR+9,
SYNINCR=MAXOPERATOR+10,
SYNDECR=MAXOPERATOR+11,
SYNIF=MAXOPERATOR+12,
SYNDOW=MAXOPERATOR+13,
SYNDOU=MAXOPERATOR+14,
SYNCRE=MAXOPERATOR+15,
SYNEXC=MAXOPERATOR+16,
SYNSEL=MAXOPERATOR+17,
SYNESC=MAXOPERATOR+18,
SYNLABEL=MAXOPERATOR+19,
SYNMOD=MAXOPERATOR+20,
SYNPLIT=MAXOPERATOR+21,
SYNPAR=MAXOPERATOR+22,
SYNPOI=MAXOPERATOR+23,
SYNSQB=MAXOPERATOR+24,
SYNEXIT=MAXOPERATOR+25,
SYNREXIT=MAXOPERATOR+26,
SYNNULL=MAXOPERATOR+27,
SYNINLINE=MAXOPERATOR+28,
SYNENABLE=MAXOPERATOR+29,
SYNSIGNAL=MAXOPERATOR+30,
SYNMOVP=MAXOPERATOR+31;
!-----------------------------------------------------------------------
!3. FLOW ANALYSIS STRUCTURES & VARIABLES
STRUCTURE ITEM[I,J,P,S]=
CASE .I OF
SET
(.ITEM)<.P,.S>;
(@.ITEM+.J)<.P,.S>;
(@@.ITEM+.J)<.P,.S>;
(.(@.ITEM)<18,18>+.J)<.P,.S>
TES;
STRUCTURE LVL[I]=CASE .I OF
SET
.LVL<0,36>;
.LVL<0,18>;
.LVL<18,18>;
ST[.(.LVL)<18,18>,0,0,36];
ST[.(.LVL)<18,18>,0,0,18];
ST[.(.LVL)<18,18>,0,18,18]
TES;
STRUCTURE GTHSTR[I]=(.GTHSTR+.I)<0,36>;
MACRO LSTHDR=ITEM$;
EXTERNAL
GTHSTR GTHASH,
LVL LVLCOPY:FLOOR:CEILING:ABCBASE,
LSTHDR CURPRLGLST:CURMULST:CURPSLGLST:CUREPLGLST:CURBOGLST:KILLST;