Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-06 - 43,50366/recsm6.mac
There are no other files named recsm6.mac in the archive.
                   TITLE RECSM

                   SUBTTL COMPILADOR  DE EXPRESIONES REGULARES

	REPEAT 0,<

		CARLOS GARCIA JURADO

		INSTITUTO NACIONAL DE ENERGIA NUCLEAR

		APDO POSTAL 27-190

		MEXICO 18,D.F.

>
	;PURE=1 ENSAMBLA VERSION REENTRANTE

	;PURE=0 ENSAMBLA EL COMPILADOR COMO UNA SUBRUTINA QUE

	;PUEDE SER LLAMADA DESDE FORTRAN.






	IFNDEF PURE,<PURE=1>

	IFN PURE,<

	JOBVER=137

	LOC 137

	EXP 001

	HISEG

	>







	EXTERNAL JOBREL,JOBSYM,JOBFF,JOBSA,JOBDDT,JOBAPR,JOBTPC

	EXTERNAL SYSJO,DATE,TIME

	ENTRY A,B,D,C,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z

	ENTRY CONT,LOADAC,EQ,C.NUM,SYSF,SWS,RWS,QUOTE,CAN,CNA


	ENTRY SUMA,RESTA,MULT,DIV,REPPDL,MOD,RTEXT1

	INTERN INPUSH,TEXT0,TEXT3,TEX00,LTEXT,CSBR.1,DP.1,LOW2,PP


	IFE PURE,<

	RELOC

	ENTRY RECSM

	>







	

	INCHN=16

	OUCHN=17

         



	AC0=0
	AC1=1
	AC2=2
	AC3=3
	AC4=4
	AC5=5
	AC6=6
	AC7=7
	FLAG=10
	TEM=11
	CHREC=12
	TEXT1=13
	TEXT2=14
	QTEXT0=15
	TXPD=16
	REC=17


	PARENT=1
	REENTC=2
	EXEC=4


	S.R=200
	S.W=400

ACOMP=AC4
XPD=AC5
YPD=AC6
ZPD=AC7

	;PARAMETROS DE RECSM
	WKSIZE=3500
	QSIZE=770
	QPDL=147
	PDLSIZ=200
	IFE PURE,<

	REPEAT 0,<
		OPCION PARA LLAMAR AL COMPILADOR DESDE FORTRAN

		LA SECUENCIA DE LLAMADO ES:


		CALL RECSM (IV,ITEXT,IREC)

		ES DECIR EL COMPILADOR ESTA DEFINIDO COMO UNA

		SUBRUTINA DONDE  LOS ARGUMENTOS SE INTERPRETAN

		COMO SIGUE:

		IREC: ARREGLO ENTERO DONDE ESTA EMPACADO EL PRO-

		GRAMA REC QUE VA A EJECUTARSE EL PROGRAMA DEBE ESTAR 

		EMPACADO EN FORMATO A5.

		ITEXT: ES UN ARREGLO ENTERO QUE CONTIENE LA CADENA

		DE SIMBOLOS ASCII QUE SE VA A TRANSFORMAR,TAMBIEN

		EN ESTE CASO LA CADENA DEBE ESTAR EN A5.


		PARA DETERMINAR LA DIMENSION DEL ARREGLO

		ES DAR N=M/5+1 DONDE M ES EL NUMERO MAXIMO DE 

		CARACTERES QUE SE VAN A MANEJAR.

		IV: ES UNA VARIABLE LOGICA QUE CONTIENE EL VALOR

		FALSO O VERDAD DE LA EXPRESION REC QUE SE EJECUTO


		>



RECSM:	0
	HRRZI ,SACF
	BLT 0,SACF+17
	MOVE ,@(16)
	MOVEM IV
	MOVE JOBFF
	MOVEM JOBFF0
	SKIPE F4
	JRST K.1
	MOVE REC,INPUSH
	CLEAR FLAG,
	ADDI ,3000
	MOVEM ,JOBFF
	CALLI ,11
	JRST ERR6
	PUSHJ REC,INICOM
	HRRZ QTEXT0,2(16)
	HLL QTEXT0,[POINT 7,,]
	HRRZ AC1,1(16)
	HLL AC1,[POINT 7,,]
	ILDB TEM,AC1
	JUMPE TEM,.+5
	SKIPA
	ILDB TEM,AC1
	IDPB TEM,TEXT3
	JUMPN TEM,.-2
	SETOM IV
	PUSHJ REC,RECCOM
	PUSHJ REC,REA.1
	SETZM  ,IV
	SETZM F4
	MOVE ,JOBFF0
	MOVEM JOBFF
	CALLI ,11
	JRST ERR6
RETURN:	HRLZI 0,SACF
	BLT 0,16
	MOVE ,IV
	MOVEM ,@(16)
	HRRZ AC1,1(16)
	HLL AC1,[POINT 7,,]
	MOVE AC2,TEXT0
	ILDB CHREC,AC2
	IDPB CHREC,AC1
	JUMPN CHREC,.-2
	MOVEI AC2,5
	IDPB CHREC,AC1
	SOJG AC2,.-1
	JRA 16,3(16)

IV:	0
F4:	0
JOBFF0:	0
SACF:	BLOCK 20

		>
	IFN PURE,<



START:	MOVE REC,INPUSH
	CLEAR FLAG,
	MOVE ,JOBFF
	CALLI ,11
	JRST ERR6
	SETZM O.WD
	SETZM O.R1
	PUSHJ REC,INICOM
REENT:	TTCALL 3,CRLF
	TTCALL 3,INDEV
	PUSHJ REC,CLARG
	MOVE ,[ASCII /TTY:/]
	MOVEM ARGIO
	TTCALL 4,CHREC
	CAIN CHREC,15
	JRST .+12
	CAIN CHREC,""
	JRST .+10
	SKIPA
	TTCALL 4,CHREC
	CAIN CHREC,""
	MOVEI CHREC,15
	IDPB CHREC,AC1
	CAIE CHREC,15
	JRST .-5
	PUSHJ REC,O.RD
	JRST START1
	TTCALL 3,TERM
	TRO FLAG,EXEC
	TRZE FLAG,REENTC
	JRST TRAECA
	TLZ FLAG,S.W
	PUSHJ REC,RECCOM
	PUSHJ REC,REA
	TLN
	CLEAR
	CALL [SIXBIT /EXIT/]


START1:	TTCALL 3,ARGIO
	TTCALL 3,CRLF
	TTCALL 3,ER4
	TTCALL 11,
	JRST START
		>

RECCOM:	HRRZ ,ACOMP
	ADDI ,1
	HRLZ AC1,CSBR.1
	HRR AC1,0
	HRRZ AC2,
	ADDI AC2,77
	BLT AC1,(AC2)
	HRRM CSBR.1
	HRRM DP.1
	ADDI 100
	HRRZM APCOM0
	MOVE ,@(REC)
	MOVEM LEECA
	PUSH REC,APCOM0
	ADDI ACOMP,100
	HRRZI ,SAC
	BLT ,SAC+14
	HRRZI XPD,XPDL
	HRRZI YPD,YPDL
	MOVE ZPD,[XWD -17,ZPDL]
	TRZ FLAG,PARENT
TRAECA:	HRRZ ,ACOMP
	ADDI ,177
	CAML ,JOBFF
	PUSHJ REC,CORE
	PUSHJ REC,LEECA     
	CAIG CHREC,40
         JRST TRAECA         
	CAIN CHREC,","
	JRST TRAECA
	CAIN CHREC,"["
	JRST COMEN
	CAIN CHREC,"("
	TRO FLAG,PARENT
	TRNN FLAG,PARENT
	JRST CHKQ
	SUBI CHREC,40
	HRRZ AC1,TDSC(CHREC)
         PUSHJ REC,@AC1        
         JRST TRAECA         
CHKQ:	CAIN CHREC,"'"
	JRST COMI
	CAIE CHREC,42
	JRST TRAECA
COMI:	MOVE TEM,CHREC
	MOVEI AC2,42
	CAIE TEM,"'"
	MOVEI AC2,"'"
	PUSHJ REC,COMI.1
	JRST TRAECA
COMI.1:	PUSHJ REC,LEECA
	CAME CHREC,AC2
	JRST .+5
	EXCH TEM,AC2
	PUSHJ REC,COMI.1
	EXCH TEM,AC2
	JRST COMI.1
	CAME CHREC,TEM
	JRST COMI.1
	POPJ REC,

IIIAAAA>>AAA>						AA@@@@IIIA			``B@*U*-8x