Trailing-Edge
-
PDP-10 Archives
-
decuslib10-04
-
43,50325/ldsf2.beg
There are no other files named ldsf2.beg in the archive.
! File: LDSF2.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.
!----------------------------
!4. DELIMITER LEXEME CLASSES:
! A DELIMITER LEXEME HAS A FIELD CALLED THE CLASS
! FIELD. THIS FIELD SPECIFIES WHETHER THE DELIMITER IS AN OPEN
! BRACKET, A CLOSE BRACKET, OR A DECLARATOR.
BIND
SE=8,
MT=4,
AE=2,
R2L=1,
OBR=0,
OPENBRAC=0,
OP=1,
CBR=2,
CLOBRAC=2,
DCL=3,
DCLRTR=3;
!----------------------------------------------------
!5. DECLARATION ROUTINE INDICES, AND ASSOCIATED PLIT:
! THESE INDICES ARE USED IN THE SAME MANNER AS THE
! SYNTAX ROUTINE INDICES IN #3.B, EXCEPT THAT THEY INDEX
! INTO A PLIT OF DECLARATION ROUTINES. THUS, THE
! CORRECT DECLARATION ROUTINE IS EXECUTED FOR EACH
! TYPE OF DECLARATION EXPRESSION ENCOUNTERED.
BIND
DCLBYTE=1,
DCLOWN=2,
DCLGLO=3,
DCLEXT=4,
DCLROU=5,
DCLSTR=6,
DCLMAP=7,
DCLFOR=8,
DCLBIN=9,
DCLMAC=10,
DCLUND=11,
DCLLAB=12,
DCLWORD=13,
DCLSWI=14,
DCLLOC=15,
DCLREG=16,
DCLENABLE=17,
DCLREQU=18,
DCLCSECT=19,
DCLSLOCAL=20,
DCLLNKG=21,
DCLPSECT=22;
!--------------------
!6. DELIMITER LEXEMES
! 1. THIS MACRO IS USED FOR MAKING UP SPECIAL
! DELIMITER LEXEMES.
MACRO DEFLEX(CLASS,PRIO,FLGS,UN,IND)=
(CLASS)^34 OR (PRIO)^30 OR (FLGS)^26 OR (UN)^22 OR (IND)$;
! 2. NOW WE HAVE AN ASSORTMENT OF SPECIAL LEXEMES FOR
! RESERVED WORD DELIMITERS.
! NOTE: IN THE FOLLOWING MT IS A FLAG THAT INDICATES WHETHER
! SYM IS ALLOWED TO BE EMPTY AT A GIVEN POINT. IT ALSO INDICATES
! UNARY OR BINARY IN THE CASE OF OPERATORS
! AE INDICATES WHETHER AEFOLLOWS() IN SYNTAX SHOULD BE
! TRUE. SIMILARLY FOR SE AND SEFOLLOWS();
BIND
!A. SPECIAL LEXEMES
HDOWHILE=DEFLEX(CBR,0,0,1,SYNDOW),
HDOUNTIL=DEFLEX(CBR,0,0,0,SYNDOU),
HCOMP=DEFLEX(OBR,1,0,0,SYNCOMP),
HCOMP2=DEFLEX(OBR,1,0,1,SYNCOMP),
HNULL=DEFLEX(0,0,0,0,SYNNULL),
HEMPTY=0,
HFPARM=DEFLEX(OBR,0,0,0,SFPARM),
HFSTORE=DEFLEX(OBR,0,0,0,SFSTORE),
HSWAB=DEFLEX(OP,0,0,0,SSWABOP),
HCARRY=DEFLEX(OP,0,0,0,SCARRYOP),
HOVFLOW=DEFLEX(OP,0,0,0,SOVFLOP),
HMOVP=DEFLEX(OP,0,0,0,SYNMOVP),
!B. OPEN BRACKETS
HBEGIN=DEFLEX(OBR,0,SE+AE,0,SYNCOMP),
HCOMPOPEN=DEFLEX(OBR,0,SE+AE,2,SYNCOMP),
HCASE=DEFLEX(OBR,0,AE,0,SYNCASE),
HCREATE=DEFLEX(OBR,0,AE,0,SYNCRE),
HDECR=DEFLEX(OBR,0,AE,0,SYNDECR),
HDO=DEFLEX(OBR,0,AE,2,SYNDOW),
HEXCHJ=DEFLEX(OBR,0,SE+AE,0,SYNEXC),
HEXITLOOP=DEFLEX(OBR,0,AE,1,SYNESC),
HINLINE=DEFLEX(OBR,0,SE+AE,0,SYNINLINE),
HINLINECOM=DEFLEX(OBR,0,SE+AE,1,SYNINLINE),
HLABUSE=DEFLEX(OBR,0,0,0,SYNLABEL),
HLEAVE=DEFLEX(OBR,0,AE,0,SYNEXIT),
HIF=DEFLEX(OBR,0,AE,0,SYNIF),
HINCR=DEFLEX(OBR,0,AE,0,SYNINCR),
HMODULE=DEFLEX(OBR,0,SE+AE,0,SYNMOD),
HPARAOPEN=DEFLEX(OBR,0,SE+MT+AE,0,SYNPAR),
HPLIT=DEFLEX(OBR,0,SE+AE,0,SYNPLIT),
HPOINTOPEN=DEFLEX(OBR,0,SE+MT+AE,0,SYNPOI),
HRETURN=DEFLEX(OBR,0,AE,0,SYNESC),
HRLEAVE=DEFLEX(OBR,0,0,0,SYNREXIT),
HSELECT=DEFLEX(OBR,0,SE+AE,0,SYNSEL),
HSIGNAL=DEFLEX(OBR,0,AE,0,SYNSIGNAL),
HSQBOPEN=DEFLEX(OBR,0,SE+MT+AE,0,SYNSQB),
HUNTIL=DEFLEX(OBR,0,AE,0,SYNUDO),
HUPLIT=DEFLEX(OBR,0,SE+AE,1,SYNPLIT),
HWHILE=DEFLEX(OBR,0,AE,1,SYNWDO),
!C. STANDARD ARITH OPERATORS
HADD=DEFLEX(OP,6,SE+MT+AE,0,SADDOP),
HAT=DEFLEX(OP,0,SE+AE+R2L,1,SDOTOP),
HDIV=DEFLEX(OP,4,SE+MT+AE,1,SDIVOP),
HDOT=DEFLEX(OP,0,SE+AE+R2L,0,SDOTOP),
HMINUS=DEFLEX(OP,6,SE+MT+AE,1,SMINOP),
HMOD=DEFLEX(OP,4,SE+MT+AE,2,SMODOP),
HMULT=DEFLEX(OP,4,SE+MT+AE,0,SMULOP),
HNEG=DEFLEX(OP,2,SE+AE+R2L,0,SNEGOP),
HPLUS=DEFLEX(OP,2,SE+AE+R2L,4,SPLUSOP),
HROT=DEFLEX(OP,3,SE+MT+AE,0,SROTOP),
HSHIFT=DEFLEX(OP,3,SE+MT+AE,5,SSHIFTOP),
HMAX=DEFLEX(OP,7,SE+MT+AE,0,SMAXOP),
HMIN=DEFLEX(OP,7,SE+MT+AE,0,SMINNOP),
HSTORE=DEFLEX(OP,15,SE+MT+AE+R2L,0,SSTOROP),
!D. BOOLEAN OPERATORS
HAND=DEFLEX(OP,10,SE+MT+AE,0,SANDOP),
HEQL=DEFLEX(OP,8,SE+MT+AE,2,SEQLOP),
HEQLU=DEFLEX(OP,8,SE+MT+AE,8,SEQLUOP),
HEQV=DEFLEX(OP,14,SE+MT+AE,1,SEQVOP),
HGEQ=DEFLEX(OP,8,SE+MT+AE,4,SGEQOP),
HGEQU=DEFLEX(OP,8,SE+MT+AE,10,SGEQUOP),
HGTR=DEFLEX(OP,8,SE+MT+AE,5,SGTROP),
HGTRU=DEFLEX(OP,8,SE+MT+AE,11,SGTRUOP),
HLEQ=DEFLEX(OP,8,SE+MT+AE,1,SLEQOP),
HLEQU=DEFLEX(OP,8,SE+MT+AE,7,SLEQUOP),
HLSS=DEFLEX(OP,8,SE+MT+AE,0,SLSSOP),
HLSSU=DEFLEX(OP,8,SE+MT+AE,6,SLSSUOP),
HNEQ=DEFLEX(OP,8,SE+MT+AE,3,SNEQOP),
HNEQU=DEFLEX(OP,8,SE+MT+AE,9,SNEQUOP),
HNOT=DEFLEX(OP,9,SE+AE+R2L,0,SNOTOP),
HOR=DEFLEX(OP,12,SE+MT+AE,0,SOROP),
HXOR=DEFLEX(OP,14,SE+MT+AE,0,SXOROP),
!E. FLOATING POINT OPERATORS
HFADR=DEFLEX(OP,6,SE+MT+AE,2,SFADROP),
HFDVR=DEFLEX(OP,4,SE+MT+AE,4,SFDVROP),
HFIX=DEFLEX(OP,2,SE+AE+R2L,3,SFIXOP),
HFLOAT=DEFLEX(OP,2,SE+AE+R2L,2,SFLOATOP),
HFMPR=DEFLEX(OP,4,SE+MT+AE,3,SFMPROP),
HFNEG=DEFLEX(OP,2,SE+AE+R2L,1,SFNEGOP),
HFSBR=DEFLEX(OP,6,SE+MT+AE,3,SFSBROP),
!F. CLOSE BRACKETS
HALWAYS=DEFLEX(CBR,0,0,3,SYNNULL),
HBY=DEFLEX(CBR,0,0,3,SYNINCR),
HCOLON=DEFLEX(CBR,0,0,0,21),
HCOMMA=DEFLEX(CBR,0,0,0,18),
HCRAT=DEFLEX(CBR,0,0,1,SYNCRE),
HDOCLOSE=DEFLEX(CBR,0,0,2,SYNDOU),
HELBANE=DEFLEX(CBR,0,0,0,SYNENABLE),
HELSE=DEFLEX(CBR,0,0,2,SYNIF),
HELUDOM=DEFLEX(CBR,0,0,0,SYNMOD),
HEND=DEFLEX(CBR,0,0,0,0),
HEQUAL=HSTORE,
HFROM=DEFLEX(CBR,0,0,1,SYNINCR),
HLENGTH=DEFLEX(CBR,0,0,2,SYNCRE),
HNSET=DEFLEX(CBR,0,0,1,SYNSEL),
HOF=DEFLEX(CBR,0,0,0,SYNCASE),
HOTHERWISE=DEFLEX(CBR,0,0,4,SYNNULL),
HPARACLOSE=DEFLEX(CBR,0,0,0,1),
HPOINCLOSE=DEFLEX(CBR,0,0,0,2),
HSEMICOLON=DEFLEX(CBR,0,0,0,17),
HSET=DEFLEX(CBR,0,0,1,SYNCASE),
HSQBCLOSE=DEFLEX(CBR,0,0,0,3),
HTES=DEFLEX(CBR,0,0,2,SYNCASE),
HTESN=DEFLEX(CBR,0,0,2,SYNSEL),
HTHEN=DEFLEX(CBR,0,0,1,SYNIF),
HTO=DEFLEX(CBR,0,0,2,SYNINCR),
HUNTILCLOS=HDOUNTIL,
HWHILECLOS=HDOWHILE,
HWITH=DEFLEX(CBR,0,0,0,SYNEXIT),
!G. DECLARATORS
HBIND=DEFLEX(DCL,0,0,0,DCLBIN),
HENABLE=DEFLEX(DCL,0,0,0,DCLENABLE),
HEXTERNAL=DEFLEX(DCL,0,0,0,DCLEXT),
HFORWARD=DEFLEX(DCL,0,0,0,DCLFOR),
HGLOBAL=DEFLEX(DCL,0,0,0,DCLGLO),
HLABEL=DEFLEX(DCL,0,0,0,DCLLAB),
HLOCAL=DEFLEX(DCL,0,0,0,DCLLOC),
HMACRO=DEFLEX(DCL,0,0,0,DCLMAC),
HMAP=DEFLEX(DCL,0,0,0,DCLMAP),
HOWN=DEFLEX(DCL,0,0,0,DCLOWN),
HREGISTER=DEFLEX(DCL,0,0,0,DCLREG),
HROUTINE=DEFLEX(DCL,0,0,0,DCLROU),
HSTRUCTURE=DEFLEX(DCL,0,0,0,DCLSTR),
HSWITCHES=DEFLEX(DCL,0,0,0,DCLSWI),
HUNDECLARE=DEFLEX(DCL,0,0,0,DCLUND),
HWORD=DEFLEX(DCL,0,0,0,DCLWORD),
HBYTE=DEFLEX(DCL,0,0,0,DCLBYTE),
HREQUIRE=DEFLEX(DCL,0,0,0,DCLREQU),
HCSECT=DEFLEX(DCL,0,0,0,DCLCSECT),
HSLOCAL=DEFLEX(DCL,0,0,0,DCLSLOCAL),
HLNKG=DEFLEX(DCL,0,0,0,DCLLNKG),
HPSECT=DEFLEX(DCL,0,0,0,DCLPSECT),
!H SPECIAL ERROR OPERATOR
ERRLEX=DEFLEX(OP,14,SE+MT+AE,0,SERROP),
HBACKSLASH=DEFLEX(OP,14,SE+MT+AE,1,SERROP);
!---------------------------------------------
!7. QUOTE AND CLASS LEVELS FOR RUND PARAMETERS
BIND
CLLEXEME=BNDVAR,
QLLEXEME=CLLEXEME,
CLLSLEX=LSLEXTYP,
QLLSLEX=CLLSLEX,
CLSSLEX=SSLEXTYP,
QLSSLEX=CLSSLEX,
CLQNAME=UNBNDVAR,
QLQNAME=CLQNAME,
QLSFCONV=CLSFCONV,
QLMACR=CLMACR;
!8. SIZE OF DELIMITER TABLE (SEE OF1 AND DEBUG).
BIND
DTSIZE=#200; ! RECOMPILE GLODEC IF YOU CHANGE THIS.
!-----------------------------------------
!9. LOOPING CONSTRUCT DEFAULT DEFINITIONS:
MACRO
DFROM=ZERO$,
DTOI=LITLEXEME((1^15)-1)$,
DTOD=LITLEXEME(((-1)^15))$,
DBY=LITLEXEME(1)$;
!-----------------------------------------
!10. PRIMITIVES TO SET AND RESTORE NOTREE
MACRO NOCODE=(NOTREE_(.NOTREE^1) OR 1)$,
RESNOTREE=(NOTREE_.NOTREE^(-1))$;