【发布时间】:2018-08-22 01:05:04
【问题描述】:
我已经阅读并理解,由于 BEGIN 块,没有 Perl 解释器就无法解析 Perl 5 代码。
我知道有独立的解析器,比如
PPI
(被Perl::Critic使用)
大致解析初始文档。
但我找不到任何关于输出某种程序的参考 抽象语法树,或任何类似于 Perl 用于执行阶段的树的内部结构。
比较解析和执行阶段的内部表示以查看代码扩展和更改会很有趣。
【问题讨论】:
-
以 B::Concise 模块为例。
-
除了
B/O核心模块,还有MAD(未维护,同时被移除)。大多数解析 Perl 的软件要么是源过滤器(很容易破坏),要么是基于PL_keyword_plugin构建的(强大但有限)。见examples。 -
@daxim,
PL_keyword_plugin实际上是有问题的,已经被Devel::CallParser取代了。 -
@mob,它不需要 Perl 来解析原型,并且
use语句也是BEGIN块,因此该链接不会添加任何新内容。 /// 也就是说,当然也可以在运行时修改操作码。但是有人这样做吗?
标签: perl parsing abstract-syntax-tree