微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl解释器的代码和用perl写出来的代码一样难看

闲得蛋疼想看看几种主流脚本语言的解释器是怎么工作的。我是最早看过陈儒那本讲Python解释器的书才萌生此想法。虽然此书行文风格我厌恶至极,但它确实给了我一些启示。上次京东做活动满200减50,于是买了Programming Perl的最新影印版,研究一下perl internal自然提上日程。


初一看Perl的代码简单不塂入目,满屏的宏定义,完全无法跟踪。官网上有一些解释internal的文章,但不是很系统地介绍,内容也相当有限。从零开始探索未知代码(及风格,惯例)真令人担心啊。平时只能业余看一下,我估计这个工作不会持续长久。姑且看看吧。


从使用者的角度去看内部实现,最简单的方式是将使用的场景与内部解释的场景对应起来。而最容易捕捉到对应的时候是出错的时候。比如:

# perl -e '@a +1 =3'
Can't modify addition (+) in scalar assignment at -e line 1,at EOF

可惜这只是编译错误,运行时的对应就不这么好捕捉了。在源代码里搜一搜这个字符串,无结果。估计这种话是格式化成的,只搜前两个单词,结果能找出点东西。最后的结果是,这句话是在Perl_op_lvalue_flags里报出来的。


这个函数的原型:

Perl_op_lvalue_flags(pTHX_ OP *o,I32 type,U32 flags)


跳了好几次才搞清楚,原来pTHX_OP多加了个无使用的参数。尼玛,这种让C语言看起来不像C语言的风格,我都无力吐槽了,

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐