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: DU5

Re: DU5

od Petr-H » 10. 1. 2008 13:33

banan píše:Ked uz ste tu nadhodili temu zotavovania z chyb: co robite s dosial naalokovanymi icblockmi ak sa vyskytne fatalna chyba ? Appendujete ich spokojne dalej, explicitne delete-ujete alebo vam jednoducho nevadi memory leak?
Pracuji s nimi dál aniž bych nějak explicitně ošetřoval nastalou situaci :wink:

Re: DU5

od banan » 10. 1. 2008 01:33

ps píše:Já vezmu 1. položku, načtu na vrchol, uložím. Přejdu na 2. položku, načtu, uložím atd.
Je to v pohode - netreba sa strachovat. Urcite viacej setris stack. Na druhej strane neviem, ci si si neskomplikoval predavanie recordov hodnotou (i ked tato feature je az v du6).

Ked uz ste tu nadhodili temu zotavovania z chyb: co robite s dosial naalokovanymi icblockmi ak sa vyskytne fatalna chyba ? Appendujete ich spokojne dalej, explicitne delete-ujete alebo vam jednoducho nevadi memory leak?

Re: DU5

od ps » 10. 1. 2008 01:21

Myslíte si, že je chyba když kopíruju struktury jina než je to dělané ve vzorových výstupech?

Já vezmu 1. položku, načtu na vrchol, uložím. Přejdu na 2. položku, načtu, uložím atd.

Ale v souboru du5-test4.moa vidím, že je to děláno tak že se nejprve všechny položky struktury nahrají na zásobník a pak se teprve všechny uloží.

Mně se tedy více líbí moje řešení, protože šetřím zásobníkem. Jenomže mám kvůli tomu rozdíly v diff soubor MOA.

Re: DU5

od MartinM » 9. 1. 2008 16:42

2 Che, Tacoud: Diky moc

Re: DU5

od Tacoud » 9. 1. 2008 16:09

MartinM píše:Copak delate, kdyz narazite na neplatne operace (INT + STRING, ...) a podobne?
Důležité je zahlásit chybu. Po ohlášení chyby se mezikód vůbec nebude spouštět, takže není potřeba se nějak zotavovat z chybových stavů.

Re: DU5

od Che » 9. 1. 2008 16:05

MartinM píše:Copak delate, kdyz narazite na neplatne operace (INT + STRING, ...) a podobne?
Hlásím chybu (překvapivě ;)) Typicky CANNOTCONVERT. A chybný výraz ignoruju...

Re: DU5

od MartinM » 9. 1. 2008 15:57

Copak delate, kdyz narazite na neplatne operace (INT + STRING, ...) a podobne?

Re: DU5

od rastiq » 8. 1. 2008 23:11

Zalezi na tom v akom poradi inicializujem premenne?

Pismo svate tvrdi:
66: LDLITS LITSTR[2]
67: LLDI [-3]
68: LLDI [-2]
69: LLDI [-1]

Ja mam:
66: LDLITS LITSTR[2]
67: LLDI [-2]
68: LLDI [-1]
69: LLDI [-3]

Mam chybu uz niekde pri spracovavani deklaracie, zase sa mi tam prehadzuju typy.. To ze maju ine indexi asi este nie je katastrofa ale skor by ma zaujimalo ci je to funkcna vada, ked su tam tie premenne inicializovane v inom poradi.. Neskor sa k nim aj tak pristupuje cez LLDx nie?

Re: DU5

od Jochanan » 6. 1. 2008 22:32

dargor píše:dik funguje, jeste by mne zajimalo jakou funkci pouzivate pro kontrolu skutecnych parametru s formalnimi, tzv. jaka funkce vam prozradi, jake parametry volana funkce ocekava, je to tato?

sp->access_function()->parameters()

nebo pouzivate nejakou jinou ?
Presne tahle, dostanes iterator s parametrama a pak jeden po druhym kontroluješ...

Re: DU5

od dargor » 6. 1. 2008 19:02

dik funguje, jeste by mne zajimalo jakou funkci pouzivate pro kontrolu skutecnych parametru s formalnimi, tzv. jaka funkce vam prozradi, jake parametry volana funkce ocekava, je to tato?

sp->access_function()->parameters()

nebo pouzivate nejakou jinou ?

Re: DU5

od Necroman » 6. 1. 2008 15:33

dargor píše:Poradil byste mi prosim nekdo s timhle:
priklad s recordy:
a.b.c
jak ziskam type_pointer na tu posledni polozku, find pres to prvni 'a' mi to nenajde a to druhe 'b' mi hlasi, ze neni SKIND_LOCAL_VARIABLE ani SKIND_GLOBAL_VARIABLE
tak ze nemohu udelat find pres to druhe 'b'
symbol_pointer sp = ctx->tab->find_symbol($1);
tp = sp->access_local_variable()->type();
tp->access_record()->find($3)
type_pointer na prvni record je
tp1 = ctx->tab->find_symbol($1)->access_variable()->type();
do polozky rekordu se dostanes
tp2 = tp1->access_record()->find(S3)->type();
a tak dal...
tp3 = tp2->access_record()->find(S5)->type();

pak se jeste hodi funkce
off = tp1->access_record()->find(S3)->offset();
pro offset v danem rekordu. Nezapominat, ze je treba scitat offset za celu cestu, offset() vraci jen v ramci jedhoho recordu

Re: DU5

od Che » 6. 1. 2008 00:39

dargor píše:Poradil byste mi prosim nekdo s timhle:

priklad s recordy:

a.b.c

jak ziskam type_pointer na tu posledni polozku, find pres to prvni 'a' mi to nenajde a to druhe 'b' mi hlasi, ze neni SKIND_LOCAL_VARIABLE ani SKIND_GLOBAL_VARIABLE

tak ze nemohu udelat find pres to druhe 'b'
symbol_pointer sp = ctx->tab->find_symbol($1);
tp = sp->access_local_variable()->type();
tp->access_record()->find($3)
Pokud a.b.c <=> DUTOK_IDENTIFIER DUTOK_DOT DUTOK_IDENTIFIER DUTOK_DOT DUTOK_IDENTIFIER, pak:

Kód: Vybrat vše

symbol_pointer sp = ctx->tab->find_symbol($1);

// Zde by měla být kontrola zda $1 odpovídá nějakému identifikátoru a pokud ano, zda je to proměnná typu record.

record_pointer rp = sp->access_variable()->type()->access_record();
field_pointer fp = rp->find($3);
if ( !fp ) {
  error(DUERR_NOTFIELD, @3, *$3);
  break;
}

// Zde by opět mělo být ověření, že položka $3 je typu record.

rp = fp->type()->access_record();
fp = rp->find($5);

// A výsledný type_pointer na poslední položku je:
type_pointer tp = fp->type();
Doufám, že to alespoň trochu pomohlo...

Re: DU5

od dargor » 5. 1. 2008 22:40

Poradil byste mi prosim nekdo s timhle:

priklad s recordy:

a.b.c

jak ziskam type_pointer na tu posledni polozku, find pres to prvni 'a' mi to nenajde a to druhe 'b' mi hlasi, ze neni SKIND_LOCAL_VARIABLE ani SKIND_GLOBAL_VARIABLE

tak ze nemohu udelat find pres to druhe 'b'
symbol_pointer sp = ctx->tab->find_symbol($1);
tp = sp->access_local_variable()->type();
tp->access_record()->find($3)

Re: DU5

od Necroman » 4. 1. 2008 22:15

Objevil se dalsi update DU 5. opravuje testy a reseni. Stahujte :)
http://ulita.ms.mff.cuni.cz/pub/predn/P ... index.html

DU5 - update

od Che » 4. 1. 2008 12:29

Včera se objevil update DÚ5 - má řešit některé problémy s RECORDy, třeba zde řešené chybné chování metody record_type::find().

Nahoru