|
|
1.1 root 1: block data
2: integer cshift, csize, yynlin
3: common /yyllib/ cshift, csize, yynlin
4: data yynlin/YYNEWLINE/
5: end
6: block data
7: common /yyldat/ yyfnd, ymorf, yyprev, yybgin, yytop
8: integer yyfnd, yymorf, yyprev, yybgin, yytop
9: data yybgin/1/
10: data yyprev/YYNEWLINE/
11: data yytop/YYTOPVAL/
12: end
13: integer function yylook(dummy)
14: common /Lverif/ verif
15: common /Ladvan/ advan
16: common /Lstoff/ stoff
17: common /Lsfall/ sfall
18: common /Latable/ atable
19: common /Lextra/ extra
20: common /Lvstop/ vstop
21: integer verif(Sverif), advan(Sadvan),stoff(Sstoff),match(Smatch)
22: integer sfall(Ssfall),atable(Satable),extra(Sextra), vstop(Svstop)
23: integer state, lsp, r
24: integer ch, n
25: common /yyldat/ yyfnd, yymorf, yyprev, yybgin, yytop, yylsp, yylsta(YYLMAX)
26: common /yyxel/ yyleng, yytext
27: integer yyfnd, yymorf, yylsta, yylsp, yytext, yyprev, yyleng, yytop
28: integer lexshf, yytext(YYLMAX), yyback, yybgin
29: integer z, t
30: if (yymorf .eq. 0)
31: yyleng = 0
32: else
33: yymorf=0
34: 1776
35: lsp = 1
36: state = yybgin
37: if (yyprev .eq. YYNEWLINE)
38: state = state + 1
39: for (;;){
40: r = stoff(state)
41: if (r .eq. 0){
42: z = sfall(state)
43: if (z .eq. 0)
44: break
45: if(stoff(z) == 0) break
46: }
47: ch = input(dummy)
48: ich = lexshf(ch)
49: yyleng = yyleng+1
50: yytext(yyleng) = ch
51: 1984
52: if(r .gt. 0){
53: t = r + ich
54: if (t<= yytop){
55: if (verif(t) .eq. state){
56: if(advan(t) == YYERROR){
57: call unput(yytext(yyleng))
58: yyleng = yyleng - 1
59: break
60: }
61: state = advan(t)
62: yylsta(lsp) = state
63: lsp = lsp +1
64: goto 2001
65: }
66: }
67: }
68: if(r < 0){
69: t = r + ich
70: if (t <= yytop .and. verif(t) .eq. state){
71: if(advan(t) == YYERROR){
72: call unput(yytext(yyleng))
73: yyleng = yyleng - 1
74: break
75: }
76: state = advan(t)
77: yylsta(lsp) = state
78: lsp = lsp +1
79: goto 2001
80: }
81: t = r + match(ich)
82: if(t <= yytop && state == verif(t)){
83: if(advan(t) == YYERROR){
84: call unput(yytext(yyleng))
85: yyleng = yyleng - 1
86: break
87: }
88: state = advan(t)
89: yylsta(lsp) = state
90: lsp = lsp + 1
91: goto 2001
92: }
93: }
94: else {
95: if (state > 0) state = sfall(state)
96: if (state .gt. 0) r = stoff(state)
97: if (state .gt. 0 .and. r .ne. 0)
98: goto 1984
99: call unput(yytext(yyleng))
100: yyleng = yyleng -1
101: break
102: }
103: 2001
104: continue
105: }
106: while (lsp .gt. 1){
107: lsp = lsp -1
108: ilsp = yylsta(lsp)
109: yyfnd = atable(ilsp)
110: if (yyfnd .gt. 0)
111: if (vstop(yyfnd) .gt. 0){
112: r = vstop(yyfnd)
113: if (extra(r) .ne. 0){
114: for(;;){
115: ilsp = yylsta(lsp)
116: if (yyback(atable(ilsp), -r) .eq. 1)
117: break
118: lsp= lsp -1
119: call unput(yytext(yyleng))
120: yyleng = yyleng -1
121: }
122: }
123: yyprev = lexshf(yytext(yyleng))
124: yylsp = lsp
125: yyfnd = yyfnd + 1
126: yylook = r
127: yytext(yyleng+1) = 0
128: return
129: }
130: call unput(yytext(yyleng))
131: }
132: if (yytext(1) .eq. 0){
133: yylook=0
134: return
135: }
136: yyprev = input(dummy)
137: call output(yyprev)
138: yyprev = lexshf(yyprev)
139: yyleng = 0
140: goto 1776
141: end
142: integer function yyback (isub, n)
143: common /Lvstop/ vstop
144: integer vstop(Svstop)
145: if (isub .ne. 0)
146: while (vstop(isub) .ne. 0){
147: if (vstop(isub) .eq. m){
148: yyback = 1
149: return
150: }
151: isub = isub + 1
152: }
153: yyback = 0
154: return
155: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.