Portál AbcLinuxu, 5. května 2025 17:59

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
27.9.2006 11:15 jan.xxx
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
Odpovědět | Sbalit | Link | Blokovat | Admin
Kdysi jsem přemýšlel, že bych tím projel jeden textový formát souborů a naparsoval bych to do nějakych tříd. Ale přijde mi to nějak složité. Asi ze mě programátor nikdy nebude :-(
27.9.2006 12:00 Ladislav Thon
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
Odpovědět | Sbalit | Link | Blokovat | Admin
Implementace syntaktického analyzátoru není příliš snadná záležitost
Implementace parseru (v ruce) je při použití rekurzivního sestupu velmi snadná záležitost. IMHO neexistuje důvod, proč navrhovat programovací jazyky jinak než jako LL(1), takže rekurzivní sestup je úplně v klidu. Z důvodu, který mi není známý, bohužel někdo s oblibou navrhuje LR prasárny typu C, které navíc obsahují příšerné množství konfliktů...
yacc -d cselect.y
lex cselect.l
Já myslel, že používáme bison a flex :-)
ANTLR ... program skutečně generuje LL(n)
ANTLR používá predikátové LL(k) gramatiky, takže má dokonce větší vyjadřovací schopnosti než LALR. A to se vyplatí :-)
Vašek Lorenc avatar 27.9.2006 12:17 Vašek Lorenc | skóre: 27
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
Implementace syntaktického analyzátoru není příliš snadná záležitost
Implementace parseru (v ruce) je při použití rekurzivního sestupu velmi snadná záležitost.
Ještě snazší je implementace parseru např. v Haskellu za pomoci monadických parserů. Nebo pomocí generátoru parserů Happy, nicméně to první řešení je mnohem elegantnější.
...včetně majestátného loosa
27.9.2006 13:42 Ladislav Thon
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
Ještě snazší je implementace parseru např. v Haskellu za pomoci monadických parserů.
To jsem neznal. A neznám. A věřím tomu, že při vysokoúrovňových funkcionálních orgiích mohou vzniknout nádherné parsery ;-) Nicméně z toho, co jsem tak za pár minut stihl najít, to vypadá, že v principu jde též o rekurzivní sestup. Wirthův přístup má ještě své zastánce! :-)
27.9.2006 14:50 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
yacc -d cselect.y
lex cselect.l
Já myslel, že používáme bison a flex :-)
A proč by se binárka bisona neměla jmenovat yacc? :)
27.9.2006 16:53 Ladislav Thon
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
A proč by se binárka bisona neměla jmenovat yacc? :)
Uff, jestli se binárka bisona jmenuje yacc, tak jsem silně konsternován. Ještě že to nepoužívám, musel bych si začít klást otázky, proč se binárka Linuxového kernelu nejmenuje minix :-)
27.9.2006 18:03 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
# cd /usr/bin
# ln bison yacc
# rm bison
Kontrolní otázka, jakže se teď jmenuje binárka bisonu :-D
When your hammer is C++, everything begins to look like a thumb.
27.9.2006 20:02 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
Jmenovat se tak může, stejně prakticky ve všech linuxových distribucích jsou lex a yacc jen linky na flex a bison (stejně jako třeba sh na bash a vi na vim). Pokud ji ale spouštíte jménem lex resp. yacc, neměl byste použít nic z rozšíření, která mají flex resp. bison navíc.
27.9.2006 18:06 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
No, v Linuxových distrech se stejně používá bison a flex. Ale tohle mi jelo i na prastaré Sunovské mašince :-)
ANTLR používá predikátové LL(k) gramatiky, takže má dokonce větší vyjadřovací schopnosti než LALR. A to se vyplatí :-)
Predikátové, to slovo mě vypadlo. Díky za upozornění.
When your hammer is C++, everything begins to look like a thumb.
3.7.2009 01:57 hypiz
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
jen drobna korekce, LL(k) a LALR(1) jsou neporovnatelne, .. nebo snad ne?
27.9.2006 22:54 Pavel Kysilka
Rozbalit Rozbalit vše Re: Jazyky a překladače - 5 (syntaxe 3)
Odpovědět | Sbalit | Link | Blokovat | Admin
skvele, to jsem presne shanel. o bisonu vim, ale pro javu to je horsi.

mnohokrate diky.

gf
18.1.2016 21:10 ehmmm
Rozbalit Rozbalit vše Konflikty a Python
Odpovědět | Sbalit | Link | Blokovat | Admin
Co se tyka konfliktu s if/else, tak v Python jde neco, co asi jde i v C.

a if b else c if d else e

Ma to byt?: a if b else (c if d else e)

Nebo?: (a if b else c) if d else e

Intuitivne si myslim, ze se to bude chovat jako ta prvni varianta.

Ale uznavam, ze to nema na ceckovske if (a) if (b) {c;} else {d;}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.