我想玩perl解析器操作。看起来人们使用的是各种各样的B::Hooks
模块。我想知道:
-
对于没有
XS
经验(尚未)的人来说,最好的起点。有相关的博客文章吗? -
创建一个新的操作符需要做多少工作,例如:
$a~>one~>two~>three
~>
将像->
一样工作,但它不会尝试调用undef
,而是简单地将undef
返回给LHS。
虽然源过滤器也可以工作,但我更感兴趣的是如何在更深层次上操作解析器。
我不相信您可以添加中接操作符(操作数在操作符之前和之后的操作符),更不用说符号操作符(与命名操作符相反),但是您可以编写一个op检查器来替换方法调用。这意味着您可以导致->foo
的行为不同。通过将模块写成一个pragma,你可以将模块的作用限制在一个词法范围内(例如{ use mypragma; ...}
)。