DU4 - deklarace poli

Úvodní kurz překladačů se soustřeďuje zejména na teoretické i praktické základy konstrukce přední části překladače. Součástí předmětu je i cvičení zaměřující se na základy práce s nástroji pro konstrukci překladačů. Po absolvování tohoto kurzu bude posluchač schopen sestrojit vlastní překladač do mezikódu nebo jiného jazyka.
Dusan

DU4 - deklarace poli

Příspěvek od Dusan »

Ahoj,

symbolicke tabulky se v mem programu chovaji velmi divne pri deklaraci pole. Premyslim o tom uz tyden a protoze se termin odevzdani rychle blizi a ja jsem porad nezjistil, kde mam chybu, obracim se sem, jestli nekdo nemate podobny problem.

Kdyz deklaruju promennou ordinalniho typu, napr.

Kód: Vybrat vše

var i = 1..10;
,

je vse v poradku - v sekci types se mi objevi odpovidajici RANGE zaznam a v symbols spravny zaznam pro globalni promennou.
Kdyz ale deklaruju promennou typu pole, napr.

Kód: Vybrat vše

var i = array[1..10] of integer;
,

v sekci types se mi neobjevi nic (ani typ 1..10) a v sekci symbols dostanu globalni promennou typu T?.
Pritom pravidla Bisona se volaji ve spravnem poradi (nejprve se zanese do tabulek ordinalni typ, pak pole), jenze nakonci jsou tabulky prazdne.

Mate nekdo podobny problem nebo napad, cim by to mohlo byt?
Diky Dusan
Schiroo
Matfyz(ák|ačka) level I
Příspěvky: 28
Registrován: 1. 2. 2006 13:54
Typ studia: Informatika Bc.
Bydliště: Praha

Re: DU4 - deklarace poli

Příspěvek od Schiroo »

Mám podezření, že se mi range neukládala do typů, dokud jsem k ní nevytvořil pole (nebo neměl proměnnou jejího typu), což by vysvětlilo, že v tabulce není range. Tipuju, že se type_pointer na range někde v gramatice nepředává a nedoputuje až k volání create_array_type, proto se nevytvoří pole. Zkus si vypsat, co do funkce create_array_type skutečně posíláš.
May the source be with you!
Dusan

Re: DU4 - deklarace poli

Příspěvek od Dusan »

Ahoj,

problem vyresen. Do funkce create_array_type jsem sice predaval parametry v poradku (tam jsem to taky testoval a snazil se najit chybu), ale ze strukturovaneho typu do typu jsem type_pointer predat zapomnel. Proto se do tabulek nezanesl spravne udaj o typu promenne a proto nejspise taky zmizel v dane situaci nepotrebny deklarovany typ pole a tim padem i rozsahu.

Diky za nakopnuti spravnym smerem,
Dusan
Odpovědět

Zpět na „SWI098 Principy překladačů“