«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2006

Re: Malo pitanje za asistenta

by Jovan Popovic
petak, 26. maj 2006 - 20:03.

<type> treba da ima atribut tipa Struct tj.

non terminal symblolTablePackage.Struct type;

U primeru se uzima naziv tipa u terminalu ID (npr. "int") u metodi
checkType se proverava da li u T.S. postoji simbol tog imena i da li je
taj simbol tip i nadjeni simbol se prosledjuje gornjoj smeni.

Taj atribut se prosledjuje recimo smeni var_decl:

var_decl ::= VAR type:tip var_list:lista SEMI
{:
for each(id in lista)
sem.checkDeclaration(tip, id);
:}

gde metoda:
checkDeclaration(Struct tip, String id)
proverava da li postoji promenljiva id a ako ne postoji ubacuje je u T.S.
sa tipom <tip>.
U ovom primeru sam pretpostavio da var_list ima atribut tipa ArrayList u
kome se stavljaju svi identifikatori u jednoj deklaraciji

int x,y,z; => lista ={"x","y","z"}

i onda se za svaki od identifikatora u listi poziva
sem.checkDeclaration(tip, id);

Smene u kojima se gradi lista identifikatora na osnovu promenljivih u
deklaraciji izgledaju ovako:

var_list ::= var_list:lista COMMA var_part:id
{: lista.add(id);
RESULT = lista
:}
var_list ::= var_part:id {: RESULT = new ArrayList(id) :}

Pozdrav,
Jovan

>
> U primeru parsera sa sajta dat je sledeci kod:
>
> type ::= ID:type
> {: Struct res = Util.sem.checkType(type);
> RESULT = res;
> :};
>
> Ovo nam ne znaci mnogo jer mi imamo nesto ovako:
>
> var_decl ::= VAR type var_list SEMI
> var_list ::= var_list COMMA var_part;
> var_list ::= var_part ;
> var_part ::= IDENT ;
>
> type ::= INT ;
> type ::= CHAR ;
>
> Kog tipa treba da budu neterminali "type", kako ih treba inicijalizovati
> i kako ih je najbolje proslediti do prvog reda gde se pominje tip?
>
>
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
> -----------------------------------------------------------------
>