2008/09 - DU5

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: 2008/09 - DU5

Re: 2008/09 - DU5

od lukas.hermann » 17. 12. 2008 00:30

Ahoj,

tak to nás je víc, kdo má tento problém. Chyba je přímo v infrastrukutuře v dutables.cpp na řádcích 1540 a 1544. Visual Studio k tomu dokonce hlásí warningy. Už jsem napsal Yaghobovi a Bednárkovi, tak snad bude brzy update.

EDIT 20:00: Na stránkách přednášky se již objevilo opravené zadání.

2008/09 - DU5

od Pz » 11. 12. 2008 18:09

Ahoj,
uz druhy den jsem zaseknuty na pitome chybe, tak se chci zeptat, jestli nekdo na neco takoveho uz taky narazil.

Pri parsovani zdrojaku (z prvniho testu)

function multiply(i, j:integer) : integer;
begin
multiply := i*j;
end;

mi zlobi vyhledani parametru i a j uvnitr kodu funkce. Maji se chovat jako lokalni promenne (cili pri vyhledani
ctx->tab->find_symbol($1)->access_typed()->type() je vracen SKIND_LOCAL_VARIABLE). To jeste jde (=funguje).

Kdyz ale chci ziskat offset adresy i nebo j, vzdy dostanu -1 (coz pro j je spravne, i ma ale vracet -2).
Source (osekany pro prehlednost):

symbol_pointer ptr = ctx->tab->find_symbol($1.id_ci_);
switch (ptr->kind())
{
case SKIND_LOCAL_VARIABLE:
$$.code->append_instruction(new ai::LSTI(ptr->access_local_variable()->address()));
break;
.. atd.

Problem je, ze ptr->access_local_variable()->address() vraci prave porad -1. Zkousel jsem i access_variable(), ale se stejnym
vysledkem. Nefunguje ani s vetsim mnozstvim parametru (vsechny dostanou -1). A co je nejhorsi, spolubydlovi, ktery PP delal
loni, to funguje dobre - a ani s jeho zdrojakem jsem nebyl schopny najit chybu (ma to prakticky stejne jako ja).

Predem dodavam - skutecne vyhledavam spravne promenne (I a J), to jsem overoval snad 100x.

Uz jsem psal i cvicicimu, zatim bez odpovedi.

Kdyby nekdo vedel co s tim, tak mu slozim kratsi symfonii.

Nahoru