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:

Příspěvek od rastik »

Kate píše:kdyz mam globalni promennou, treba x

a hlavicku proc/fce (x: neco), tak predpokladam, ze se v tele te proc/fce ta promenna proste prekryje a bude tam platit ta lokalni (takze to je korektni),
Ano, z parametrov sa stanu lokalne symboly. Je to vidiet v debug vypise.
Kate píše:kdyz mam ale globalni konstantu x (nebo typ x)

a hlavicku (x:neco), tak by to asi melo zahlasit nejakou chybu (nejspis duplicated symbol),nebo ne?
Nie, je to rovnake ako v predchadzajucom pripade - parameter prekryje globalny symbol. Tak je to popisane v http://ulita.ms.mff.cuni.cz/pub/predn/p ... s.html#a13.
lukumo
Matfyz(ák|ačka) level I
Příspěvky: 13
Registrován: 10. 6. 2005 00:38
Typ studia: Informatika Mgr.

Příspěvek od lukumo »

Funguje nekomu nested label? Tedy neco jako:

Kód: Vybrat vše

procedure p;
label 3;
begin
end;
Nemel by ten label byt lokalni? Ja ho ve vypisu vidim jako global ... Delam nekde neco blbe nebo je to normalni?
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 »

takze je treba mozne i napsat:

Kód: Vybrat vše

function f(integer: integer): integer;
s tim, ze uvnitr uz zadnou promennou typu integer nenadeklaruju, protoze jsem prekryla integer jako typ a mam to uz jen jako promennou,jo?

to jsou teda veci :shock: no ale budiz, dam na tvou radu, diky
Člověk si nemusí nic myslet, aby něco udělal.
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 »

lukumo píše:Funguje nekomu nested label? Tedy neco jako:

Kód: Vybrat vše

procedure p;
label 3;
begin
end;
Nemel by ten label byt lokalni? Ja ho ve vypisu vidim jako global ... Delam nekde neco blbe nebo je to normalni?
a v jakem vystupu? v -B nebo v tom xml? ja mam v -B:

Kód: Vybrat vše

G"P" = SKIND_PROCEDURE([])
*** Entering block "P" ***
L"3" = LABEL(3)
*** Leaving block ***
mezi globalnimi labely pak uz ta "3" neni
Člověk si nemusí nic myslet, aby něco udělal.
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 »

Kate píše:takze je treba mozne i napsat:

Kód: Vybrat vše

function f(integer: integer): integer;
s tim, ze uvnitr uz zadnou promennou typu integer nenadeklaruju, protoze jsem prekryla integer jako typ a mam to uz jen jako promennou,jo?
Noooo, asi hej :shock:
Toto sa IMHO riesi vytvorenim zoznamu rezervovanych slov.
lukumo
Matfyz(ák|ačka) level I
Příspěvky: 13
Registrován: 10. 6. 2005 00:38
Typ studia: Informatika Mgr.

Příspěvek od lukumo »

Kate píše:
lukumo píše:Funguje nekomu nested label? Tedy neco

a v jakem vystupu? v -B nebo v tom xml? ja mam v -B:

Kód: Vybrat vše

G"P" = SKIND_PROCEDURE([])
*** Entering block "P" ***
L"3" = LABEL(3)
*** Leaving block ***
mezi globalnimi labely pak uz ta "3" neni
Aha, tak s -B je to v poradku. V xml vystupu je to ale global label (a procedura "P" ma blok "labels" prazdny). Takze asi chyba na strane ulity ....
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 »

rastik píše:
Kate píše:takze je treba mozne i napsat:

Kód: Vybrat vše

function f(integer: integer): integer;
s tim, ze uvnitr uz zadnou promennou typu integer nenadeklaruju, protoze jsem prekryla integer jako typ a mam to uz jen jako promennou,jo?
Noooo, asi hej :shock:
Toto sa IMHO riesi vytvorenim zoznamu rezervovanych slov.
no, ten my ale nemame. je to divny. kazdopadne, co mi prijde jeste divnejsi je, proc se teda ve fcich/procedurach (uvnitr) da prekryt vse globalni (globalni promenne, typy, konstanty), ale labely ne (jejich implicitni kontrola to ohlasi)

Kód: Vybrat vše

program K;
label 1;
const c = 5;
type u = 1..2;
var x : integer;

procedure p; 
label 1;
const c = 6;
type u =2..3;
var x : real; 
begin; 
end;

begin
end.
vystup:

Kód: Vybrat vše

*** Program ***
G"1" = LABEL(1)
G"C" = SKIND_CONST(5,T1)
T4 = RANGE(1,2)
G"U" = SKIND_TYPE(T4)
G"X" = SKIND_GLOBAL_VARIABLE(G0,T1)
G"P" = SKIND_PROCEDURE([])
*** Entering block "P" ***
Error (line 8): Duplicated label '1'
L"C" = SKIND_CONST(6,T1)
T5 = RANGE(2,3)
L"U" = SKIND_TYPE(T5)
L"X" = SKIND_LOCAL_VARIABLE(L1,T2)
*** Leaving block ***
There were some errors 1 and warnings 0
Člověk si nemusí nic myslet, aby něco udělal.
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 »

lukumo píše: Aha, tak s -B je to v poradku. V xml vystupu je to ale global label (a procedura "P" ma blok "labels" prazdny). Takze asi chyba na strane ulity ....
mam to stejne a myslim si, ze s tim moc neudelame :( . vcera jsem se zrovna podivovala nad typy v tom xml - u typu to funguje tak, ze se sice vsechny (i lokalne definovane) sepisou do tagu <types> nahore, ale pak v prislusne fci/proc, kde je lokalni typ, je v <symbols> o nem zminka i se skutecnym jmenem <SKIND_TYPE name="U" type="T2" />, takze vyznam to dava. u tech labelu je tam ale asi mala chybka.
Člověk si nemusí nic myslet, aby něco udělal.
Uživatelský avatar
twoflower
Supermatfyz(ák|ačka)
Příspěvky: 445
Registrován: 22. 9. 2004 21:07
Typ studia: Informatika Ph.D.
Kontaktovat uživatele:

Příspěvek od twoflower »

Kate píše:kazdopadne, co mi prijde jeste divnejsi je, proc se teda ve fcich/procedurach (uvnitr) da prekryt vse globalni (globalni promenne, typy, konstanty), ale labely ne (jejich implicitni kontrola to ohlasi)
To je podle mne proto, ze narozdil od promennych a typu, u kterych je definovana nejaka hierarchie viditelnosti (a pouzitelnosti), label je humus, na ktery se muzes odkazovat odkudkoli kamkoli, takze by mel byt v celem souboru unikatni. Ale jisty si tim nejsem :)
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 »

Kate píše:kazdopadne, co mi prijde jeste divnejsi je, proc se teda ve fcich/procedurach (uvnitr) da prekryt vse globalni (globalni promenne, typy, konstanty), ale labely ne (jejich implicitni kontrola to ohlasi)
Toto sa bohuzial zo syntaktickych diagramov na 100% priamo zistit neda. Ale v Pascale lokalne labely boli a podla diagramov by som to videl, ze by to malo existovat tiez. Ja duplicity nechavam na ulite, nekontrolujem.
Uživatelský avatar
Tacoud
Donátor
Donátor
Příspěvky: 53
Registrován: 16. 9. 2005 08:38
Typ studia: Informatika Bc.
Bydliště: Mladá Boleslav
Kontaktovat uživatele:

Příspěvek od Tacoud »

Kate píše: no, ten my ale nemame. je to divny. kazdopadne, co mi prijde jeste divnejsi je, proc se teda ve fcich/procedurach (uvnitr) da prekryt vse globalni (globalni promenne, typy, konstanty), ale labely ne (jejich implicitni kontrola to ohlasi)
Mně ten tvůj prográmek prošel bez errorů. Zkošel jsem ho přeložit i pod TP 7.0 a také to prošlo.

UPDATE: Stahnul jsem si novejsi verzi ulitackeho projektu a uz to take nefunguje. Omlouvam se vsem, kterym jsem pridelal vrasky
Naposledy upravil(a) Tacoud dne 12. 12. 2006 20:36, celkem upraveno 1 x.
Uživatelský avatar
Tuetschek
Supermatfyz(ák|ačka)
Příspěvky: 657
Registrován: 15. 6. 2005 13:54
Typ studia: Nestuduji ale učím na MFF
Kontaktovat uživatele:

Příspěvek od Tuetschek »

t2 píše: Aku chybu hlasite pri konstrukcii? Ja hodim Not an ordinal type, ale nie som si tym velmi isty.

Kód: Vybrat vše

var a: array[real] of integer; 
Ja hlasim to same ... myslim si ze to je OK, co jinyho by to mohlo byt?

Huh ... clovek to necte par hodin a tady pribydou pomalu 2 stranky :D.
Plug 'n' Pray.
Uživatelský avatar
Tuetschek
Supermatfyz(ák|ačka)
Příspěvky: 657
Registrován: 15. 6. 2005 13:54
Typ studia: Nestuduji ale učím na MFF
Kontaktovat uživatele:

Příspěvek od Tuetschek »

t2 píše:V prilohe nejake moje testy + testy z 3. ulohy co robili na ulite + topfer + dawe
Wow ... diky moc :D! Pridavam maly shellscript ktery to automaticky porovna a do podadresare "!diff", ktery za tim ucelem zalozi, vyplivne vsechno co se lisi. Testoval jsem ho na GnuWin32, ale po drobnych upravach (jmeno mlc.exe) by mel bezet i na Unixu. Predpoklada, ze v nejakem adresari mate ten skript samotny, mlc.exe a ty podadresare s testy a vystupy od t2. Radsi si ho jeste zbezne prolitnete ... nic nekontroluje a prepisuje vsechno!

t2: Jsem cekal ze tech rozdilu bude vic :). Lisime se jenom v nekolika "nadbytecnych" hlaskach navic/namin (vetsinou hlasim vickrat invalid range), coz neni moc podstatny. Ale oba shodne mame v test/test03a.mls nahlasenou proceduru test1 jako duplicitni symbol -- nevis cim to? Jsem slepy nebo to duplicitni byt nema?

No a jinak ja kontroluju duplicitu jmen parametru funkci a povoluju function f( a : array[1..2] of integer ), to jsou jediny ostatni rozdily ... to myslim neni presnejc definovany jak se s tim mame vyporadat :?.
Přílohy
testall.sh.txt
(1.01 KiB) Staženo 83 x
Uživatelský avatar
lavor
Matfyz(ák|ačka) level III
Příspěvky: 121
Registrován: 1. 2. 2005 20:39
Typ studia: Informatika Bc.
Bydliště: kolej 17.11., A1105
Kontaktovat uživatele:

Příspěvek od lavor »

Tuetschek píše: No a jinak ja kontroluju duplicitu jmen parametru funkci a povoluju function f( a : array[1..2] of integer ), to jsou jediny ostatni rozdily ... to myslim neni presnejc definovany jak se s tim mame vyporadat :?.
no v diagrame je identifkator typu a nie typ a podla mna array[x..y] of integer urcite nie je identifikator typu
Milujeme tých, čo nás odmietajú, odmietame tých, čo nás milujú.
miso02
Matfyz(ák|ačka) level I
Příspěvky: 16
Registrován: 12. 2. 2006 19:58

du4g.y : warning C4100: 'ctx' : unreferenced formal par

Příspěvek od miso02 »

du4g.y : warning C4100: 'ctx' : unreferenced formal parameter

Co mam robit s tymto warnignom? Vypisuje to aj niekomu inemu? Nemohli by ste mi poradit ako to riesit?

Pochadza z funkcie na konci suboru du4g.y, ktora bola pridana uz v povodnom projekte:

static void yyerror(unsigned *line, MlaskalCtx *ctx, const char *m)
{
error(DUERR_SYNTAX, *line, m);
}

Dakujem:)
Odpovědět

Zpět na „2006“