Google
 

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;