gpt4 book ai didi

perl - perl 源代码中的 `use` 在哪里定义?

转载 作者:行者123 更新时间:2023-12-02 08:11:14 25 4
gpt4 key购买 nike

有谁知道源代码和编译阶段的确切位置 use 是在什么地方定义的?我没有看到它在寻找 CORE::GLOBAL::use,而且我不确定如何深入寻找它。这是一个非常模糊的术语。

最佳答案

use 语法在解析器 (perly.y) 中定义。摘录:

|   USE startsub
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
BAREWORD BAREWORD optlistexpr ';'
{
SvREFCNT_inc_simple_void(PL_compcv);
utilize($1, $2, $4, $5, $6);
parser->parsed_sub = 1;
$$ = NULL;
}

不了解 yacc,我不知道它在做什么。

utilize() 函数是 op.c 中的 Perl_utilize()。此代码创建一个包含 require 的 BEGIN block 。 veopimop 变量可能包含用于检查版本或导入请求元素的操作码:

/* Fake up the BEGIN {}, which does its thing immediately. */
newATTRSUB(floor,
newSVOP(OP_CONST, 0, newSVpvs_share("BEGIN")),
NULL,
NULL,
op_append_elem(OP_LINESEQ,
op_append_elem(OP_LINESEQ,
newSTATEOP(0, NULL, newUNOP(OP_REQUIRE, 0, idop)),
newSTATEOP(0, NULL, veop)),
newSTATEOP(0, NULL, imop) ));

链接到 Github 镜像上的 v5.26.0 源代码:

关于perl - perl 源代码中的 `use` 在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com