Portál AbcLinuxu, 7. listopadu 2025 05:08
Implementace syntaktického analyzátoru není příliš snadná záležitostImplementace 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ů...
Já myslel, že používámeyacc -d cselect.y lex cselect.l
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í
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ší.Implementace syntaktického analyzátoru není příliš snadná záležitostImplementace 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ů.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!
A proč by se binárka bisona neměla jmenovat yacc? :)Já myslel, že používámeyacc -d cselect.y lex cselect.lbisonaflex![]()
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
# cd /usr/bin # ln bison yacc # rm bisonKontrolní otázka, jakže se teď jmenuje binárka
bisonu
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.
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í.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.