Author Topic: Formálne jazyky a preklada?e  (Read 144177 times)

antil kiprest

  • Full Member
  • ***
  • Posts: 159
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #400 on: 29.11.2010, 01:25:49 »
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:
Code: [Select]
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.

ok a co presne je to H_d ?? co sa tam nachadza?
bravčové krídielka a náhradu sóje poprosím!!

sulo

  • Sr. Member
  • ****
  • Posts: 284
    • View Profile
    • Web
Re: Formálne jazyky a preklada?e
« Reply #401 on: 29.11.2010, 01:36:36 »
Všetky terminálne symboly, ktoré sa môžu vyskytnúť na začiatku D-čka.

Napr.:
D → (Y | "plus") "value"
Y → ["div"] "minus" "mul"

Najprv určíme H_Y, lebo ho budeme potrebovať pri D-čku:
H_Y = E DIV | E MINUS;

A potom pre samotné D:
H_D = H_Y | E PLUS;

Safyia

  • Hero Member
  • *****
  • Posts: 1328
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #402 on: 29.11.2010, 01:41:11 »
Všetky terminálne symboly, ktoré sa môžu vyskytnúť na začiatku D-čka.

Napr.:
D → (Y | "plus") "value"
Y → ["div"] "minus" "mul"

Najprv určíme H_Y, lebo ho budeme potrebovať pri D-čku:
H_Y = E DIV | E MINUS;

A potom pre samotné D:
H_D = H_Y | E PLUS;
To sa nepytame... To vieme... Ale ked mas dade po sipke nieco, ako cenki daval priklad, radsej ten povedz :D

sulo

  • Sr. Member
  • ****
  • Posts: 284
    • View Profile
    • Web
Re: Formálne jazyky a preklada?e
« Reply #403 on: 29.11.2010, 01:51:23 »
Tri príspevky vyššie...  :D

ursus

  • Hero Member
  • *****
  • Posts: 595
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #404 on: 29.11.2010, 02:57:33 »
sulo-man, plz vyries toto

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

thx a lot
So this router walks into the doctor’s office…
- Doctor, it hurts when IP.

cenki

  • Guest
Re: Formálne jazyky a preklada?e
« Reply #405 on: 29.11.2010, 02:58:32 »
thx sulo, konečne dakto kto ujasnil a nie len my čo sme odhadovali myšlienkové pochody nášho pána cvičiaceho.
od ursus:
a->b{"+" b}            //bude: b(PLUS|H_b|K), b(PLUS|H_b|K)
b->c["-" b]             //bude: c(MINUS|H_b|K), b(K)
c->d["*" d]            //bude: d(MUL|H_d|K), d(K)
d->value | "(" a ")"  //bude: a(RPAR)
Takto?
« Last Edit: 29.11.2010, 03:03:20 by cenki »

antil kiprest

  • Full Member
  • ***
  • Posts: 159
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #406 on: 29.11.2010, 03:07:23 »
thx sulo, konečne dakto kto ujasnil a nie len my čo sme odhadovali myšlienkové pochody nášho pána cvičiaceho.
od ursus:
a->b{"+" b}            //bude: b(PLUS|H_b|K), b(PLUS|H_b|K)
b->c["-" b]             //bude: c(MINUS|H_b|K), b(K)
c->d["*" d]            //bude: d(MUL|H_d|K), d(K)
d->value | "(" a ")"  //bude: a(RPAR)
Takto?


jj tiez si myslim akurat

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

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

revelc

  • Sr. Member
  • ****
  • Posts: 275
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #407 on: 29.11.2010, 03:11:02 »
thx sulo, konečne dakto kto ujasnil a nie len my čo sme odhadovali myšlienkové pochody nášho pána cvičiaceho.
od ursus:
a->b{"+" b}            //bude: b(PLUS|H_b|K), b(PLUS|H_b|K)
b->c["-" b]             //bude: c(MINUS|H_b|K), b(K)
c->d["*" d]            //bude: d(MUL|H_d|K), d(K)
d->value | "(" a ")"  //bude: a(RPAR)
Takto?

Takto

a->b{"+" b}            //bude: b(PLUS|H_b|K), b(PLUS|H_b|K)
b->c["-" b]             //bude: c(MINUS|H_b|K), b(K)
c->d["*" d]            //bude: d(MUL|H_d|K), d(K)
d->value | "(" a ")"  //bude: a(RPAR | K)
Č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

  • Full Member
  • ***
  • Posts: 159
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #408 on: 29.11.2010, 03:14:12 »
thx sulo, konečne dakto kto ujasnil a nie len my čo sme odhadovali myšlienkové pochody nášho pána cvičiaceho.
od ursus:
a->b{"+" b}            //bude: b(PLUS|H_b|K), b(PLUS|H_b|K)
b->c["-" b]             //bude: c(MINUS|H_b|K), b(K)
c->d["*" d]            //bude: d(MUL|H_d|K), d(K)
d->value | "(" a ")"  //bude: a(RPAR)
Takto?

Takto


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

si si tym isty?? ja by som tam K neposielal... v K mas totiz uz od mainu aj SEOF a ked to a-cko volas ked Ti pride "(" .. no a potom predsa nemozes len tak dostat SEOF kym sa Ti neuzavrie zatvorka... okrem toho ostatne symboly sa Ti do K znovu postupne nazbieraju...  ale opravte ma ked sa mylim
bravčové krídielka a náhradu sóje poprosím!!

cenki

  • Guest
Re: Formálne jazyky a preklada?e
« Reply #409 on: 29.11.2010, 03:15:43 »
...
si myslim

Radšej nemyslieť... môžeš odôvodniť prečo tak ?
napr.: c->d(E MUL | H_D | K)["*" d(H_D | K)], prečo dávaš i H_D v prvom d()? A prečo H_D v druhom d()?
to revelc: jo K na konci tiež, som zabudol.

antil kiprest

  • Full Member
  • ***
  • Posts: 159
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #410 on: 29.11.2010, 03:18:52 »
cenki, jedine v tom pripade mas totiz neasociativnu operaciu (*).. to vyplyva z gramatiky.. a ked sa Ti uz raz vyskytne * tak ho dalej uz neocakavas... cize neposielas E MUL do druheho d ...


ale to K na konci mi vysvetlite preco to nevadi, ked si za tym tak stojite  ;D
bravčové krídielka a náhradu sóje poprosím!!

antil kiprest

  • Full Member
  • ***
  • Posts: 159
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #411 on: 29.11.2010, 03:26:56 »
mimochodom H_D = H_C = H_B = H_A = E LPAR | E VALUE pokial sa nemylim...

ta kde je sulo? kto teraz vynesie rozsudok?
bravčové krídielka a náhradu sóje poprosím!!

LubomirR

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #412 on: 29.11.2010, 04:15:41 »
A -> B {"+" B}

Za prvým B môžu nasledovať plus a B, teda:
B(E PLUS | H_B | K);
Za druhým B môžu nasledovať opäť plus a B, pretože {} môže zabezpečiť ďalšie opakovanie (+ B + B + B...) a ak by chýbalo napr. plus, tak sa zrecoveruje vďaka tomu, že vo while sa testuje, či je aktuálny symbol z (E PLUS | H_B), nie len E PLUS.
B(E PLUS | H_B | K);

B -> C [ "-" B ]

Za C sa dáva len mínus. Nemalo by zmysel dávať do množiny aj H_B, pretože ak by sme dali aj H_B a bolo by vynechané mínus a vďaka nejakému erroru by aj prišlo k začiatku B, tak aj tak nám to nepomôže, lebo volanie B je v ife, ktorý sa celý nevykoná. (Na toto sme sa boli pýtať priamo Kollára, je to podobné ako A -> B ( c d e | f g h ) C - tu sa B zavolá s E c | E f | H_C | K.)
C(E MINUS | K);
Za posledným B už nejde nič (v tomto pravidle):
B(K);

C -> D [ "*" D ]

Podobne ako predchádzajúce:
D(E MUL | K);
D(K);

D -> value | "(" A ")"

Tu bude switch, v default bude error s K (pozor, tu mal Kollár v niektorých príkladoch chybu, dal tam aj E VALUE a E LPAR).
Za A ide len RPAR, čiže:
A(E RPAR | K);

Quote from: antil kiprest
no a potom predsa nemozes len tak dostat SEOF kym sa Ti neuzavrie zatvorka...

To SEOF musí ísť do každého erroru už len kvôli tomu, aby sa ukončil ten while v errore, keď sa narazí na SEOF. Aby si nevolal getsymbol aj vtedy, keď už nie sú dostupné ďalšie symboly.
"Microsoft would have us believe that helping your neighbour is the moral equivalent of attacking a ship."
-- Richard Stallman

XMPP: lubomirr@jabbim.sk

antil kiprest

  • Full Member
  • ***
  • Posts: 159
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #413 on: 29.11.2010, 05:17:13 »
ok.. mmnt .. takze tam ako mam ten while { + B +B + B}, ked niekde bude chybat + tak sa to zotavi na VALUE alebo LPAR ?? ked je to tak, tak som ani zadanie spravne nepochopil ;D
ale inac chlape teraz si ma uz uplne poplietol... ja mam ten kod asi uplne inak ako ma byt ;D  napr vo while v error mam v podmienke aj symbol!=SEOF a v tych ostatnych funkciach posielam kde co...funguje mi to pekne, vypisuje co kde chyba, ale co z toho ked ten test aj tak asi nedam... to mam za to ze k tomu pristupujem intuitivne a nie podla ucebnic hehe... potom som mimo hry v takychto veciach
bravčové krídielka a náhradu sóje poprosím!!

LubomirR

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #414 on: 29.11.2010, 05:39:15 »
ok.. mmnt .. takze tam ako mam ten while { + B +B + B}, ked niekde bude chybat + tak sa to zotavi na VALUE alebo LPAR ?? ked je to tak, tak som ani zadanie spravne nepochopil ;D
ale inac chlape teraz si ma uz uplne poplietol... ja mam ten kod asi uplne inak ako ma byt ;D  napr vo while v error mam v podmienke aj symbol!=SEOF a v tych ostatnych funkciach posielam kde co...funguje mi to pekne, vypisuje co kde chyba, ale co z toho ked ten test aj tak asi nedam... to mam za to ze k tomu pristupujem intuitivne a nie podla ucebnic hehe... potom som mimo hry v takychto veciach

K tomu while ti skúsim napísať príklad, snáď je správne.

Code: [Select]
/* A -> B {"+" B} */
int a(SetType K) {
  int left, right;
  left = b(E PLUS | H_B | K);

  check(n, E PLUS | H_B | K);
  while ((E symbol) & (E PLUS | H_B)) {
    if (symbol == PLUS) {
      getsymbol();
    } else {
      error(n, E PLUS | H_B | K);
    }
    right = b(E PLUS | H_B | K);
    left += right;

    check(n, E PLUS | H_B | K);
  }

  return left;
}

To SEOF nemusíš dávať nikde (len raz pri volaní A z mainu), lebo sa ti vďaka K dostane všade.
"Microsoft would have us believe that helping your neighbour is the moral equivalent of attacking a ship."
-- Richard Stallman

XMPP: lubomirr@jabbim.sk

pisti17

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #415 on: 29.11.2010, 23:53:18 »
ako ma vyzerat ta dokumentacia na 4zadanie???

neucilasom

  • Full Member
  • ***
  • Posts: 204
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #416 on: 30.11.2010, 17:16:40 »
Ak kreslim syntakticky strom a mam vyraz 3+4-5+9+10 a mam - ma prioritu 1 a + 2  a vsetko je bez asociativity z toho vyjde ze najprv sa urobi 4-5 a potom k tomu pripocitame 3 a ostatne sa odignoruje a uz sa nekresli?

neucilasom

  • Full Member
  • ***
  • Posts: 204
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #417 on: 30.11.2010, 17:58:29 »
No ale ja som to myslela ako na pisomke nie v programe.

fazy

  • Newbie
  • *
  • Posts: 11
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #418 on: 30.11.2010, 18:19:45 »
Len tak zo zvedavosti robi este dakto zadania?

INKOGNITTO

  • Newbie
  • *
  • Posts: 31
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #419 on: 01.12.2010, 02:24:36 »
Nooo, aj ja by som potreboval do stvrtka mat FJAP 4 / 15. Kto si chce zarobit ? :)

asmodeus

  • Newbie
  • *
  • Posts: 13
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #420 on: 01.12.2010, 09:19:10 »
Quote
Pre stredajsiu skupinu:
Zadanie c. 4 bude odovzdavane v 12. tyzdni, teda 08.12.2010 o 15,55 v pc16.
to znamena, ze aj bleskovka bude v 12. tyzdni?

asmodeus

  • Newbie
  • *
  • Posts: 13
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #421 on: 01.12.2010, 16:54:59 »
dakujem

SOGOR

  • Newbie
  • *
  • Posts: 18
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #422 on: 01.12.2010, 20:41:02 »
Nenajde sa nejaka dobra dusa co ma 27 stranu 8. prednasky a nepodeli sa o nu s nami?

Petrinho

  • Newbie
  • *
  • Posts: 32
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #423 on: 02.12.2010, 00:49:12 »
Viete co vam poviem, trebalo by mi "poradit" so zadanim 3,4 ...verzia 15 :)
Kto by bol ochotny? Financna odmena je samozrejmostou.
mizu.kolotocar@gmail.com

 

Nasher

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Formálne jazyky a preklada?e
« Reply #424 on: 02.12.2010, 01:12:57 »
Nasiel by sa este niekto, co by mi urobil zadania 3 a 4? Zaplatim.
Kontakt cez PM alebo mischesn@gmail.com.
Dik moc.