问题标签 [interpreted-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2270 浏览

programming-languages - 我需要学习什么来构建解释器?

对于我的 AQA A2 级计算项目,我决定创建一种基本的解释性编程语言,输出到控制台。我不知道如何构建解释器。我有一本关于编译器设计的紫龙书,正如 user166390 在回答这个问题时所说,构建编译器的初始步骤与构建解释器相同。我的问题是:这是真的吗?

能不能用龙书里描述的技巧来写解释器?如果是这样,我需要使用哪些步骤并学习如何使用?

例如,我是否需要编写一个词法分析器、一个语法分析器、一个语义分析器和一个中间代码生成器?

我是否可以编写一个基本的解析器来读取源代码的每一行,解析它并立即执行指令,或者这是一个臭名昭著的坏主意?

0 投票
2 回答
2780 浏览

python - 解释语言的链接和加载

在编译语言中,源代码由编译器转换为目标代码,不同的目标文件(如果有多个文件)由链接器链接,并由加载器加载到内存中执行。

如果我有一个使用解释性语言(例如,ruby 或 python)编写的应用程序,并且如果源代码是跨文件拆分的,那么这些文件究竟是什么时候组合在一起的。换句话说,链接何时完成?解释语言是否首先具有链接器和加载器,或者解释器会做所有事情?

我真的对此感到困惑,无法理解它!任何人都可以对此有所了解吗?

0 投票
1 回答
81 浏览

garbage-collection - 脚本语言和解释语言可以强制垃圾收集吗?

在 javascript 中,您不能强制进行垃圾收集,而是必须等待解释器自动收集它。

这种行为是否也存在于 Python 和 Java 等解释型语言中?

0 投票
2 回答
63 浏览

computer-architecture - 解释语言可以使用延迟槽吗?

在处理用于执行指令的流水线架构时,避免危险的方法之一是使用延迟槽,或阻止某些指令访问在它们上面的行中计算的值的规则。我的理解是,汇编程序会尝试在您的指令之间移动不相互依赖的指令,以便在依赖指令等待时可以执行非依赖指令。这个特性是可能的,还是在没有真正编译时间的解释语言的情况下会发生这种情况?

(请注意,如果我上面所说的任何内容反映了我的理解上的差距,请更正它,因为这些概念对我来说是新的)。

0 投票
7 回答
18924 浏览

java - 当 JIT 还编译字节码时,为什么 Java 既是编译语言又是解释语言?

我读到,Java 源代码被编译成“字节码”,然后由 JIT 再次“编译”成“机器码”。也就是说,源代码首先被编译成与平台无关的字节码,然后再次编译成特定于机器的代码。那为什么它既被称为解释语言又被称为编译语言呢?口译发生在哪里?

0 投票
3 回答
837 浏览

compilation - 为什么 Befunge 被认为难以编译?

Befunge 的设计目标之一是难以编译。但是,它很容易解释。可以用传统语言编写解释器,比如 C。要将 Befunge 程序翻译成等效的机器代码,可以将 Befunge 代码硬编码到 C 解释器中,然后将生成的 C 程序编译为机器代码。或者“编译”是否意味着排除这种翻译的更受限制的东西?

0 投票
4 回答
186 浏览

.net - 使反射成为可能的 C# 语言的特性是什么?

使反射成为可能的 C# 语言的特性是什么?是所有面向对象语言都可以做的事情,还是所有解释语言都可以做的事情?或者是其他东西...

0 投票
3 回答
611 浏览

programming-languages - 解释语言与编译语言中的动态绑定

因此,目前正在阅读有关绑定的内容...根据我能想到的示例以及在网络上找到的示例,动态绑定似乎主要发生在解释语言中,而不是发生在编译语言中。在 Java 中也会出现一些情况,但 java 不是一种“纯粹的”编译语言。我读过 - http://en.wikipedia.org/wiki/Dynamic_binding_(computing)

那么我的问题是——对于类、方法和对象,动态绑定是否首先发生在对象级别,然后追溯到方法、类等?此外,是否存在动态绑定发生在编译语言中的对象级别的实例?

0 投票
1 回答
50 浏览

python - 在 C++ 应用程序中执行解析的脚本/片段

我们在 c++ 和一些 .NET 中拥有庞大的代码库。视觉工作室 2010。

该应用程序的主要部分是一个基于 Actor 模型的节点图。节点是状态机,将布尔值和数字输入转换为布尔值和数字输出,可以连接到另一个节点的输入,依此类推。

该系统包括具有各种配置选项的多种类型的节点。

一位客户要求提供一组相当复杂和灵活的节点类型,其中一些在系统投入生产之前可能无法完全阐明。我希望通过创建一个接受 python(或类似)文本作为其配置的新节点类型来实现整个事情。

利益相关者建议使用 Python,但不一定是唯一的选择。有哪些选项可以在 C++ 代码库中以类似 VBA 的方式解析和执行另一种高级语言?

0 投票
1 回答
366 浏览

haskell - 请推荐一种具有模式匹配的解释语言

我正在寻找一种易于快速编写脚本的解释语言,如 ​​,但对它有更多的 Haskell 感觉(即一种函数式语言)。

具体来说,我希望它具有像 haskell 中的模式匹配功能。这样的事情存在吗?

编辑:我问主要是因为我喜欢学习新语言,而且我注意到我一直在学习的语言中有一个空白点。
一方面,我曾经解释过和动态类型的语言,例如 Python 和 Ruby,它们具有功能元素,但并没有把这个概念走得太远。
另一方面,我有 Haskell,它具有我喜欢的许多功能特性,但非常严格(即使是简单的程序也需要花费大量时间才能运行)。
我只是想知道是否有什么东西可以分裂这些差异。