COMPORT – Compilador Portugol - Nilo Menezes
COMPORT – Compilador Portugol - Nilo Menezes
COMPORT – Compilador Portugol - Nilo Menezes
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
}<br />
{<br />
Mark ("IDENTIFICADOR?");<br />
tp = intType;<br />
}<br />
if (first->Class == VARIAVEL)<br />
{<br />
parsize = tp->size;<br />
if (tp->form >= MATRIZ)<br />
Mark ("no struct params");<br />
}<br />
else<br />
parsize = WordSize;<br />
obj = first;<br />
while (obj != guard)<br />
{<br />
obj->type = tp;<br />
parblksize += parsize;<br />
obj = obj->next;<br />
}<br />
void<br />
ProcedureDecl (void)<br />
{<br />
const int marksize = 8;<br />
Object proc, obj;<br />
Ident procid;<br />
long locblksize, parblksize;<br />
Get (sym);<br />
if (sym == IDENTIFICADOR)<br />
{<br />
strcpy(procid,id);<br />
NewObj (proc, Proc);<br />
Get (sym);<br />
parblksize = marksize;<br />
IncLevel (1);<br />
OpenScope ();<br />
proc->val = -1;<br />
if (sym == PARENTESE_E)<br />
{<br />
Get (sym);<br />
if (sym == PARENTESE_D)<br />
Get (sym);<br />
else<br />
{<br />
FPSection (parblksize);<br />
while (sym == NOVALINHA)<br />
{<br />
Get (sym);<br />
FPSection (parblksize);<br />
}<br />
if (sym == PARENTESE_D)<br />
Get (sym);<br />
else<br />
Mark (")?");<br />
}<br />
}<br />
else if (curlev == 1)<br />
EnterCmd (procid);<br />
ComPort <strong>–</strong> <strong>Compilador</strong> <strong>Portugol</strong><br />
79