AUSAM/source/lex/lexrl.a

eÿinput.rp
Ì
¶^integer  function input  (dummy)
integer   i, inbuff(200)
common /yyiob/ i, inbuff, ilim
integer   first
common /yyllib/ cshift,csize, yynlin
integer cshift, csize, yynlin
data first/1/;
data ibl /1h /;
data i1/1ha/;
data i2 /1hb/;
data k1 /2haa/;
data k2 /2hab/;
if (ierror(104) .ne. 0) goto 110
if (first .eq. 1)
	{
	first = 0;
	cshift = i2-i1
	k=k2-k1
	if (k .gt. cshift)
		csize = k/cshift
	else
		csize = cshift/k
	yynlin = yynlin*cshift
	ilim = 180
	i = 1000
	}
if (i .gt. ilim)
	{
	i = 101;
	read(5,10) (inbuff(j),j=101,180)
	10 format(80a1)
	for(ilim=180; inbuff(ilim) .eq. ibl .and. ilim .ge. 101; ilim=ilim-1);
	ilim = ilim + 1
	inbuff(ilim) = yynlin
	}
  input = inbuff(i)
  i = i+1
  return
110 input = 0
return
end
integer   function unput(ch)
integer ch
integer  i, inbuff(200)
common /yyiob/ i, inbuff
i = i-1
inbuff(i) = ch
unput = ch
return
end
output.rY
\ˆ¶&integer  function output (ch)
integer buff(80),ch,i,cshift, csize, yynlin
common /yyllib/ cshift, csize, yynlin
data i/0/;
if (ch .eq. yynlin .or. i .ge. 80) # newline
  {
  write (6,10) (buff(j), j=1,i)
 10 format(80a1)
  i = 0
  goto 111
  }
i = i +1
buff(i) = ch 
111
output = ch
return
end
yywrap.rY
܇¶5integer function yywrap(dummy)
yywrap = 1
return
end
main.rrY
܇¶i = yylex(0)
end
lexshf.rY
nˆ¶‘integer function lexshf(c)
integer c
common /yyllib/ cshift,csize, yynlin
integer cshift, csize, yynlin
lexshf = mod(c/cshift, csize)
return
end
yyecho.r~º©¶bsubroutine yyecho (text, len)
integer text(1), len
do i=1,len {
call output(text(i))
}
return
end
yymore.rY
‰¶csubroutine yymore(dummy)
common /yyldat/ yyfnd, yymorf
integer yyfnd, yymorf
yymorf = 1
return
end
ratformŒ
Ÿí¶Õblock data
integer cshift, csize, yynlin
common /yyllib/ cshift, csize, yynlin
data yynlin/YYNEWLINE/;
end
block data
common /yyldat/ yyfnd, ymorf, yyprev, yybgin
integer yyfnd, yymorf, yyprev, yybgin
data yybgin/1/
data yyprev/YYNEWLINE/
end
integer function yylook(dummy)
common /Lverif/ verif
common /Ladvan/ advan
common /Lstoff/ stoff
common /Lother/ other
common /Lstops/ stops
common /Lextra/ extra
common /Lvstop/ vstop
integer verif(Sverif), advan(Sadvan),stoff(Sstoff)
integer other(Sother),stops(Sstops),extra(Sextra), vstop(Svstop)
integer state, lsp, r
integer  ch, n
common /yyldat/ yyfnd, yymorf, yyprev, yybgin, yylsp, yylsta(YYLMAX)
common /yyxel/ yyleng, yytext
integer yyfnd, yymorf, yylsta, yylsp, yytext, yyprev, yyleng
integer  lexshf, yytext(YYLMAX), yyback, yybgin
if (yymorf .eq. 0)
	yyleng = 0;
else
	yymorf=0
1776
lsp = 1
state = yybgin
if (yyprev .eq. YYNEWLINE)
	state = state + 1
for (;;)
	{
	r = stoff(state)
	if (r .eq. 0)
		{
		state = other(state)
		if (state .eq. 0)
			break
		else
			r = stoff(state)
		}
	ch = input(dummy);
	ich = lexshf(ch)
	yyleng = yyleng+1
	yytext(yyleng) = ch
	1984
	r = r + ich
	if (verif(r) .eq. state)
		{
		state = advan(r)
		yylsta(lsp) = state;
		lsp = lsp +1
		}
	else
		{
		state = other(state)
		if (state .gt. 0) r = stoff(state)
		if (state .ne. 0 .and. r .ne. 0)
		goto 1984;
		call unput(yytext(yyleng))
		yyleng = yyleng -1
		break;
		}
	}
while (lsp .gt. 1)
	{
	lsp = lsp -1
	ilsp = yylsta(lsp)
	yyfnd = stops(ilsp)
	if (yyfnd .gt. 0)
		if (vstop(yyfnd) .gt. 0)
		{
		r = vstop(yyfnd)
		if (extra(r) .ne. 0)
			{
			for(;;)
			{
			ilsp = yylsta(lsp)
			if (yyback(stops(ilsp), -r) .eq. 1)
				break
			lsp= lsp -1
			call unput(yytext(yyleng))
			yyleng = yyleng -1
			}
			}
		yyprev = lexshf(yytext(yyleng))
		yylsp = lsp;
		yyfnd = yyfnd + 1
		yylook = r
		yytext(yyleng+1) = 0
		return
		}
	call unput(yytext(yyleng))
	}
if (yytext(1) .eq. 0)
	{
	yylook=0
	return
	}
yyprev = input(dummy)
call output(yyprev)
yyprev = lexshf(yyprev)
yyleng = 0
goto 1776
end
integer function yyback (isub, n)
common /Lvstop/ vstop
integer vstop(Svstop)
if (isub .ne. 0)
while (vstop(isub) .ne. 0)
	{
	if (vstop(isub) .eq. m)
		{
		yyback = 1
		return
		}
	isub = isub + 1
	}
yyback = 0
return 
end
	reject.rŒ
í¶vinteger function yyrjec (text, len)
integer text(100), len
common /yyldat/ yyfnd, yymorf, yyprev, yybgin, yylsp, yylsta(1)
integer yyfnd, yymorf, yyprev, yylsp, yylsta, yybgin
common /Lvstop/ vstop
integer vstop(1)
common /Lstops/ stops
integer stops(1)
common /Lextra/ extra
integer extra(1)
integer r
r = vstop(yyfnd-1)
n = extra(r)
while (n .gt. 0)
	{
	len = len + 1
	text(len) = input(dummy)
	}
r = vstop(yyfnd)
if (r .gt. 0)
	{
	yyfnd = yyfnd + 1
	yyrject = r
	return
	}
while(yylsp .gt. 1)
	{
	yylsp = yylsp -1
	ilsp = yylsta(yylsp)
	yyfnd = stops(ilsp)
	if (yyfnd .gt. 0)
		if (vstop(yyfnd) .gt. 0)
		{
		r = vstop(yyfnd)
		n = extra(r)
		for(; n .gt. 0; n = n -1)
			{
			call unput(text(len))
			len = len - 1
			}
		yyprev = text(len)
		yyfnd = yyfnd + 1
		yyrjec = r
		text(len+1)= 0
		return
		}
	call unput(text(len))
	}
call output(text(0))
len = 0
yyrjec = -1
return
end
yyless.rŒ
í¶subroutine yyless(n)
common /yyxel/ yyleng, yytext(200)
integer yyleng, yytext
common /yyldat/ yyfnd, yymorf, yyprev
integer yyfnd, yymorf, yyprev
while (yyleng .gt. n)
	{
	call unput(yytext(yyleng))
	yyleng = yyleng - 1
	}
if (n .gt. 0)
	yyprev = yytext(yyleng)
return
end
nrformƒ¼ï©¤Îblock data
integer cshift, csize, yynlin
common /yyllib/ cshift, csize, yynlin
data yynlin/YYNEWLINE/
end
block data
common /yyldat/ yyfnd, ymorf, yyprev, yybgin
integer yyfnd, yymorf, yyprev, yybgin
data yybgin/1/
data yyprev/YYNEWLINE/
end
integer function yylook(dummy)
common /Lverif/ verif
common /Ladvan/ advan
common /Lstoff/ stoff
common /Lsfall/ sfall
common /Latable/ atable
common /Lextra/ extra
common /Lvstop/ vstop
integer verif(Sverif), advan(Sadvan),stoff(Sstoff),match(Smatch)
integer sfall(Ssfall),atable(Satable),extra(Sextra), vstop(Svstop)
integer state, lsp, r
integer  ch, n
common /yyldat/ yyfnd, yymorf, yyprev, yybgin, yylsp, yylsta(YYLMAX)
common /yyxel/ yyleng, yytext
integer yyfnd, yymorf, yylsta, yylsp, yytext, yyprev, yyleng
integer  lexshf, yytext(YYLMAX), yyback, yybgin
integer z, t
if (yymorf .eq. 0)
	yyleng = 0
else
	yymorf=0
1776
	lsp = 1
	state = yybgin
	if (yyprev .eq. YYNEWLINE)
		state = state + 1
	for (;;){
		r = stoff(state)
		if (r .eq. 0){
			z = sfall(state)
			if (z .eq. 0)
				break
			if(stoff(z) == 0) break
			}
		ch = input(dummy)
		ich = lexshf(ch)
		yyleng = yyleng+1
		yytext(yyleng) = ch
		1984
		if(r .gt. 0){
			t = r + ich
			if (t <= yytop .and. verif(t) .eq. state){
				if(advan(t) == YYERROR){
					call unput(yytext(yyleng))
					yyleng = yyleng - 1
					break
					}
				state = advan(t)
				yylsta(lsp) = state
				lsp = lsp +1
				goto 2001
				}
			}
		if(r < 0){
			t = r + ich
			if (t <= yytop .and. verif(t) .eq. state){
				if(advan(t) == YYERROR){
					call unput(yytext(yyleng))
					yyleng = yyleng - 1
					break
					}
				state = advan(t)
				yylsta(lsp) = state
				lsp = lsp +1
				goto 2001
				}
			t = r + match(ich)
			if(t <= yytop && state == verif(t)){
				if(advan(t) == YYERROR){
					call unput(yytext(yyleng))
					yyleng = yyleng - 1
					break
					}
			state = advan(t)
			yylsta(lsp) = state
			lsp = lsp + 1
			goto 2001
			}
		}
		else {
			state = sfall(state)
			if (state .gt. 0) r = stoff(state)
			if (state .ne. 0 .and. r .ne. 0)
				goto 1984
			call unput(yytext(yyleng))
			yyleng = yyleng -1
			break
			}
	2001
		continue
		}
	while (lsp .gt. 1){
		lsp = lsp -1
		ilsp = yylsta(lsp)
		yyfnd = atable(ilsp)
		if (yyfnd .gt. 0)
			if (vstop(yyfnd) .gt. 0){
				r = vstop(yyfnd)
				if (extra(r) .ne. 0){
					for(;;){
					ilsp = yylsta(lsp)
					if (yyback(atable(ilsp), -r) .eq. 1)
						break
					lsp= lsp -1
					call unput(yytext(yyleng))
					yyleng = yyleng -1
					}
					}
				yyprev = lexshf(yytext(yyleng))
				yylsp = lsp
				yyfnd = yyfnd + 1
				yylook = r
				yytext(yyleng+1) = 0
				return
				}
		call unput(yytext(yyleng))
		}
	if (yytext(1) .eq. 0){
		yylook=0
		return
		}
	yyprev = input(dummy)
	call output(yyprev)
	yyprev = lexshf(yyprev)
	yyleng = 0
	goto 1776
end
integer function yyback (isub, n)
common /Lvstop/ vstop
integer vstop(Svstop)
if (isub .ne. 0)
while (vstop(isub) .ne. 0){
	if (vstop(isub) .eq. m){
		yyback = 1
		return
		}
	isub = isub + 1
	}
yyback = 0
return 
end