DU4

Odpovědět
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

DU4

Příspěvek od rastik »

Rozumiete niekto zadaniu?
Uživatelský avatar
zapo
Matfyz(ák|ačka) level II
Příspěvky: 64
Registrován: 13. 12. 2004 19:46
Typ studia: Informatika Bc.
Bydliště: VŠK 17. Listopadu
Kontaktovat uživatele:

Příspěvek od zapo »

zda sa mi, alebo tam nikde nevidim zbaleny du4 projekt? :(
@#$%!
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

Okrem vystupu z Doxygen-u tam nic ine nie je. Tak hadam nieco povedia na cvikach.
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

Tak zadanie uz doplnili, casom bude hadam aj projekt. Ale pekne sa nam to zahustuje, to uz 100 alebo 150 bodov bude narocnejsie ziskat :shock:
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

Uz ste to niekto skusali riesit? Cely den som zabil lustenim toho ich kodu, to nema nic spolocne s prekladacmi :x Uz niekolko hodin neviem prist na to, ako ziskam type_pointer pre vytvorenie premennej, pokial viem identifikator typu. Najblizsie co som nasiel je find_symbol, ale jeho vysledok neviem pretransformovat na pozadovany typ. Neviete niekto?
Uživatelský avatar
MyS
Donátor
Donátor
Příspěvky: 178
Registrován: 22. 9. 2004 00:13
Typ studia: Informatika Bc.
Bydliště: The city of Dobříš
Kontaktovat uživatele:

Příspěvek od MyS »

rastik píše:Uz ste to niekto skusali riesit? Cely den som zabil lustenim toho ich kodu, to nema nic spolocne s prekladacmi :x Uz niekolko hodin neviem prist na to, ako ziskam type_pointer pre vytvorenie premennej, pokial viem identifikator typu. Najblizsie co som nasiel je find_symbol, ale jeho vysledok neviem pretransformovat na pozadovany typ. Neviete niekto?
symbol_pointer sp = ctx->tab->find_symbol($1); type_pointer tp = sp->access_type()->type(); ...myslim.
We don't need no education!
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

MyS píše:
rastik píše:Uz ste to niekto skusali riesit? Cely den som zabil lustenim toho ich kodu, to nema nic spolocne s prekladacmi :x Uz niekolko hodin neviem prist na to, ako ziskam type_pointer pre vytvorenie premennej, pokial viem identifikator typu. Najblizsie co som nasiel je find_symbol, ale jeho vysledok neviem pretransformovat na pozadovany typ. Neviete niekto?
symbol_pointer sp = ctx->tab->find_symbol($1); type_pointer tp = sp->access_type()->type(); ...myslim.
Diky za radu. Ja som dosiel iba k tomu access_type().
Uživatelský avatar
MyS
Donátor
Donátor
Příspěvky: 178
Registrován: 22. 9. 2004 00:13
Typ studia: Informatika Bc.
Bydliště: The city of Dobříš
Kontaktovat uživatele:

Příspěvek od MyS »

nz. jinak mi prijde, ze v du4 je strasne nedotazenosti. jsem yaghoba zaspamoval tremi maily, tak jsem zvedav;).
We don't need no education!
Uživatelský avatar
MyS
Donátor
Donátor
Příspěvky: 178
Registrován: 22. 9. 2004 00:13
Typ studia: Informatika Bc.
Bydliště: The city of Dobříš
Kontaktovat uživatele:

Příspěvek od MyS »

No, mailova korespondence se trochu protahla;), ale vysledky jsou rozhodne pouzitelne;).
> narazil jsem na problem s analyzou konstant, nebot jsem nenasel neco
> jako metodu mlc::symbol_tables::add_const_string(). Pritom ve tride
> symbol_tables je nevyuzita polozka type_pointer string_, domnivam se
> tedy, ze tato metoda byla omylem vynechana.

To je pravda, to opravime.

> Take bych se chtel zeptat, co presne znamena "symbolicky
> identifikator".

Symbolicky identifikator v puvodnich diagramech pana Wirtha znamenal
vyctovou konstantu. V nasi zjednodusene verzi ordinalniho typu (viz diagram
3) ovsem vyctovy typ neni, pojem symbolicky identifikator jsme tedy v
diagramu 8 zapomneli zrusit.

> jeste mam problem s metodou
> mlc::symbol_tables::create_array_type(). Jaky typ by se mel dosadit do
> index_type u vicerozmernych poli? Staci ten, ktery vraci metoda
> logical_integer()?

Ne, pro vicerozmerne pole je treba vytvorit vicevrstevnou strukturu
opakovanym volanim create_array_type, a to odzadu, tak aby
'array[1.2,3..4]of T'
odpovidalo
'array[1..2]of array[3..4]of T'
V Mlaskalu by index_type vzdy mel byt range_type, jine varianty (napr bool)
jsou zakazany.

> Rad bych se zeptal, co
> vse je ordinalni typ? Z diagramu a-3 totiz vyplyva, ze jsou to jen
> vycty.

Nikoliv vycty, ale intervaly, tj. range_type.

> V tom pripade ale ze stejneho diagramu plyne, ze typem nikdy
> nemuze byt cele cislo, boolean ani string

Ano, nemuze.

> Pokud by ale na druhou
> stranu byl string ordinalnim typem, slo by napsat napr. "array
> ['jedna'..'dve'] of integer".

Ne, to se nesmi.

> Druhy dotaz se tyka mezi vyctu. Maji se detekovat spatne meze (napr.
> 5..0) a jakou z chyb pripadne hlasit?

Dobra otazka, detekovat by se to melo, chybova hlaska na to ovsem zatim neni
pripravena, napravime to.

> DB> pojem symbolicky identifikator jsme tedy v diagramu 8 zapomneli
> zrusit.
> Kam se tedy radi typ "boolean"? Domnivam se, ze by mel byt soucasti
> diagramu unsigned konstanty, aby bylo mozne napr. psat "if x=true
> then". Bere se tedy jako "identifikator konstanty" v tomto i jinych
> diagramech?

Konstanty "TRUE" a "FALSE" jsou prednaplneny v tabulkach symbolu jako
bool_const_symbol a predpoklada se, ze se k nim prekladac bude chovat
stejne, jako k ostatnim pojmenovanym konstantam definovanym konstrukcemi
jako "const PI=3.14;".
Syntakticky se tedy "TRUE" a "FALSE" chovaji jako identifikator konstanty.

>>> typem nikdy nemuze byt cele cislo, boolean ani string
> DB> Ano, nemuze.
> Maji se tedy zapisy typu "var i:integer;", ktere jsou k nalezeni v
> du4-test1.mls, povazovat za semantickou chybu Type mismatch a tyto
> promenne vubec neregistrovat?

Moje odpoved se vazala na "ordinalni typ" pouzity v deklaraci pole.
V diagramu c. 3 byla chyba v tom, ze to pripoustelo pouze "identifikator
realneho typu", coz jsme nyni preznacili pro "indentifikator typu", a tam se
tedy schovaji odkazy na preddefinovane typy "INTEGER", "BOOLEAN", "REAL" a
"STRING".

> S tim souvisi, zda se ma registrovat a semanticky analyzovat procedura,
> ktera je neplatne definovana, napr. "procedure p(x: neni_to_typ);".

To neni dulezite, muze a nemusi.
We don't need no education!
Uživatelský avatar
Kate
Matfyz(ák|ačka) level III
Příspěvky: 146
Registrován: 8. 1. 2005 10:52
Typ studia: Informatika Mgr.
Bydliště: Milada squat
Kontaktovat uživatele:

Příspěvek od Kate »

MyS píše: symbol_pointer sp = ctx->tab->find_symbol($1); type_pointer tp = sp->access_type()->type(); ...myslim.

tak presne na tomhle mi to z me neznameho duvodu pada

konkretne nekde uvnitr toho find_symbolu, typove vse sedi

type:
DUTOK_IDENTIFIER {
symbol_pointer sp = ctx->tab->find_symbol($1);
...
}

UPDATE:
taky mi zda, jakoby problem byl v tom, ze se do te fce nepreda to, co ma v tu chvili $1 skutecne reprezentovat, ale proste "nic" od spravnyho typu (aspon se to diky MlaskalLval tvari, ze to ma spravny typ)
chjo .... jenže co s tím? :cry:

neresili jste nekdo podobny problem? prece jen mam porad jeste potize se v tom zorientovat
Uživatelský avatar
MyS
Donátor
Donátor
Příspěvky: 178
Registrován: 22. 9. 2004 00:13
Typ studia: Informatika Bc.
Bydliště: The city of Dobříš
Kontaktovat uživatele:

Příspěvek od MyS »

Kate píše:taky mi zda, jakoby problem byl v tom, ze se do te fce nepreda to, co ma v tu chvili $1 skutecne reprezentovat
Asi hloupej dotaz, ale mas tam neco jako tohle?
%token<id_ci_> DUTOK_IDENTIFIER
We don't need no education!
qk
Matfyz(ák|ačka) level III
Příspěvky: 181
Registrován: 24. 2. 2005 10:03
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Příspěvek od qk »

mne to teda chodi, ale sem vetsi prase amam tam
ctx->tab->find_symbol($1)->access_type()->type(); (nejsem si jist ze vsude jsou -> a ne .)
Don't worry, be dead
Uživatelský avatar
Kate
Matfyz(ák|ačka) level III
Příspěvky: 146
Registrován: 8. 1. 2005 10:52
Typ studia: Informatika Mgr.
Bydliště: Milada squat
Kontaktovat uživatele:

Příspěvek od Kate »

MyS píše: Asi hloupej dotaz, ale mas tam neco jako tohle?
%token<id_ci_> DUTOK_IDENTIFIER
trefa :) nejakym zahadnym zpusobem se mi totiz predtim podarilo nevedomky vymazat ty polozky, co v structu MlaskalLval byly uz ze zadani, a pro DUTOK_IDENTIFIER jsem si tam pak vytvorila svoji, ale typu ls_id_index (??? - coz jsem jeste zahadnejsim zpusobem mela zapsane ze cvik) ... ani se nedivim, ze to ve vysledku padalo, byt to naoko typove sedelo.

kazdopadne diky moc za pomoc 8) jdu se prokousavat tim chrchlem zdrojaku dal :lol:
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

MyS píše:
Kate píše:taky mi zda, jakoby problem byl v tom, ze se do te fce nepreda to, co ma v tu chvili $1 skutecne reprezentovat
Asi hloupej dotaz, ale mas tam neco jako tohle?
%token<id_ci_> DUTOK_IDENTIFIER
A je to nutne? V original subore to nebolo a ja pracujem s celou strukturou, bez urcenia presneho pola.
Uživatelský avatar
rastik
Supermatfyz(ák|ačka)
Příspěvky: 661
Registrován: 19. 10. 2005 21:45
Typ studia: Informatika Mgr.
Bydliště: Praha
Kontaktovat uživatele:

Příspěvek od rastik »

Vygeneroval som vystup na testovaci subor prilozeny k projektu. Pokial to niekomu z vas bude davat nieco ine, ozvite sa. Diky.
Přílohy
du4-test1.txt
mlc du4-test1.mls > du4-test1.out
(1.42 KiB) Staženo 222 x
Odpovědět

Zpět na „2006“