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.

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

{<br />

Object obj, first;<br />

Item x;<br />

Type tp;<br />

long L;<br />

if (sym != DECLARE && sym != DEFINA)<br />

{<br />

Mark ("declaração?");<br />

do // Pula o código até a próxima declaração de bloco<br />

{<br />

Get (sym);<br />

}<br />

while (EInicioDeDeclaracaoDefinicaoOuFim(sym));<br />

}<br />

do<br />

{<br />

switch (sym) {<br />

case DEFINA:<br />

{<br />

Get (sym);<br />

while (sym == IDENTIFICADOR)<br />

{<br />

NewObj (obj, Const);<br />

Get (sym);<br />

if (sym == IGUAL)<br />

Get (sym);<br />

else<br />

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

expression (x);<br />

fprintf(stderr, "Constante %s definida como %d", id, x.a);<br />

if (x.mode == Const)<br />

{<br />

obj->val = x.a;<br />

obj->type = x.type;<br />

}<br />

else<br />

Mark ("A expressão não é uma constante!");<br />

if (sym == NOVALINHA)<br />

Get (sym);<br />

else<br />

Mark ("?");<br />

}<br />

break;<br />

}<br />

/* TODO: não há no portugol sintaxe para declaração de tipo */<br />

case TIPO:<br />

{<br />

Get (sym);<br />

while (sym == IDENTIFICADOR)<br />

{<br />

NewObj (obj, Typ);<br />

Get (sym);<br />

if (sym == IGUAL)<br />

Get (sym);<br />

else<br />

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

fType (obj->type);<br />

if (sym == NOVALINHA)<br />

Get (sym);<br />

else<br />

Mark ("?");<br />

77

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

Saved successfully!

Ooh no, something went wrong!