• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

Formálne jazyky a preklada?e

Started by mishelka, 16.09.2010, 13:35:34

« predchdzajce - alie »

antil kiprest

#375
co vlastne moze obsahovat ten string ? (ked mam zadanie */)  ma zacinat malym pismenom a po nom mozu nasledovat aj velke pismena aj znaky ako $%# ??
resp akym znakom by mal koncit string??
bravčové krídielka a náhradu sóje poprosím!!

ursus

#376
inac nema niekto 8mu prednasku ? lebo z tej chybaju fotky konkretne 21/28 strana

alebo dobra dusa so skriptami Prekladace?

thx
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

ursus

Quote from: ursus on  25.11.2010, 16:43:12
moze my niekto please vysvetlit ake mnoziny budem posielat do tych dalsich funkcii?

napriklad pre
a->b{"+" b}
b->c["-" b]
c->d["*" d]
d->value | "(" a ")"

okej cize napr pre b

int b(K){
 leftOp = c(??);
 if(blabla){
   ...
   rightOp = b(??);
 }
}
proste ako z gramatiky z fleku urcim co tam mam posielat? thx
najskor asi mierene na miselku kedze pan V. to "zabudol" vysvetlit
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

FRODO

Quote from: antil kiprest on  28.11.2010, 01:27:17
co vlastne moze obsahovat ten string ? (ked mam zadanie */)  ma zacinat malym pismenom a po nom mozu nasledovat aj velke pismena aj znaky ako $%# ??
resp akym znakom by mal koncit string??
musi zacinat malym pismenom a potom to uz je jedno ake znaky pojdu... a konci to ako cislo bud tam das znamienko alebo enter a tym ukoncis vstup... :-)))

antil kiprest

Quote from: FRODO on  28.11.2010, 04:10:38
Quote from: antil kiprest on  28.11.2010, 01:27:17
co vlastne moze obsahovat ten string ? (ked mam zadanie */)  ma zacinat malym pismenom a po nom mozu nasledovat aj velke pismena aj znaky ako $%# ??
resp akym znakom by mal koncit string??
musi zacinat malym pismenom a potom to uz je jedno ake znaky pojdu... a konci to ako cislo bud tam das znamienko alebo enter a tym ukoncis vstup... :-)))

cize hocijake znaky okrem * a / tam mozu byt jo?? ale ono je to vlastne fuk.. do zdrojaku mi cumiet aj tak nebude.. spravim na velke a male pismena a mf...  :)

bravčové krídielka a náhradu sóje poprosím!!

cenki

Quote from: ursus on  28.11.2010, 02:09:17
Quote from: ursus on  25.11.2010, 16:43:12
moze my niekto please vysvetlit ake mnoziny budem posielat do tych dalsich funkcii?

napriklad pre
a->b{"+" b}
b->c["-" b]
c->d["*" d]
d->value | "(" a ")"

okej cize napr pre b

int b(K){
 leftOp = c(??);
 if(blabla){
   ...
   rightOp = b(??);
 }
}
proste ako z gramatiky z fleku urcim co tam mam posielat? thx
najskor asi mierene na miselku kedze pan V. to "zabudol" vysvetlit
Podla pana V. som pri odovzdavani pochopil ze:
a->b(H_b|E PLUS|K){"+" b(K)}
b->c(H_b|E MINUS|K)["-" b(K)]
c->d(H_d|E MUL|K)["*" d(K)]
d->value | "(" a(E RPAR|K) ")"

antil kiprest

Quote from: cenki on  28.11.2010, 04:32:47
Quote from: ursus on  28.11.2010, 02:09:17
Quote from: ursus on  25.11.2010, 16:43:12
moze my niekto please vysvetlit ake mnoziny budem posielat do tych dalsich funkcii?

napriklad pre
a->b{"+" b}
b->c["-" b]
c->d["*" d]
d->value | "(" a ")"

okej cize napr pre b

int b(K){
 leftOp = c(??);
 if(blabla){
   ...
   rightOp = b(??);
 }
}
proste ako z gramatiky z fleku urcim co tam mam posielat? thx
najskor asi mierene na miselku kedze pan V. to "zabudol" vysvetlit
Podla pana V. som pri odovzdavani pochopil ze:
a->b(H_b|E PLUS|K){"+" b(K)}
b->c(H_b|E MINUS|K)["-" b(K)]
c->d(H_d|E MUL|K)["*" d(K)]
d->value | "(" a(E RPAR|K) ")"


a co je to H_b a H_d ???
bravčové krídielka a náhradu sóje poprosím!!

cenki

Uf, to presne neviem :D ale ak mas:
SetType H_Term = E VALUE | E LPAR;
a potom:
#define H_Div H_Term
#define H_Mul H_Div
#define H_Expr H_Mul
tak takto.

antil kiprest

Quote from: cenki on  28.11.2010, 04:50:51
Uf, to presne neviem :D ale ak mas:
SetType H_Term = E VALUE | E LPAR;
a potom:
#define H_Div H_Term
#define H_Mul H_Div
#define H_Expr H_Mul
tak takto.

heh.. no neviem to zas zavisi od gramatiky.. ale to Ti vazne vravel vaclavik ze takto to ma byt?? myslim ten priklad predtym...
odhliadnuc od tych mnozin H_... aspon tie b-cka

a->b(H_b|E PLUS|K){"+" b(K|E PLUS)}
b->c(H_b|E MINUS|K)["-" b(K|E MINUS)]
c->d(H_d|E MUL|K)["*" d(K)]
d->value | "(" a(E RPAR|K) ")"

dla mna
bravčové krídielka a náhradu sóje poprosím!!

cenki

Ono problem s tym ze ujo V toho vela nepovedal a vyhodil cele skupiny... a jednemu vravel ze ma byt tak druhemu tak... ta na ICQ zistujem komu co povedal. :D

antil kiprest

niekto vazne keby ste mali 27/28 slide z osmej prednasky bol by som velmi vdacny
bravčové krídielka a náhradu sóje poprosím!!

Shwollo

nespravil by mi niekto 4. zadanie? zaplatím
nepíšte mi SS - radšej mi píšte mail. (tá obálka pod mojim avatarom :)))

revelc

#387
Robim zadanie 4 podla tych Kollarovych prezentacii a mam taky problem. Asi mam uz vsetko nakodene ako ma byt  :j_undecided:. Funguje mi aj ked v main -e zavolam printTree(Expr()); (pri vstupe napr. 2*3*4 vypise: * 2 * 3 4)

Problem je ze neviem ako mam transformovat ten polymorfny strom na monomorfny, skusal som v tych funkciach(Expr, Mul, Term) volat TypeCheck(tree) a potom Evaluate(tree) ale pretransformuje mi to len jeden podstrom (napr. vstup 2*3*4 (asoc. sprava) : v 3*4 mi zmeni to polymorfne krat(MUL_OP) na int krat(MUL_INT_OP), ale dalsie krat uz to nezmeni, cize vypocet vyrazu bude 12).
Kedy a kde vlastne to Evaluate a TypeCheck treba v kode volat?
Vdaka

EDIT: a este otazka, ak idem napr. nasobit int*float ma to vyhodit Type Error ? Ci iba pri string*int (resp. string*float) ?
Čo môžeš urobiť dnes odlož na pozajtra a ziskaš deň voľna.

"I'm a man of simple tastes. I enjoy dynamite...and gunpowder...and gasoline! "

antil kiprest

Quote from: revelc on  28.11.2010, 19:40:19
Robim zadanie 4 podla tych Kollarovych prezentacii a mam taky problem. Asi mam uz vsetko nakodene ako ma byt  :j_undecided:. Funguje mi aj ked v main -e zavolam printTree(Expr()); (pri vstupe napr. 2*3*4 vypise: * 2 * 3 4)

Problem je ze neviem ako mam transformovat ten polymorfny strom na monomorfny, skusal som v tych funkciach(Expr, Mul, Term) volat TypeCheck(tree) a potom Evaluate(tree) ale pretransformuje mi to len jeden podstrom (napr. vstup 2*3*4 (asoc. sprava) : v 3*4 mi zmeni to polymorfne krat(MUL_OP) na int krat(MUL_INT_OP), ale dalsie krat uz to nezmeni, cize vypocet vyrazu bude 12).
Kedy a kde vlastne to Evaluate a TypeCheck treba v kode volat?
Vdaka

EDIT: a este otazka, ak idem napr. nasobit int*float ma to vyhodit Type Error ? Ci iba pri string*int (resp. string*float) ?

polymorfny na monomorfny trasformujes v TypeCheck(tree)... v maine najprv volas expr(), to Ti vrati tree.. mozes si to ulozit do premennej.. potom zavolas (tiez v maine) TypeCheck(tree).. to Ti prerobi strom na monomorfny a vrati Ti typ.. nakoniec volas (opat v maine) Evaluate(tree) to Ti vyhodnoti strom a vrati monotype* cell.. co je vlastne vysledok...   

mimochodom s kym mas cvika?? my sme napriklad float ani nemali... iba int a string.. v kazdom pripade pri nekompatibilnych typoch by Ti mal typeCheck vratit typ AnyType...
bravčové krídielka a náhradu sóje poprosím!!

antil kiprest

Quote from: eminkaa on  28.11.2010, 20:06:41
niektore skupiny maju v zadani c. 4 aj pracu s typom float, nic zlozite

jasne ze nie..  a printTree je tiez sucast zadania??  my sme to cele zadanie mali od vaclavika podane iba ustne a na nic take si nespominam  ???
bravčové krídielka a náhradu sóje poprosím!!

antil kiprest

Quote from: eminkaa on  28.11.2010, 20:24:39
ano, treba sa potrapit aj s printom.

no ok, a ako ma teda vyzerat vypis stromu napriklad pre ten spomenuty vyraz 2*3*4 ?
bravčové krídielka a náhradu sóje poprosím!!

revelc

antil kiprest: diky, asi uz to ide... hadzalo mi to blbe vysledky lebo som volal printTree(Expr());  ,pricom som si mal ulozit do premennej tree=Expr(); a az potom printTree(tree);

A este ako ma vyzerat ta dokumentacia?
Čo môžeš urobiť dnes odlož na pozajtra a ziskaš deň voľna.

"I'm a man of simple tastes. I enjoy dynamite...and gunpowder...and gasoline! "

antil kiprest

Quote from: revelc on  28.11.2010, 21:03:30
antil kiprest: diky, asi uz to ide... hadzalo mi to blbe vysledky lebo som volal printTree(Expr());  ,pricom som si mal ulozit do premennej tree=Expr(); a az potom printTree(tree);

A este ako ma vyzerat ta dokumentacia?

dokumentacia?  ;D to fakt neviem.. co take by tam akoze malo byt??
bravčové krídielka a náhradu sóje poprosím!!

revelc

QuoteDokumentácia (podľa prednášok): 
o  Formálny zápis typovej kontroly
o  Špecifikácia typovej kontroly (rozpísať triedy operácií)

Co to je Formalny zapis typovej kontroly ?  :D Tie cudne veci v prednaske co je medzi nimi ciara ?   ;D
Čo môžeš urobiť dnes odlož na pozajtra a ziskaš deň voľna.

"I'm a man of simple tastes. I enjoy dynamite...and gunpowder...and gasoline! "

antil kiprest

Quote from: revelc on  28.11.2010, 21:18:24
QuoteDokumentácia (podľa prednášok): 
o  Formálny zápis typovej kontroly
o  Špecifikácia typovej kontroly (rozpísať triedy operácií)

Co to je Formalny zapis typovej kontroly ?  :D Tie cudne veci v prednaske co je medzi nimi ciara ?   ;D

bu  to fakt treba??  bu neznasam dokumentaciu! ta nic no idem to pozriet....  ;D
bravčové krídielka a náhradu sóje poprosím!!

cenki

BTW. este k 3tej pisomke:
Gramatika:
a ["*" b]
c {"/" d}
bude:
a(E MUL|H_b|K)
b(K)
c(H_Div|H_d|K)
d(H_Div|H_d|K) alebo d(H_d|K) alebo d(K) // ak su tam zatvorky {}
??? Lebo sa nam trochu rozchadzaju nazory na toto :)

ursus

nehehe, ceeelebration !  :ropebanana: :ropebanana:, dajte kiprestovi medajlu
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

antil kiprest

;D ;D


Quote from: cenki on  28.11.2010, 22:18:44
BTW. este k 3tej pisomke:
Gramatika:
a ["*" b]
c {"/" d}
bude:
a(E MUL|H_b|K)
b(K)
c(H_Div|H_d|K)
d(H_Div|H_d|K) alebo d(H_d|K) alebo d(K) // ak su tam zatvorky {}
??? Lebo sa nam trochu rozchadzaju nazory na toto :)

zase tie tajomne mnoziny first a follow  :metal: ocividne nikto tomu poriadne nerozumie... alebo ste skupi na know-how?? ;D
bravčové krídielka a náhradu sóje poprosím!!

antil kiprest

ok takze doku...

mam polymorfne MUL_OP (nasobenie, zretazenie)
formalny zapis typovej kontroly by mohol byt nejak takto

MUL_OP: MUL(a,b) => a x b -> T(a,b) E1 : T1  E2 : T2
----------------------------------------------------
             MUL_OP(T1, T2) E : T(T1, T2)

???   nejake namietky, navrhy?? opravte ma ked viete
bravčové krídielka a náhradu sóje poprosím!!

sulo

Quote from: cenki on  28.11.2010, 22:18:44
BTW. este k 3tej pisomke:
Gramatika:
a ["*" b]
c {"/" d}
bude:
a(E MUL|H_b|K)
b(K)
c(H_Div|H_d|K)
d(H_Div|H_d|K) alebo d(H_d|K) alebo d(K) // ak su tam zatvorky {}
??? Lebo sa nam trochu rozchadzaju nazory na toto :)

Pre: X → C {"/" D}
bude volanie pre D:
D(E DIV | H_D | K);

Lebo po D-čku môžu vrámci pravidla X nasledovať ďalšie "/" a D-čka, keďže je tam cyklus {}.
Pre podmienku [] by už bolo len K.