2016-11-11 9 views
9

Niedawno zdecydowałem się spojrzeć na Perla, a gdy stanąłem przed Perlem 5 vs 6, poszedłem z 5 ze względu na jego dojrzałość i ogromne wsparcie.Jak zdefiniować gramatykę parsowania w Perlu 5?

Jednak jedną z funkcji Perla 6, która naprawdę mnie zaintrygowała, była grammar keyword, pozwalająca zdefiniować gramatykę języka, która może być użyta do analizy złożonego tekstu. W innych językach zwykle wymagana jest do tego zewnętrzna biblioteka lub ręczna implementacja analizy.

Teraz, gdy już ustaliłem Perla 5, czy istnieje jakiś przybliżony odpowiednik słowa kluczowego Perl 6: grammar w Perlu 5 (lub innej funkcji budowania gramatyk), wbudowanej lub innej?

+0

https://metacpan.org/pod/Regexp::Grammars jest jednym z modułów CPAN, który robi coś podobnego. Istnieje kilka odpowiedzi tutaj na SO autorstwa autora, Damiana Conwaya, który używa go szeroko. Ale niestety Twoje pytanie jest nie na temat, ponieważ pytasz o rekomendację narzędzia. – simbabque

+1

@simbabque Możesz zmienić treść pytania, aby przejść do tematu: "Jak zdefiniować gramatykę do analizowania tekstu w Perlu 5?" – ThisSuitIsBlackNot

+0

Wiem. Ale doszedłem do wniosku, że OP jest wystarczająco doświadczony, aby zrobić to samemu @ThisSuitIsBlackNot;) – simbabque

Odpowiedz

10

Nie ma wsparcia core, ale można spojrzeć na Parse::RecDescent, Marpa::R2, Regexp::Grammars lub prostszych zadań, wystarczy użyć (DEFINE) w regex (patrz perlre).

+0

Wszystkie wyglądają jak dobre moduły, szczególnie 'Regexp :: Grammars'. Czy mógłbyś wytłumaczyć trochę o '(DEFINE)' chociaż proszę? * Perlre * dokumenty dla niego wydają się nieco mylące dla początkujących. –

+0

@ OrangeFlash81: Zobacz [[parser JSON jako pojedynczy Regel Perl] (http://www.perlmonks.org/?node_id=995856) na przykład. – choroba

+0

Fajnie, dzięki. Przyjmę za 3 minuty. –

1

Chociaż sam z niego nie korzystałem, uważam, że oprogramowanie Acmeist Pegex jest zbliżone do Perl 6 Grammars.