home *** CD-ROM | disk | FTP | other *** search
- #ident "@(#)libl:lib/nrform 1.3"
- block data
- integer cshift, csize, yynlin
- common /yyllib/ cshift, csize, yynlin
- data yynlin/YYNEWLINE/
- end
- block data
- common /yyldat/ yyfnd, ymorf, yyprev, yybgin, yytop
- integer yyfnd, yymorf, yyprev, yybgin, yytop
- data yybgin/1/
- data yyprev/YYNEWLINE/
- data yytop/YYTOPVAL/
- 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, yytop, yylsp, yylsta(YYLMAX)
- common /yyxel/ yyleng, yytext
- integer yyfnd, yymorf, yylsta, yylsp, yytext, yyprev, yyleng, yytop
- 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){
- if (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 {
- if (state > 0) state = sfall(state)
- if (state .gt. 0) r = stoff(state)
- if (state .gt. 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
-