Uogólnienia metody Brzozowskiego pochodnych wyrażeń regularnych do gramatyki?

18

Metoda pochodnych Brzozowskiego jest bardzo ładną techniką do budowania deterministycznych automatów z wyrażeń regularnych w ładnie algebraiczny sposób. Opracowałem kilka uroczych uogólnień tej techniki do obsługi niektórych większych klas gramatycznych, ale algorytmy są na tyle proste, że wydaje się całkiem możliwe, że zostały wcześniej odkryte. Ale wydaje się, że odniesienia do potomków tej techniki nie pojawiają się zbyt wiele. Czy ktoś coś wie?

Neel Krishnaswami
źródło
2
Jestem bardzo ciekawy, o jakich klasach gramatycznych myślisz. Jeśli chodzi o potomków, technika Antimirałowa, która zamiast tego produkuje niedeterministyczne automaty, jest bardzo przyjemna: Częściowe pochodne wyrażeń regularnych i konstrukcji automatów skończonych , TCS 155 (2), 1996, ( dx.doi.org/10.1016/0304-3975(95 ) 00182-4 ).
Sylvain,
masz na myśli uogólnienia na bardziej złożone języki, takie jak zwykły <bezkontekstowy <kontekstowy <...?
s8soj3o289,
Głównie przyglądałem się podsystemom CFG z grubsza w sąsiedztwie VPL.
Neel Krishnaswami
... ale zbiór instrumentów pochodnych nie jest wtedy skończony. I rzeczywiście, jeśli chcesz czegoś deterministycznego, jak w metodzie Brzozowskiego, prawdopodobnie ograniczasz się do DCFL (dlatego myślę, że może to mieć sens w przypadku VPL).
Sylvain,

Odpowiedzi:

7

W Total Parser Combinators (ICFP 2010) używam pochodnych Brzozowskiego, aby ustalić, że członkostwo w języku jest decydujące dla pewnej klasy potencjalnie nieskończonych gramatyk.

Nils Anders Danielsson
źródło
12

Ten artykuł może Cię zainteresować:

Yacc is Dead według Matthew Might i David Darais, 2010

Prezentujemy dwa nowe podejścia do parsowania języków bezkontekstowych. Pierwsze podejście opiera się na rozszerzeniu pochodnej Brzozowskiego z wyrażeń regularnych na gramatyki bezkontekstowe. Drugie podejście opiera się na uogólnieniu pochodnej na kombinatory parsera. Zaletą tych technik jest niewielka (mniej niż 250 linii kodu), łatwa do wdrożenia biblioteka parsująca, zdolna do parsowania dowolnych gramatyk bezkontekstowych w leniwych parsach. Zapewniono implementacje zarówno dla Scali, jak i Haskell. Wstępne eksperymenty z wyrażeniami S analizowały miliony tokenów na sekundę, co sugeruje, że ta technika jest wystarczająco wydajna do zastosowania w praktyce.

Również potencjalnie interesujące:

Michaił Gluszenkow
źródło
Bardzo zabawny tytuł papierowy! :-)
Dai Le
7

W połowie lat 80., kiedy pracowałem nad rekurencyjnymi parserami wynurzania i faktoringiem gramatyki, zacząłem od zdefiniowania częściowych pochodnych gramatyk.

Dużo ładnej teorii.

Czy masz jakieś konkretne pytania?

GHR
źródło
W tej chwili po prostu szukam powiązanej pracy. Ponieważ myślę głównie o parserach rekurencyjnych, znalazłem zastosowania do analizowania w stylu LR, tak jak sugerujesz, szczególnie intrygujące. Czy możesz wskazać mi któryś ze swoich dokumentów?
Neel Krishnaswami