【发布时间】:2016-09-08 09:29:35
【问题描述】:
看完这篇文章后:
How does an interpreter/compiler work
我有这个问题:
在只有解释器的编程语言(例如 Basic)中(如上述链接第二个答案中的照片所示)是否可以进行静态类型检查??。
据我所知,每次我们执行程序时,解释器都会运行每个单行命令。那么如何在运行程序之前静态检查类型呢?
【问题讨论】:
-
根据定义,“解释器”不是指“无类型”吗?
-
这取决于您对“静态类型”的定义。如果您的意思是“在编译时已知”,那么不,仅解释语言不能仅仅因为没有“编译时”步骤而具有静态类型的变量。如果您的意思是“变量被锁定为一种类型”,那么是的,解释语言可以具有静态类型的变量。我已经看到了这两个定义,这就是我提出它的原因。通常该术语指的是第一个定义。
-
但是整个问题是模糊的,因为许多解释语言也有编译步骤,它只是发生在运行时。因此,您要问的情况应该明确说明,否则唯一可以给出的答案是“视情况而定”。
-
@Lasse V. Karlsen,我的意思是“在编译时知道”,感谢您的回答,我只是想确定我是否认为这是正确的谢谢!!!!
-
举个例子:Haskell 是众所周知的静态类型 PL。您可以通过解释器
runhaskell hello.hs运行 Haskell 程序。 Haskell 确实首先检查类型——编译时间就在运行时间之前。
标签: types programming-languages interpreter static-typing