gpt4 book ai didi

dynamic - 是否有任何可以动态修改解释器的解释型语言?

转载 作者:行者123 更新时间:2023-12-04 22:47:40 26 4
gpt4 key购买 nike

我一直在想this writing (apparently) by Mark Twain在其中他开始用英语写作,但在整个文本中都对拼写规则进行了更改,因此到最后,他最终得到的东西可能最好被描述为伪德语。

这让我想知道是否有针对某些既定语言的解释器,可以访问解释器本身,以便您可以在进行过程中更改语言的语法和结构。例如,通常是 if子句是关键字;有没有一种语言可以让您即时更改或重新定义它?想象一下以一种语言开始控制台 session ,最后以另一种语言工作。

显然,可以编写一个解释器并运行它,也许这样做与修改解释器之间没有具体的区别。我不确定这一点。也许您可以对任何给定解释器进行动态修改有限制?

撇开这些更开放的问题不谈,我只想知道是否有任何已知的解释器允许这样做?或者,也许,这种能力只是程度问题,我的问题提出得很糟糕。

最佳答案

当然,在某些语言中,这种在语言语法本身级别上的自我修改行为是可能的。 Lisp programs can contain macros ,它允许动态创建新的控制结构,以至于两个依赖于大量宏编程的 Lisp 程序看起来几乎就像是用两种不同的语言编写的。 Forth 有点类似 a Forth interpreter provides a core set of just a dozen or so primitive operations必须以问题域的语言构建程序(通常是某种必须以编程方式精确完成的现实世界交互,例如工业机器人)。 Forth 程序员创建了一个解释器,该解释器理解他或她试图解决的问题的特定语言,然后用该语言编写更高级别的程序。

一般来说,这里的共同想法是处理 code and data as equivalent 的语言或系统的想法。并赋予用户与修改另一个相同的权力。例如,每个 Lisp 程序都是一个 Lisp 数据结构。这与 Java 等语言形成鲜明对比,在 Java 中,程序代码和它操作的数据之间有明显的区别。

一个相关的主题是 self-modifying low-level code ,在 minicomputers with complex instruction sets 时代,这是汇编语言程序员中相当普遍的技术。 ,并在某种程度上蔓延到早期的 8 位和 16 位微型计算机世界。在这个编程习惯用法中,为了速度或内存节省的目的,程序将在编写程序时“意识到”其编译或解释的指令将存储在内存中的位置,并且可以更改实际的机器级指令字节按字节动态影响其行为。

关于dynamic - 是否有任何可以动态修改解释器的解释型语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17308799/

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