gpt4 book ai didi

php - 脚本语言如何设置/修改/读出变量?

转载 作者:可可西里 更新时间:2023-11-01 13:58:56 25 4
gpt4 key购买 nike

假设语言的解释器(可以是从 PHP 到 Ruby 的任何语言)是用 C 编写的。由当前正在执行的脚本定义的变量(或更复杂的数据结构不仅包含名称和值)如何存储和读出?

我对 C 的了解很差,最终得出的结论是这只能用数组来完成。

// Variable type definition would go here
var* variables;

var 类型将包含两个字符串 namevalue

好的。所以一个脚本定义了例如:30 个变量。现在,如果必须读出其中一个变量,函数 getVar(或类似的东西)必须遍历所有 30 个变量并将它们的 name 与请求变量的名称。想象一下,有一个请求的循环

  • 我是不是完全错了?如果是,(现代?)脚本语言如何处理变量?它们是如何存储和读取的?

  • 在语法明确定义变量的语言中(PHP:$myVar),解释器可以在解析过程中用数值替换所有变量。 (我说得对吗?)是这样吗?

最佳答案

哈希表、作用域链表、引用 ... 有很多。

你问的是半抽象的,实现是可变的。

取决于实现:

  1. 标识符可以编译成内存地址,或相对内存地址,或字节码引用的无名位置。
  2. 可以在运行时在范围内动态查找标识符

在基本的脚本语言中,遇到的变量名称将被放入作用域结构,例如包含哈希表实现的链表,用于在其中查找标识符范围。

当一个变量被引用时,运行时代码在哈希表中查找它并获得与该值相关的一些值(例如结构的内存地址)。结构可用于实现标量变量:

enum stype = { INT, STRING, FLOAT, BOOL };
struct scalar {
enum stype type;
generic_blob_t *heap_blob;
};

或者我糟糕的示例源的一些变体。

一些好书是“Modern Compiler Implementation in C”和Dragon Book .仔细阅读这个主题是个好主意;我会把它推荐给任何程序员。

关于php - 脚本语言如何设置/修改/读出变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2180934/

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