COMPORT – Compilador Portugol - Nilo Menezes
COMPORT – Compilador Portugol - Nilo Menezes
COMPORT – Compilador Portugol - Nilo Menezes
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