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 />

else<br />

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

//NILO: Aqui vem o tipo da variável<br />

// if (sym == DOIS_PONTOS)<br />

// Get (sym);<br />

// else<br />

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

}<br />

}<br />

void<br />

fType (Type & type)<br />

{<br />

Object obj, first;<br />

Item x;<br />

Type tp;<br />

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

if (sym != IDENTIFICADOR && sym != MATRIZ && sym != REGISTRO &&<br />

sym != NUMERICO && sym !=LITERAL && sym !=LOGICO)<br />

{<br />

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

do<br />

{<br />

Get (sym);<br />

}<br />

while (sym != IDENTIFICADOR && sym !=NOVALINHA);<br />

}<br />

switch (sym) {<br />

case LITERAL:<br />

type = litType;<br />

Get(sym);<br />

break;<br />

case NUMERICO:<br />

type = intType;<br />

Get(sym);<br />

break;<br />

case LOGICO:<br />

type = boolType;<br />

Get(sym);<br />

break;<br />

case IDENTIFICADOR: // Tipo definido pelo usuário<br />

find (obj);<br />

Get (sym);<br />

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

type = obj->type;<br />

else<br />

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

break;<br />

case MATRIZ:<br />

Get (sym);<br />

expression (x);<br />

if (x.mode != Const || x.a < 0)<br />

Mark ("Índice inválido");<br />

// if (sym == of)<br />

// Get (sym);<br />

// else<br />

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

tp = new TypeDesc;<br />

type->form = MATRIZ;<br />

75

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

Saved successfully!

Ooh no, something went wrong!