Bericht_Nr.465_T ... - TUHH
Bericht_Nr.465_T ... - TUHH
Bericht_Nr.465_T ... - TUHH
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
BNF-PROGRAMMIERBARER PARSER f i 1e : BL. C 10-MAR-1986 16:22:23 Page 4<br />
,"71""').<br />
.!..: ...:.....<br />
i .<br />
.1. _.<br />
174:<br />
1;::;:<br />
1 j _:<br />
1 i i :<br />
178:<br />
HJ1:<br />
182:<br />
10.'::.:<br />
184:<br />
185:<br />
.i. 87:<br />
188:<br />
1E:9:<br />
19!!!:<br />
1'::;::'1 :<br />
I ,:::,". !..:.....<br />
193:<br />
194:<br />
196:<br />
197:<br />
198:<br />
19Q.<br />
2~!H!j:<br />
2i!Jl :<br />
2f.2J3:<br />
2!:!J4:<br />
2U!!:<br />
211:<br />
212:<br />
21-:<br />
214:<br />
215:<br />
216:<br />
217:<br />
218:<br />
219:<br />
221:<br />
222:<br />
""~"':'!'.<br />
...: :<br />
'.<br />
224:<br />
225:<br />
226:<br />
227:<br />
228:<br />
-.,.<br />
-<br />
-<br />
-<br />
4<br />
4<br />
4<br />
4<br />
'-<br />
-<br />
- -<br />
'-<br />
-<br />
'-<br />
-<br />
1<br />
1<br />
1<br />
1<br />
Qj<br />
(J<br />
1<br />
1<br />
1<br />
.-,<br />
..:..<br />
2<br />
.,<br />
..:..<br />
,..,<br />
..:..<br />
#endif<br />
return;<br />
,<br />
~.<br />
i f (j :> !!!) {<br />
i f (tss.i ze >= r-1AXT) {<br />
#ifdef DEBUG<br />
error (" tDO man',' termi nal s'/mbol s" ) ;<br />
#endif<br />
e;.-;i t ():<br />
}<br />
for<br />
(j<br />
- ts.s.ize++: J .:. 1: j--) n-; copy C1.11 pointers onE<br />
ts [j] = ts [j-l]:<br />
ts [i]<br />
strcpy<br />
= alloc<br />
(ts Ci],<br />
(strlen<br />
sym):<br />
(::.vm)+1);<br />
#ifdef DEBUG<br />
fpr'intf \OutFile, "neltl S.1ze 1S \d'\n", t:::size);<br />
#endif<br />
}<br />
return;<br />
}<br />
if (tssize 1'1AXT) {<br />
errar ("too mC1.nytermi nal symbol s") ;<br />
e~< i t<br />
~ '.<br />
();<br />
ts [t55izeJ = al 1oc (strlen(sym)+l);<br />
strcpv (ts [tssize++], sym);<br />
#ifdef DEBUG<br />
fPt-'intf \OutFile, "neftl size is i:d\n", ts.size);<br />
#endif<br />
} /* termlist *1<br />
1* factar - analyse bnf 'factor' svntax structure<br />
void f2.ctor (p, q, 1", s)<br />
struct Node **p, **q, **1", **5;<br />
{<br />
auto<br />
aL\to<br />
auto<br />
strLlct<br />
struct<br />
char<br />
Node ta;<br />
Header *h;<br />
*ident;<br />
if ('a' '. tolower (5ym) 8(~( tolm-Ier' (S1m) 'z')<br />
ident = alloc (IDENT_SIZE+l);<br />
makeident (ident);<br />
f pr i nt f \OutFi I e, "nontet-mi nal symbol \ t '!.s' \n", i dent) ;<br />
find (ident, ~,h);<br />
a = alloc (sizeof (struct Node));<br />
a-:>terminal = FALSE;<br />
a-)usym.nsym = (int *) h;<br />
a-:>al t = NIL;<br />
a->suc = NIL:<br />
*p = *q = *r = *s = a;<br />
,<br />
~.<br />
1<br />
2<br />
.,<br />
..:..<br />
else if (sym --<br />
GetSym ();<br />
ident = alloc<br />
' '" ) {<br />
(IDENT_SIZE<br />
/* terminal<br />
+ 1);<br />
symbol *1<br />
maketerm (ident);<br />
67<br />
{<br />
/* nonterminal symbol