2010-10-25 11 views
7

Przechodzę do tego w mojej klasie teoretycznej i jestem ciekawy, ile osób tutaj wie, co to jest kompilacja wyrażenia regularnego jest. Oglądałem online i wydaje mi się, że jest to bardziej archaiczny temat, który myślałem, że tak.Z ciekawości, ile osób wie, w jaki sposób kompilowane są wyrażenia regularne?

Tak więc, kto tutaj wiedział przed przeczytaniem tego pytania, że ​​kompilacja wyrażenia regularnego jest wykonywana przez konwersję regex do epsilon-niedeterministycznego skończonego automatu? Kto nie ma pojęcia, co to jest?

+3

Prawdopodobnie lepiej na [Programiści] (http://programmers.stackexchange.com) ze względu na bycie ankietą programistów, a nie na pytanie z odpowiedzią programistyczną. – dmckee

+0

Cóż, nie sądzę, że oni chcieliby, aby to pytanie również tam. "Kto tego nie wie?" jest dość trudno odpowiedzieć sensownie ... – Jens

+1

W rzeczywistości większość implementacji faktycznie * nie * kompiluje się do skończonych automatów. Większość dzisiejszych dialeksów regex może dopasowywać języki, które nie są regularne (i dlatego nie mogą być dopasowane przez automat skończony). – sepp2k

Odpowiedz

0

Istnieje bardzo prosty i elegancki mały kompilator wyrażeń regularnych w C, który napisał Rob Pike, a Brian Kernighan opisuje w rozdziale 1 O'Reilly'a Beautiful Code. Łatwo się z tego nauczyć. Kursy kompilacji obejmują go: typy tokenów można definiować za pomocą wyrażeń regularnych. Więc wyobrażam sobie, że ta wiedza nie jest strasznie rzadka.

+0

To był interpreter wycofywania - nie skompilował się do automatu. –

0

Ok. Sądzę, że będę pierwszym, który przyznał, że chociaż kilka lat temu podjąłem kurs kompilatora i znam ogólną zasadę, myślę, że muszę ponownie wydobyć "Smoczą księgę" i przeczytać więcej na ten temat, gdybym został poproszony o napisanie kodu, który robi tego rodzaju rzeczy.

0

Wiedziałem, że ma to coś wspólnego z maszynami skończonymi, ale nic poza tym. Nie do końca temat, który chciałem zagłębić się ... Podejrzewam, że to paskudne pod maską. Niewiele osób na SO wydaje się korzystać z wyrażeń regularnych, nigdy nie myśl, jak działają.

Powiązane problemy