• 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

« predchádzajúce - ďaląie »

antil kiprest

Quote from: Mike on  17.01.2011, 00:40:55
takze ak napriklad mam   A->aBCdeF|aBCd, vieme ze to nie je gramatika LL(1) lebo v jednom riadku nemoze byt viac krat ten isty terminalny symbol

do LL(1) vyberiem pred zatvorku aBCd a vyjde mi co ...

A-> aBCd ( eF| ? )


A-> aBCd [eF]   dla mna
bravčové krídielka a náhradu sóje poprosím!!

OsamelyVlk

Quote from: elros on  17.01.2011, 00:40:39
asi to bude nejaky LL(k) jazyk,..

a to nemoze byt uz jazyk LL(1) ale s tym ze overuje len nase znalosti na prefixy v LL1 ?
akoze chytaak.

OsamelyVlk

Quote from: antil kiprest on  17.01.2011, 00:42:33
Quote from: Mike on  17.01.2011, 00:40:55
takze ak napriklad mam   A->aBCdeF|aBCd, vieme ze to nie je gramatika LL(1) lebo v jednom riadku nemoze byt viac krat ten isty terminalny symbol

do LL(1) vyberiem pred zatvorku aBCd a vyjde mi co ...

A-> aBCd ( eF| ? )


A-> aBCd [eF]   dla mna


Ja by som to tiez tak dal.

elros

LL1 to nemoze byt, lebo to 1 znamena, ze musis vediet na zaklade 1 vstupu, ze co mas robit,.. a tam si mal 2 moznosti

a tamto by som tiez dal A-> aBCd [eF]

antil kiprest

4)Rezimy semantickej analyzy vymenovat a popisat. Tabulka pre semanticku analyzu - vymenovat polozky a popisat.

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

elros

Quote from: antil kiprest on  17.01.2011, 00:41:14

postfix by mal byt :  ab+c+de+*f/

a prefix??



ak je tamto postfix,.. tak prefix by mal byt   /*++abc+def

Mike

Quote from: antil kiprest on  17.01.2011, 00:50:00
4)Rezimy semantickej analyzy vymenovat a popisat. Tabulka pre semanticku analyzu - vymenovat polozky a popisat.

?

asi takto:

Semanticka analyza
- analýza mien – je to klasifikacia identifikatorov
- analýza deklaracii – vytvorenie typoveho prostredia, vypocet velkosti pamati pre alokaciu premennych
- analýza tela – typova kontrola + generovanie virtualneho kodu > vyrtualny kod

Tabuľka sémantickej analyzy
-tabulka D (displej), ak id<ival> je identifikator na vstupe, potom D[ival] ukazuje na meno do zasobnika US. D ma rovnaky rozmer ako TID a musi byt inicializovana
- US – zasobnik mien, reprezentuje aktualne typove prostredie
- TS – typovy zasobnik, sluzi na vytvaranie typov a ich kontrolu
- RS – zasobnik pre aktualne alokovanu velkost pamati pre premenne na jednotlivych urovniach
-NS – pomocny zasobnik pre zapamatanie smernikov do US

Mike

Quote from: antil kiprest on  17.01.2011, 00:42:33
Quote from: Mike on  17.01.2011, 00:40:55
takze ak napriklad mam   A->aBCdeF|aBCd, vieme ze to nie je gramatika LL(1) lebo v jednom riadku nemoze byt viac krat ten isty terminalny symbol

do LL(1) vyberiem pred zatvorku aBCd a vyjde mi co ...

A-> aBCd ( eF| ? )


A-> aBCd [eF]   dla mna

Ake pravidlo ste pouzili?

OsamelyVlk

Quote from: Mike on  17.01.2011, 01:00:05
Quote from: antil kiprest on  17.01.2011, 00:42:33
Quote from: Mike on  17.01.2011, 00:40:55
takze ak napriklad mam   A->aBCdeF|aBCd, vieme ze to nie je gramatika LL(1) lebo v jednom riadku nemoze byt viac krat ten isty terminalny symbol

do LL(1) vyberiem pred zatvorku aBCd a vyjde mi co ...

A-> aBCd ( eF| ? )


A-> aBCd [eF]   dla mna

Ake pravidlo ste pouzili?


tam ide o to ze [eF] ==  eF| prazdny symbol

antil kiprest

Quote from: Mike on  17.01.2011, 01:00:05
Quote from: antil kiprest on  17.01.2011, 00:42:33
Quote from: Mike on  17.01.2011, 00:40:55
takze ak napriklad mam   A->aBCdeF|aBCd, vieme ze to nie je gramatika LL(1) lebo v jednom riadku nemoze byt viac krat ten isty terminalny symbol

do LL(1) vyberiem pred zatvorku aBCd a vyjde mi co ...

A-> aBCd ( eF| ? )


A-> aBCd [eF]   dla mna

Ake pravidlo ste pouzili?

to s tym vyberanim pred zatvorku bolo myslene len prenesene.. proste sa na to pozri logicky..  mas A -> aBCd | aBCdeF  ... bud nastane prve alebo druhe... spolocne maju 'aBCd'  cize to nastane urcite, takze  A-> aBCd   , a potom uz bud moze alebo nemusi prist aj to 'eF'   cize   [eF]  
bravčové krídielka a náhradu sóje poprosím!!

Mike

Quote from: antil kiprest on  17.01.2011, 01:04:07
to s tym vyberanim pred zatvorku bolo myslene len prenesene.. proste sa na to pozri logicky..  mas A -> aBCd | aBCdeF  ... bud nastane prve alebo druhe... spolocne maju 'aBCd'  cize to nastane urcite, takze  A-> aBCd   , a potom uz bud moze alebo nemusi prist aj to 'eF'   cize   [eF]  
kde je to v skriptach ? officialne sa to vola ako to pravidlo ?

OsamelyVlk

Quote from: Mike on  17.01.2011, 01:10:47
Quote from: antil kiprest on  17.01.2011, 01:04:07
to s tym vyberanim pred zatvorku bolo myslene len prenesene.. proste sa na to pozri logicky..  mas A -> aBCd | aBCdeF  ... bud nastane prve alebo druhe... spolocne maju 'aBCd'  cize to nastane urcite, takze  A-> aBCd   , a potom uz bud moze alebo nemusi prist aj to 'eF'   cize   [eF]  
kde je to v skriptach ? officialne sa to vola ako to pravidlo ?

http://hornad.fei.tuke.sk/~plocica/ppj/srp.html

z tej tabulky BNF a EBNF som si to vyvodil.

antil kiprest

1)
A -> c["*"|"-"A] kde c je cele cislo prepiste toto pravidlo aby vyhovovalo EBNF aby bolo mozne vygenerovat: 5*4-1            a    5*4-1*3
potom napisat hodnoty ake vyjdu po uskutocneni tych prikladov
a napisat postfixne formy 5*4-1            a    5*4-1*3


to by malo byt A -> c[("*" | "-") A]  vsak??  

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

Mike

Quote from: Mike on  17.01.2011, 00:40:55
takze ak napriklad mam   A->aBCdeF|aBCd, vieme ze to nie je gramatika LL(1) lebo v jednom riadku nemoze byt viac krat ten isty terminalny symbol

do LL(1) vyberiem pred zatvorku aBCd a vyjde mi ...

A-> aBCd [ eF ]


antil kiprest

Quote from: Mike on  17.01.2011, 01:10:47
Quote from: antil kiprest on  17.01.2011, 01:04:07
to s tym vyberanim pred zatvorku bolo myslene len prenesene.. proste sa na to pozri logicky..  mas A -> aBCd | aBCdeF  ... bud nastane prve alebo druhe... spolocne maju 'aBCd'  cize to nastane urcite, takze  A-> aBCd   , a potom uz bud moze alebo nemusi prist aj to 'eF'   cize   [eF]  
kde je to v skriptach ? officialne sa to vola ako to pravidlo ?

ale ake pravidlo mas na mysli?
to cele je proste prevod z nejakeho LL(k) (ci co to je)  do LL(1)
bravčové krídielka a náhradu sóje poprosím!!

OsamelyVlk

Quote from: Mike on  17.01.2011, 01:17:13
Quote from: Mike on  17.01.2011, 00:40:55
takze ak napriklad mam   A->aBCdeF|aBCd, vieme ze to nie je gramatika LL(1) lebo v jednom riadku nemoze byt viac krat ten isty terminalny symbol

do LL(1) vyberiem pred zatvorku aBCd a vyjde mi ...

A-> aBCd [ eF ]



suhlasim s nakresom... @Mike

Mike

3.) Navrhnite jednym pravidlom deklaraciu premennych Vars ak definicia zacina klucovym slovom var, potom nasleduje nenulovy pocet nazvov premennych, za nimi dvojbodka a nasledovny typ T.


malo byt nejak tak:

Vars -> "var" id { "," id } " : " T                   //id - tak oznacoval Kolar premenne

zostrojit syntakticky analyzator aj so zotavenim pre procedure Vars(k:symset)

ako by ste riesili ?



OsamelyVlk

2. Nieco s volacim aktivacnym po vykonani begin<2,4> neviem co presne a znazornit aky to bude mat na volaco vplyv (Toto som ani neprecital poriadne ked som videl to begin<2,4> takze take je aj moje podanie zadania)  

nasel som nieco take: ma to byt ako tabulka
[parametre]
[adresa navratu]
oblast premennych
oblast premennych
oblast premennych
oblast premennych  
zakladna adresa urovne 0 <-X
zakladna adresa urovne 1
zakladna adresa urovne 2 z tade sipka ukazuje na uroven adressa navratu
predosla hodnota x     z tade sipka ukazuje do priestoru nad tymto textom
[                          ] <-SP pri volani begin



     

antil kiprest

Quote from: Mike on  17.01.2011, 01:27:24
3.) Navrhnite jednym pravidlom deklaraciu premennych Vars ak definicia zacina klucovym slovom var, potom nasleduje nenulovy pocet nazvov premennych, za nimi dvojbodka a nasledovny typ T.


malo byt nejak tak:

Vars -> "var" id { "," id } " : " T                   //id - tak oznacoval Kolar premenne

zostrojit syntakticky analyzator aj so zotavenim pre procedure Vars(k:symset)

ako by ste riesili ?




v tej ulohe nie je nic o ciarkach, takze "," by som vynechal....  na zotavenie idem kuknut
bravčové krídielka a náhradu sóje poprosím!!

Mike

Quote from: OsamelyVlk on  17.01.2011, 01:28:58
2. Nieco s volacim aktivacnym po vykonani begin<2,4> neviem co presne a znazornit aky to bude mat na volaco vplyv (Toto som ani neprecital poriadne ked som videl to begin<2,4> takze take je aj moje podanie zadania)  

nasel som nieco take: ma to byt ako tabulka
[parametre]
[adresa navratu]
oblast premennych
oblast premennych
oblast premennych
oblast premennych  
zakladna adresa urovne 0 <-X
zakladna adresa urovne 1
zakladna adresa urovne 2 z tade sipka ukazuje na uroven adressa navratu
predosla hodnota x     z tade sipka ukazuje do priestoru nad tymto textom
[                          ] <-SP pri volani begin



     


OsamelyVlk

Quote from: antil kiprest on  17.01.2011, 01:31:13
Quote from: Mike on  17.01.2011, 01:27:24
3.) Navrhnite jednym pravidlom deklaraciu premennych Vars ak definicia zacina klucovym slovom var, potom nasleduje nenulovy pocet nazvov premennych, za nimi dvojbodka a nasledovny typ T.


malo byt nejak tak:

Vars -> "var" id { "," id } " : " T                   //id - tak oznacoval Kolar premenne

zostrojit syntakticky analyzator aj so zotavenim pre procedure Vars(k:symset)

ako by ste riesili ?




v tej ulohe nie je nic o ciarkach, takze "," by som vynechal....  na zotavenie idem kuknut

to som sa chcel spytat ze preco ta "," ... keby tam chcu aj ciarku tak vieme ako...

Mike

text otazky nie je presny, v konecnom dosledku mu vyslo tak s tou ciarkou.

elros

Quote from: Mike on  17.01.2011, 01:27:24
3.) Navrhnite jednym pravidlom deklaraciu premennych Vars ak definicia zacina klucovym slovom var, potom nasleduje nenulovy pocet nazvov premennych, za nimi dvojbodka a nasledovny typ T.


malo byt nejak tak:

Vars -> "var" id { "," id } " : " T                   //id - tak oznacoval Kolar premenne

zostrojit syntakticky analyzator aj so zotavenim pre procedure Vars(k:symset)

ako by ste riesili ?


Vars -> "var" id { "," id } " : " T  

Vars(k:symset){

if (symbol == "var") getsymbol();
else error(H(id) | "," | ":" | H(T) | K);

id("," | H(id) | ":" | H(T) | K));

check("," | H(id) | ":" | H(T) | K);
while(symbol &("," | H(id)){
      if (symbol == ",") getsymbol();
      else error("," | H(id) | ":" | H(T) | K);
      id("," | H(id) | ":" | H(T) | K);
      check("," | H(id) | ":" | H(T) | K);
      }
if (symbol == ":") getsymbol();
else error(H(T) | K);
T(K);
}

Mike

2.) bola dana funkcia "function F(x : real) : integer". Tato funkcia bola definovana v ramci funkcie H, ktora bola volana vo funkcii G.
Funkcia F sa volala s parametrom F(1.5+2). Bolo treba napisat nieco s tabulkou symbolov, stav pred vykonanim tela a po vykonani, stavy premennych, atributov..
spominalo sa tam nieco s klauzulou begin..

(zrejme strana 82 v skriptach)

anyone ?

antil kiprest

Quote from: antil kiprest on  17.01.2011, 01:15:07
1)
A -> c["*"|"-"A] kde c je cele cislo prepiste toto pravidlo aby vyhovovalo EBNF aby bolo mozne vygenerovat: 5*4-1            a    5*4-1*3
potom napisat hodnoty ake vyjdu po uskutocneni tych prikladov
a napisat postfixne formy 5*4-1            a    5*4-1*3


to by malo byt A -> c[("*" | "-") A]  vsak??  

a aka je asociativita?? zprava?

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