如何使用B::Hooks来操作perl解析器



我想玩perl解析器操作。看起来人们使用的是各种各样的B::Hooks模块。我想知道:

  1. 对于没有XS经验(尚未)的人来说,最好的起点。有相关的博客文章吗?

  2. 创建一个新的操作符需要做多少工作,例如:

    $a~>one~>two~>three

~>将像->一样工作,但它不会尝试调用undef,而是简单地将undef返回给LHS。

虽然源过滤器也可以工作,但我更感兴趣的是如何在更深层次上操作解析器。

我不相信您可以添加中接操作符(操作数在操作符之前和之后的操作符),更不用说符号操作符(与命名操作符相反),但是您可以编写一个op检查器来替换方法调用。这意味着您可以导致->foo的行为不同。通过将模块写成一个pragma,你可以将模块的作用限制在一个词法范围内(例如{ use mypragma; ...})。

最新更新