05.10.2013 Aufrufe

Bericht_Nr.465_T ... - TUHH

Bericht_Nr.465_T ... - TUHH

Bericht_Nr.465_T ... - TUHH

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!