Google
 

Trailing-Edge - PDP-10 Archives - BB-4157F-BM_1983 - fortran/compiler/lexaid.bli
There are 12 other files named lexaid.bli in the archive. Click here to see a list.
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
!  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.

!COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1974, 1983
!AUTHOR: D. B. TOLMAN/PLB

! LEXAID.BLI   

GLOBAL BIND LEXAIV = 7^24 + 0^18 + #1563;  ! Version Date: 18-Jun-82

%(

***** Begin Revision History *****

***** Begin Version 7 *****

1563	PLB	18-Jun-82
	Change OUTTYx macros for TOPS-20 native execution,
	and REQUIRE FTTENX.

***** End Revision History *****

)%

REQUIRE 'FTTENX.REQ';		![1563] NEEDED FOR OUTTYx MACROS

! MACROS WHICH DEFINE THE RELATIONAL LEXEME CODES  

MACRO
	REL(N) = RELATIONLOP^18+N$,
	DOTNE = REL(6)$,
	DOTEQ = REL(2)$,
	DOTGT = REL(7)$,
	DOTLT = REL(1)$,
	DOTGE = REL(5)$,
	DOTLE = REL(3)$;

! THIS FILE CONTAINS THE BINDS FOR THE CHARACTER CASSIFICATION
! CODES AND THEIR NAMES, USED BY ROUTINE LEXICAL.  NOTE THAT THE
! CODE NAMES AND LEXEME NAMES HAVE BEEN OVERLAYED AS MUCH AS
! POSSIBLE SO AS TO MAINTAIN A MINIMUM OF CONFUSION.

!
! --------------------------------------------------
! CARACTER CODE CLASSIFICATIONS, USED BY ROUTINE LEXICAL
! THE "SMALL" STATES USE ONLY THE FIRST 11 CODES.
! THE "BIG" STATES USE THE ENTIRE 32 CODES.
!
! CARACTER CODES 11 THROUGH 21 ARE THE SAME NAME AND ASSOCIATED 
! NUMBER AS THE LEXEME NAMES.
!
! --------------------------------------------------
BIND

	ILL	= 1,	% ILLEGAL CHARACTER%
	TAB	= 2,
	LT	= 3,	% <CR>, <LF>, <VT>, AND <FF> %
	BLANK	= 4,
	SPEC	= 5,	% FORTRAN-10 RECOGNIZED SPECIAL CHARACTERS%
	DIGIT	= 6,	% 0,1,...,9 %
	UPPER	= 7,	% UPPER CASE ALPHABETIC %
	LOWER	= 8,	% LOWER CASE ALPHABETIC %
	FOS	= 9,	% END OF FILE OR END OF STATEMENT %
	EOB	= 10,	% POSSIBLE END OF INTERNAL STATEMENT BUFFER OR END OF FILE
				CONTROL-Z AND DELETE (177) ARE CLASSIFIED AS THIS
				CNTROL-Z AND INPUT FROM TTY: IMPILES EOF
				A FULL WORD OF 1'S IMPLIES END OF INTERNAL STATEMENT BUFFER %
	REMARK	= 11,	% ! %

	LASTSMALCODE= REMARK  ,	% LAST SMALL STATE CHARACTER CODE %

% THE FOLLOWING 11 ARE IDENTICAL TO THE LEXEME NAMES 

	ANDSGN	= 12,
	LPAREN	= 13,
	RPAREN	= 14,
	COLON	= 15,
	COMMA	= 16,
	DOLLAR	= 17,
	MINUS	= 18,
	SLASH	= 19,
	PLUS	= 20,
	ASTERISK	= 21,
	EQUAL	= 22,
%
	LTSGN	= 23,	% < %
	GTSGN	= 24,	% > %
	NEQSGN	= 25,	% # %
	DOT	= 26,	% . %
	SEMICOL	= 27,	% ; %
	LITSGN	= 28,	% ' %
	OCTSGN	= 29,	% " %
	COMNTSGN= 30,	% UPPER AND LOWER CASE C %
	DEBUGSGN= 31,	% UPPER AND LOWER CASE D %
	UPAROW	= 32,	% ^ %

	LASTBIGCODE	= UPAROW  ;	% LAST BIG STATE CHARACTER CODE %

! SOME BINDS ONTO THE END OF THE CHARACTER SET

BIND	EOF	=	#200 ,	! END OF FILE ON INPUT
	OVRFLO	=	#201 ,	! INTERNAL STATEMENT BUFFER OVERFOW
	EOS	=	#202 ;	! END OF STATEMENT INDICATOR

EXTERNAL	ENDOFILE;! END OF FILE INDICATOR RETURNED BY LEXICAL

! END OF INTERNAL STATEMENT BUFFER INDICATOR.  A WORD
! THAT EQUALS THIS IN THE INTERNAL STATEMENT BUFFER INDICATES
! THAT THIS IS THE END.
BIND
	ENDBUFLAG	=	#777777777776  ;

MACRO  LEFT =  18,18  $,
	ADRS = 0,0  $,
       RIGHT  =  0,18  $ ;

EXTERNAL POOL;	! INTERNAL STATEMENT BUFFER
EXTERNAL CURPTR ;	! POINTER TO CURRENT CHARACTER IN POOL

BIND POOLSIZE = 600  ;
BIND POOLEND  = POOL[POOLSIZE-1]<0,0>  ;

MACRO CURWORD  =  .CURPTR<RIGHT>  $;

EXTERNAL  CURPOOLEND  ;
BIND POOLBEGIN  =  POOL[0]<0,0>  ;

EXTERNAL  EOPSAVE ;
BIND  SAVESIZE  =  EOPSAVE<LEFT>  ,
      SAVESTART =  EOPSAVE<RIGHT> ;

MACRO	FIRSTCHAR = 29,7  $;
MACRO	LASTCHAR	= 1,7 $;

BIND	LF	=	#12,
	VT	=	#13,
	FF	=	#14,
	CR	=	#15;


! LINE PROCESSING GLOBALS

EXTERNAL
	LINELINE,	! CURRENT LINE NUMBER
	LASTLINE,	! LAST LINE NUMBER
	CHARPOS,	! CARACTER POS ON PRINT LINE
	ISN,		! STATEMENT LINE NUMBER
	STPTR,		! CHARACTER POINTER TO BEGINNING-1 OF STATEMENT
	STLPTR,		! CHARACTER POINTER TO BEGINNING-1 OF LINE CONTAINING CURRENT STATEMENT
	STPOS,		! CARACTER POS ON LINE OF BEGINNING OF STATEMENT
			! WILL BE 72 IF BEGINNING OF LINE
	ERRFLAG,	! IF 1 INDICATES THAT THERE HAVE ALREADY BEEN
			! ERRORS IN THIS STATEMENT
	LINEPTR,	! CHARACTER POINTER TO BEGINNING CHARACTER-1 OF LINE
	SEQLAST,	! IF 1 INDICATES THAT THE LINE BEGINNING THIS PROGRAM
			! UNIT HAS A LINE SEQUENCE NUMBER IN LINELINE
	CLASPTR,	! CHARACTER POINTER FOR CLASSIFICATION BACKUP
	CLASLPT,	! BEGINNING OF LINE POINTER FOR CLASSIFICATION BACKUP
	CONTPTR,	! CHARACTER POINTER FOR CONTINUATION BACKUP
	NOCR,		! IF 1 INDICATES THAT THIS LINE WAS MISSING A <CR>
	LEXLINE,	! LINE NUMBER ASSOCIATED WITH THE CURRENT LEXEME
			! USED FOR ERROR REPORTING
	LINENO,	! AREA FOR BUILDING LINE NUMBER
	PAGELINE;	! CURRENT LINE ON PAGE

	BIND LINESPERPAGE = 59;

BIND ALLCHAR = 0,  LINESONLY  = 1;	! PARAMETERS TO BACKTYPE

MACRO  INTERR (STRNG ) =
BEGIN
	EXTERNAL FATLERR,E61;

	FATLERR ( PLIT ( STRNG ), .ISN , E61<0,0> )
END $;

MACRO PFLD = 30,6 $,  SFLD = 24,6 $;



	MACRO
ISCAN ( REG,PTR ) =
	BEGIN
		MACHOP ILDB = #134;
		ILDB ( REG,PTR )
	END
$;
	MACRO
NSCAN ( REG,PTR ) =
	BEGIN
		MACHOP LDB = #135;
		LDB ( REG,PTR )
	END
$;



% DESCRIPTION OF THE ERROR MESSAGE QUEUE BLOCK  %
MACRO
	EMSGNUM(X) = (.X)<18,16>  $,	!ERROR MESSAGE NUMBER
	ENODLINK(X) = (.X)<RIGHT>  $,	!LINK TO NEXT ENTRY IN LIST
					! 0 IF NONE LEFT
	ERRTYPD(X) = (.X)<34,1>  $,	! IF 1 INDICATES THAT THE MESSAGE
					! HAS ALREADY BEEN TYPED ON THE TTY
	ERRLINE(X) = (.X+1)<FULL> $,	! LINE NUMBER ASSOCIATED
	ERRENT1(X) = (.X+2)<FULL> $,	! MESSAGE PARAMETER 1
	ERRENT2(X) = (.X+3)<FULL>  $,	! MESSAGER PARAMETER 2
	ENODSIZ = 4   $  ;		! SIZE OF THE NODE



	MACRO
OUTTY ( PTR )  =
%1563%	IF NOT FTTENEX
%1563%	THEN
	BEGIN
	% DIRECT OUTSTRING %
		MACHOP  OUTSTR = #051 ;
		OUTSTR (3,PTR)
	END
%1563%	ELSE
%1563%	BEGIN
%1563%		EXTERNAL TTYSTR;
%1563%		TTYSTR(PTR<0,0>)
%1563%	END
$;
	MACRO
OUTTYI ( PTR )  =
%1563%	IF NOT FTTENEX
%1563%	THEN
	BEGIN
	% INDIRECT OUTSTRING %
		MACHOP  OUTSTR = #051 ;
		OUTSTR (3,PTR,0,1)
	END
%1563%	ELSE
%1563%	BEGIN
%1563%		EXTERNAL TTYSTR;
%1563%		TTYSTR(\PTR)
%1563%	END
$;
	MACRO
OUTTYX ( PTR )  =
%1563%	IF NOT FTTENEX
%1563%	THEN
	BEGIN
	% INDEXED OUTSTRING %
		MACHOP  OUTSTR = #051 ;
		OUTSTR (3,0,PTR)
	END
%1563%	ELSE
%1563%	BEGIN
%1563%		EXTERNAL TTYSTR;
%1563%		TTYSTR(@PTR)
%1563%	END
$;


%ENDLEXBND%