口译员的正式定义

时间:2012-02-01 17:16:39

标签: language-agnostic

我的书说: 如果存在称为L的语言和称为L'的语言,则用L'编写的解释器是实现部分函数I(L)的程序:(prog(L)×D) - > P(L)(D); 使用D =数据或输入,用L'编写的Prog(L)程序用L'编写的I(L)解释器解释语言L',P(L)的解释结果。 我不明白为什么域是Prog(L)xD,为什么不只是Prog(L),如果我有一个用python编写的简单指令,如:

s=input('enter a value: ')

这个案例我理解为什么这个域是Prog(L)xD,但是如果我只是:

s='hello'

此案例没有任何输入,有人可以向我解释为什么域名是Prog(L)xD吗?

1 个答案:

答案 0 :(得分:0)

@NealB在评论中对此进行了部分解决,但即使实际上没有数据,该域仍然只是Prog(L)xD,只是没有数据。

事实上,没有输入的事实是其领域的一部分。可以这样想:总会有一组有效的输入。对于不带数据的东西,这不会改变 - 它的有效数据是空集。你只是指明你不会接受输入。例如,如果你有f() = 100函数,并试图像f(23)那样调用它,那么显然你做了一些无效的事情。