2015-05-23 11 views
15

Czekam na grę z manipulowaniem parserem Perla. Wygląda na to, że różne moduły B::Hooks są używane przez ludzi. Zastanawiałem się:Jak używać B :: Haczyki do manipulowania analizatorem parse

  1. najlepszym miejscem do rozpoczęcia dla kogoś, kto nie ma XS doświadczenia (jeszcze). Jakieś odpowiednie posty na blogu?

  2. Ile pracy będzie zaangażowany w tworzenie nowego operatora, na przykład:

    $a~>one~>two~>three

~> będzie działać jak -> ale nie byłoby spróbować zadzwonić na undef i zamiast tego po prostu return undef do LHS.

Chociaż filtr źródłowy działałby - bardziej interesuje mnie sposób, w jaki można manipulować analizatorem na głębszym poziomie.

+4

To brzmi interesująco. :) –

+0

Pomyślałem o tym, kiedy denerwowałem się, wykonując 'if ($ dom-> at ('div') -> at ('h1')) {' w Mojo :: DOM i pobieranie nie może wywołać undefined becasue 'div 'nie istniało :) – LLFourn

+0

Nie doszedłem jeszcze do tego, ale wygląda to obiecująco: https://metacpan.org/pod/B::Utils – LLFourn

Odpowiedz

1

Nie sądzę, że można dodawać operatorów infiksów (operatorów, których operandy są przed i po operatorze), znacznie mniej symbolicznych (w przeciwieństwie do nazwanych operatorów), ale można napisać operację sprawdzania, która zastępuje wywołania metod . Oznacza to, że możesz spowodować, że ->foo zachowuje się inaczej. Pisząc moduł jako pragmę, możesz ograniczyć efekt swojego modułu do zakresu leksykalnego (np. { use mypragma; ...}).

Powiązane problemy