Как использовать B:: Крючки для манипулирования Perl-парсером
Я ищу, чтобы играть с манипуляциями perl parser. Похоже, что различные модули B::Hooks
- это то, что люди используют. Мне было интересно:
-
Лучшее место для тех, кто не имеет опыта XS
(пока). Любые соответствующие сообщения в блоге?
-
Сколько работы будет связано с созданием нового оператора, например:
$a~>one~>two~>three
~>
будет работать как ->
, но он не будет пытаться вызвать undef
и вместо этого просто вернет undef
в LHS.
Хотя исходный фильтр будет работать - меня больше интересует, как вы можете манипулировать парсером на более глубоком уровне.
Ответы
Ответ 1
Я не верю, что вы можете добавлять инфиксные операторы (операторы, операнды которых находятся до и после оператора), а тем более символические (в отличие от названных операторов), но вы можете написать опцию проверки ордера, которая заменяет вызовы методов. Это означает, что вы можете заставить ->foo
вести себя по-другому. При написании вашего модуля в качестве прагмы вы можете ограничить эффект своего модуля лексической областью (например, { use mypragma; ...}
).