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

Re: Kako izgleda u Byacc-u?

by Rade Jakovljević
nedelja, 28. maj 2006 - 19:05.

Svaka cast na lepom objasnjenju.

2006/5/28, Marko Zivic <marko.zivic@gmail.com>:

I ja bih to voleo da znam.
Imam utisak da je to znatno lakse u CUP-u, samo stavis RESULT = ..., ali
byacc zahteva da se prethodno definise tip tog rezultata.

Voleo bih da vidim preradjen na byacc asistentov primer

<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

Током 5/28/06, Jovanovic Nenad <nenad11@bankerinter.net> је написао:
>
> non terminal Item des;
> ...
> des ::= ID:name {:
> Item res = Util.sem.checkName(name);
> RESULT = res;
> :};
>
>
> Da li bi neko hteo da napise kako ovaj CUP-kod izgleda u Byacc-u,
> narocito prvi red gde se navodi kog je tipa neterminal des? Ovo (vracanje
> Itema kao atributa) mi je potrebno u izrazima, da bih ispitivao
> kompatibilnost tipova.
>
> poz
>
>
>
> [image: Add FUN to your email - CLICK HERE!]
> <http://www.incredimail.com/index.asp?id=54475>
>
> -----------------------------------------------------------------
> unsubscribe:
> minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
> -----------------------------------------------------------------
>
>
>

-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20ri4pp
-----------------------------------------------------------------