17.01.2013 Views

COMPORT – Compilador Portugol - Nilo Menezes

COMPORT – Compilador Portugol - Nilo Menezes

COMPORT – Compilador Portugol - Nilo Menezes

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

lista<br />

ComPort <strong>–</strong> <strong>Compilador</strong> <strong>Portugol</strong><br />

}<br />

break;<br />

}<br />

case DECLARE:<br />

{<br />

Get (sym);<br />

while (sym == IDENTIFICADOR)<br />

{<br />

IdentList (Var, first);<br />

fType (tp);<br />

//atualiza a informação de tipo do primeiro ao ultimo da<br />

obj = first;<br />

while (obj != guard)<br />

{<br />

obj->type = tp;<br />

obj->lev = curlev;<br />

varsize = varsize + obj->type->size;<br />

obj->val = -varsize;<br />

fprintf(stderr, "Variável %s criada sendo do tipo %s\n",<br />

obj->name , id);<br />

obj = obj->next;<br />

}<br />

if (sym == NOVALINHA)<br />

Get (sym);<br />

else<br />

Mark (" ?");<br />

}<br />

break;<br />

}<br />

}<br />

}<br />

while (sym == DECLARE || sym == DEFINA);<br />

}<br />

void<br />

FPSection (long &parblksize)<br />

{<br />

Object obj, first;<br />

Type tp;<br />

long parsize;<br />

if (sym == VARIAVEL)<br />

{<br />

Get (sym);<br />

IdentList (Par, first);<br />

}<br />

else<br />

IdentList (VARIAVEL, first);<br />

if (sym == IDENTIFICADOR)<br />

{<br />

find (obj);<br />

Get (sym);<br />

if (obj->Class == Typ)<br />

tp = obj->type;<br />

else<br />

{<br />

Mark ("type?");<br />

tp = intType;<br />

}<br />

}<br />

else<br />

78

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!