加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:02:34 所属栏目:大数据 来源:网络整理
导读:闲得蛋疼想看看几种主流脚本语言的解释器是怎么工作的。我是最早看过陈儒那本讲Python解释器的书才萌生此想法。虽然此书行文风格我厌恶至极,但它确实给了我一些启示。上次京东做活动满200减50,于是买了Programming Perl的最新影印版,研究一下perl interna

闲得蛋疼想看看几种主流脚本语言的解释器是怎么工作的。我是最早看过陈儒那本讲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语言的风格,我都无力吐槽了,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读