【问题标题】:Transpiler and compiler转译器和编译器
【发布时间】:2014-01-13 08:10:29
【问题描述】:

我想知道转译器和编译器之间的关系。

例如,我有一种语言('让我们称之为 foo'),它将被转译为 javascript。

foo -----transpiled-----> javascript

但是 foo 在 javascript 下是受限的吗?

如:“没有服务器端脚本的帮助,JavaScript 无法写入服务器上的文件”

foo ----x----> write to files on the server without the help of a server side script

如果可以,是否可以退出javascript的限制?

比如让 foo 能够自己写入文件。

foo ---------> write to files on the server

注意:我要求的是解释和原因等等,而不是代码!

再次注意:是否有可能通过其他库退出限制?

编辑:那么,如果我从其他语言(如 python)添加另一个库,是否有助于退出限制?

【问题讨论】:

  • 如果你的输出是 Javascript,那就是 Javascript。它不会因为你是从其他东西生成的而产生新的特性或功能。
  • 如何让浏览器运行这些库?即使您确实设法让浏览器运行 python 代码,这对将文件写入您的 Web 服务器有何帮助?该 python 代码仍将在某人的机器上运行,而不是在您的服务器上。
  • 您不能“将 CGI 用作库”。 CGI 运行在 服务器 而不是运行 JS 的客户端。
  • 你的建议就像给电视拍照,然后期待照片移动。
  • 不,您不能“将电视用作图书馆”。

标签: javascript code-translation


【解决方案1】:

您无法退出目标语言的限制。但是,您可以创建一个兼容层,模拟缺少的功能并以某种方式提供功能。

在您的示例中,如果 foo 内部函数 writefile() 是写入文件的函数,您可以创建一个库,该库提供一个 writefile 函数,该函数使用 ajax 将文件存储到服务器(或 cookie 或本地存储等) )。无需更改原始 foo 脚本即可工作。

这正是编写转译器的主要部分之一:您不仅需要翻译语言,还必须模仿缺失的功能。

(您也可以选择禁用缺少的功能)

【讨论】:

  • 感谢您:“这正是编写转译器的主要部分之一:您不仅需要翻译语言,还必须模拟缺失的功能。”
【解决方案2】:

Transpiler 是一种编译器,它以一种编程语言的源代码为输入,并将源代码输出到另一种编程语言中。

因此,在输出中,您有一个包含目标语言源的文件,对于您的示例,它的 javascript,并且该文件将被执行,因此如果您在 javascript 上手动创建它,结果是相同的。

所以回答你的问题:不,它不可能退出限制目标语言,因为最终你可以在这种语言上执行程序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多