17.01.2013 Views

COMPORT – Compilador Portugol - Nilo Menezes

COMPORT – Compilador Portugol - Nilo Menezes

COMPORT – Compilador Portugol - Nilo Menezes

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!