DU4

Ú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.
blabla
Matfyz(ák|ačka) level II
Příspěvky: 70
Registrován: 27. 1. 2010 23:14
Typ studia: Informatika Mgr.

DU4

Příspěvek od blabla »

zdravim,
dost dlho sa uz vyslovene seriem s DU4 ale este stale sa mi ju ani len nepodarilo rozbehat... aby som to skratil a vystihol co sposobuje problem, v du4g.y povedzme ze mam pravidlo:

Kód: Vybrat vše

unsigned_const:	 DUTOK_UINT { $$.type_ = TCAT_INT; }
                                         ;
na tom riadku kde mam ale spomenuty kod pre unsigned_const mi hlasi error:

Kód: Vybrat vše

du4g.y:181.80-81: $$ of `unsigned_const' has no declared type
no ale ved predsa implicitne by mal byt tento unsigned_const typu MlaskalLVal nie...? aspon tak sa mi zda ze sme to mali vysvetlovane na cviku...
este pre jedoduchost, pre prilozeny vstupny subor xx.txt:
xx.txt
(2.52 KiB) Staženo 265 x

mi prikaz:
C:\cygwin\bin\bison.exe -o "D:\xxx.txt" "D:\xx.txt"
akurat ohlasi znova error:
$$ of `unsigned_const' has no declared type
Návštěvník

Re: DU4

Příspěvek od Návštěvník »

to je preto, ze v skole je stary bison, v ktorom je BUG.

riesenie je jednoduche. musis rucne nadefinovat co je akeho typu.
napr:
%type <MlaskalLval> DUTOK_IDENTIFIER DUTOK_OPER_SIGNADD DUTOK_EQ

+ este aj niektore v tvojich vlastnych typov
marxin
Matfyz(ák|ačka) level I
Příspěvky: 45
Registrován: 30. 1. 2008 13:24
Typ studia: Informatika Mgr.

Re: DU4

Příspěvek od marxin »

Zdravím,
programuju DU4 na Linuxu a stává se mi, že při volbě -B a -D se mi liší pořadí výchozích deklarací, tj. například v XML se mi objeví dříve TYP=1..10, než například defaultní věci jako: FALSE, TRUE, nesetkali jste se s tím? Špatně se potom diffuje oproti řešení?

Díky
blabla
Matfyz(ák|ačka) level II
Příspěvky: 70
Registrován: 27. 1. 2010 23:14
Typ studia: Informatika Mgr.

Re: DU4

Příspěvek od blabla »

ano mas pravdu, je tam ine poradie.. aj ked si vsimnes tie ich prilozene .stcd subory, co su vlastne xmlka tak je tam ine poradie v akom by clovek logicky cakal ze sa budu tie veci pridavat.. za logicke poradie povazujem to, v ktorom to vypisuje program s parametrom -B.

ale teda ked to spustis s -D tak by sa tvoj vysledny xml subor mal zhodovat s tymi ich vzorovymi .stcd, aspon v mojom pripade je to tak...
blabla
Matfyz(ák|ačka) level II
Příspěvky: 70
Registrován: 27. 1. 2010 23:14
Typ studia: Informatika Mgr.

Re: DU4

Příspěvek od blabla »

ako ste riesili inak situaciu z du4-test5-d.mls, kde mame funkciu:

Kód: Vybrat vše

function fnc2:int;
begin
end;
??

lebo moja verzia du4g.y sa s tym vysporiadala tak ze ohlasila error o neexistujucom type a potom tuto funkciu vobec nebrala do uvahy, teda ani vo vytvorenom xmlku o nej nie je ani zmienka.. zato ich vzorovy du4-test5-d.stcd to riesil tak ze sa tam ta funkcia objavuje a ako typ sa jej priradil namiesto intu typ T?...

je to vobec dolezite brat do uvahy? asi ked nastane error pri preklade, ten chybajuci typ, tak je ptoom dalej jedno ci tu fnc2 ulozim alebo ignorujem nie?
vishka
Matfyz(ák|ačka) level I
Příspěvky: 2
Registrován: 13. 12. 2010 02:34
Typ studia: Informatika Bc.

Re: DU4

Příspěvek od vishka »

Prisel nekdo na to co delat s prehozenim u definice typu (v xml vystupu) pri volbe -D ? Divam se ze uz to tady nekdo resil ale bez vysledku. Dival jsem se do zdrojaku a typy se prohazuji pri pridani do tabulky promenych pomoci add_var (presneji je to podle me radek 1113 v dutables.cpp, dal jsem se nedostal), me se to zda jako bug v kodu ze zadani ale mozna mam jen nejakou nestastnou chybu ve svem vlastnim kodu. Povedlo se to nekomu opravit nebo se to deje jenom me?
aaaaa

Re: DU4

Příspěvek od aaaaa »

...ale mozna mam jen nejakou nestastnou chybu ve svem vlastnim kodu.
skor by som sa priklanal k tejto variante... tiez mi tie typy do xmlka zapisovalo v roznom poradi ako to mali oni vo vzorovom .stcd subore prisluchajucom k danemu vstupu ale potom sa mi to podarilo vychytat. pomohlo mi ze som si program spustil s -B parametrom a sledoval, ci sa vsetky elementy ukladaju v spravnom poradi, tj ci vstup do funkcii a procedur nastava vtedy ked ma, nacitanie parametrov a lokalnych premennych atd. s parametrom -B to ide v tom poradi ako je zdrojak, ked to spustis s -D tak si to xmlko nejakym sposobom ten program usporiada do ineho poradia, do takeho ako je to ich stcd. samozrejme ked som to odkontroloval zistil som ze chyba bola u mna.

este rada na zaver, program testuj az ked ho budes mat uplne hotovy ak este nemas, ak je len ciastocne hotovy tak poradie nebude spravne
vishka
Matfyz(ák|ačka) level I
Příspěvky: 2
Registrován: 13. 12. 2010 02:34
Typ studia: Informatika Bc.

Re: DU4

Příspěvek od vishka »

Diky za odpoved,
asi me fakt nic jineho nezbyde, nez to dopsat prvni cele, ale i tak me to prohazovani prijde ponekud zvlastni. Btw. pri volbe -B to poradi mam spravne (nebo tak jak by melo logicky byt), takze me to prijde cele jen jako nejaky podivny side effect.
Odpovědět

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