Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ahoj,
Dělám jako semestrálku, na předmět programovací jazyky a překladače, vědeckou kalkulačku - je to klasická kalkulačka, která umí základní operace (+,-,*,/), goniometrické fce apod měla by pracovat s reálnými čísly (nebo celými).
Př. vstupu: 5+3= nebo (3-4)*7= nebo (3-4)*7+cos(90)= apod.
Kdyby něco nešlo přečíst nebo nebylo jasné co jsem myslela, tak dovysvětlím. Děkuji.
Offline
Mohl by mi někdo polopaticky vysvětlit jak u označených pravidel 6,21,25 (viz obr.) výpočíst (udělat) fci FOLLOW (nebo SELECT).
Sice nepředpokládám, že by to někdo udělal, ale kdyby to bylo dovečera tak bych byla moc ráda, jsem nějaká natvrdlá a nemůžu pochopit jak to udělat.
Nebo nezná někdo nějaký online applet, který by dokázal fce FIRST A FOLLOW sám vygenerovat z bezkontextové gramatiky?
Offline
↑ gladiator01:
Zdravím, něco takového?
Offline
↑ jelena:
Jo díky to jsem také našla, ale nevím nakolik tomu mám věřit.
Offline
↑ gladiator01: tak asi jak všemu, co najdeme na Internetu.
A vytvořilo to něco? Asi moc nebudu nápomocná.
Offline
↑ jelena:
No já jsem to už zkoušela dřív na gramatice která byla určitě správně sestavená a měla jsem k ní i správné fce FIRST A FOLLOW a dávalo to úplně jiný výsledek, ale třeba to špatně zadávám nebo to počítá jinak (?).
Jestli tomu nerozumíš tak to neřeš, on se někdo možná ozve, ono to není tak důležité (znalost FOLLOW u těch tří pravidel), ale díky za snahu.
Offline
Není mi jasné, co myslíš FOLLOW u pravidla. Follow je vlastnost neterminálu, případně neterminálu v nějakém kontextu, ne?
Jinak ten applet vznikl jako bakalářská práce pod panem Barnátem, na jehož stránkách je uvedeno, že občas počítá špatně.
http://www.fi.muni.cz/~xbarnat/tafj/sll/
Na stejném webu jsou i skripta, kde je algoritmus na výpočet FOLLOW přijatelně popsán: http://www.fi.muni.cz/~xbarnat/IA006/IA … n_2009.pdf
A víme, o jakou gramatiku má jít? LL(k)/SLL(k)/LR(k)/LALR(k),..., jaké je k?
Offline
špatně jsem se vyjádřila, měla jsem namysli neterminály Zv, R' a Zr u těch jediných potřebuji FOLLOW při výpočtu SELECT protože v pravidlech 5, 35 a 39 přejdou na epsilon, ne?
Skripta mam taky jen mi to prostě nějak nedochází, nešlo by aby jsi vzal třeba neterminál Zv a krok po kroku napsal jak zjistit co všechno patří do FOLLOW?
Gramatika by měla být LL(1), ale je nějaká divoká, kdyby jsi měl čas tak se na ní prosím koukni já bych to potřebovala už dodělat.
Díky za případnou pomoc.
Offline
Ok, takže počítáme FOLLOW1 od Zv. Koukneme, kde je všude Zv na pravé straně:
* v pravidle 4, FOLLOW Zv obsahuje FOLLOW V', tedy )
* pravidlo 6 nám nic nového nepřidá
vyšlo {)}
Pro R' je to zajímavější{epsilon}
* z 33 je tam FOLLOW (R), což je dle (2) FOLLOW(V), což je množina obsahující epsilon (dle 2), ) (dle 3,4,5), FIRST(Zv)={epsilon,(,-,c} (dle 6),FIRST(Zo1)={+,-,*,/,^} (dle 9)
* jinak R' na pravé straně není
Jen mi přijde ta gramatika divná, bo v ní funguje odvození
V=> (V') => (VZv) => (VVZv) => (VV) => (VR) => (RR)
a vzhledem k tomu, že R je reálné číslo, tak tato gramatika není jednoznačná a proto nemůže být LL(k)
Jinak pokud znáš význam té gramatiky tak můžeš FOLLOW určovat bez algoritmů jen úvahou typu: co může následovat v rozumném výraze po reálném čísle? určitě ),+,-,*,/,^.
A na to EBNF máš nějakou zpětnou vazbu? Na první pohled vypadá rozumně, ale spoustu výrazů, které normální kalkulačka počítá, v něm nevyrobím (třeba sin(1+2)).
Offline
Jen mi přijde ta gramatika divná, bo v ní funguje odvození V=> (V') => (VZv) => (VVZv) => (VV) => (VR) => (RR)
Tohoto jsem si nevšimla, já zkoušela jen levé derivace. (Vždyť jsem říkala, že je divná.)
Kdybych přidala ještě že R->e, nebo nějaké pravidlo upravila?
A šla by nějak upravit, aby byla LL(1)? Musí být vůbec LL(k) abych mohla udělat ty dva body níže (resp. to g)?
A na to EBNF máš nějakou zpětnou vazbu? Na první pohled vypadá rozumně, ale spoustu výrazů, které normální kalkulačka počítá, v něm nevyrobím (třeba sin(1+2)).
Nemám, já už to takhle odevzdávám pozdě, tak bych to neřešila já potřebuju, aby to alespoň (třeba) umělo základní aritmetické operace a dostala bych zápočet a alespoň těch 10 bodů co my zbývá do E. Kdyby bylo víc času, tak bych to zkusila napravit.
Ještě mi zbývá udělat
f) Popis vnitřní reprezentace (formy) - tady nevím co napsat (nebo jaká forma by byla nejlepší) (tady a tady jsou když tak skripta)
g) Atributová nebo překladová gramatika
Offline
↑ gladiator01: No průšvih je, že to EBNF vůbec nezvládne ani slibované (3-4)*7=, zkrátka do závorky umím dát jen VYRAZ, což je reálné číslo případně s minuskem a obalené do závorek.
Oprava gramatiky, co mě napadla
V'->V Zo1
V' -> Zo2
pravidlo 4 zrušit, tím odpadne i neterminál Zv. Po téhle úpravě už ale gramatika neodpovídá EBNF -- tam by bylo dobré spravit diagram pro VYRAZ -- přidat větve
( OPERACE1 )
OPERACE2
tím se spraví nejvážnější nedostatek, aby to bylo plně OK, bylo by třeba dělat úprav víc, na to už asi není čas.
S překladovou gramatikou a vnitřní reprezentací jsem se zatím nepotkal, tak se snad někdo ozve.
Offline
Díky, jednoduché výrazy tedy už fungují, i třeba cos(90) jde.
VYRAZ = [-](REALNE | ´( ´ VYRAZ ´)´ ) - mohl by jsi tam doplnit to OPERACE1,2 jak jsi to myslel já už jsem nějaká natvrdlá.
Jako tu vnitřní formu jsem zvolila syntaktický strom (nevim jestli to je správné, ale připadalo my to nejlepší).
Offline
↑ Kondr:
dík
Offline
Tak já to asi odevzdám (zouškové je jen do pátku, tak aby neřekl, že už nemá čas to opravit), i když tím přepisem do toho syntaktického stromu, jsem to dosti znefunkčnila. Nyní fungují jen aritmetické operace s celými čísly. Ale to osatní vypadá celkem dobře, tak třeba se smiluje.
Offline
↑ gladiator01: Ahoj,
a jak jsi nakonec dopadla?
Offline
↑ RePRO:
Už jsem tady někde psala, že mi Müller dal E.
Offline
↑ gladiator01: Tak to jo. A počítačovou grafiku jsi dala?
Offline
↑ RePRO:
Za B.
Offline
Stránky: 1