javascript - 在 Javascript VM 之上编写另一种语言?

标签 javascript compilation

我想知道是否有可能在 Javascript VM 之上编写一种新语言,以便您可以嵌入您的语言 - 它基于 javascript - 并且它可以与 native javascript 一起工作。

例子:

var person_exists = true; // native js

Animal eats banana // my language

console.log(person_exists) // native js

我看过 Cappuccino 的语法,他们说它可以在浏览器中运行而无需编译。

但后来我看到了 Coffeescript 的语法,那必须先编译成 javascript。

那么是否有可能在 Javascript VM 之上创建一种新的语言/javascript 语法?

如果是,是否有关于如何执行此操作的教程/书籍?

最佳答案

Processing.js是一种由 Javascript 解释的脚本语言(据我所知是解释的,而不是编译为 JS),你可以看看那个方法。 Processing.js 专为在网页上生成图形而量身定制,因此它可能不是您所需要的,但它是在一个网站上使用两种脚本语言的示例。

(Processing 是一种独立的图形语言,它首先在 Java 环境(以及其他实现)中运行,然后才构思出 Canvas 元素并进行了另一种基于 Javascript 的实现。)

您似乎想要的是“具有我自己的功能的 Javascript”。这只有在您(或其他人)在 Javascript 之上构建 JS+您的功能解释器时才有可能。不过,我认为这不是一件非常合理的事情。 Processing.js 的解决方案可能是一个很好的中间地带,您可以将自己的语言与实际的 Javascript 分开 - 也就是说,如果您的语言和常规 JS 可以分开。

<script language="javascript">
  var person_exists = true; // native js
  interpret("animal"); // your language interpreter. Interpret function looks through the DOM for a script tag with the "myscript" language and the 'animal' ID.
  console.log(person_exists) // native js
</script>
<script language="myscript" id="animal">
   Animal eats banana // your language
</script>

不过,我建议在跳到“我知道,我会开发自己的语言!”之前先考虑一下您“真正”想要的是什么!部分。怎么了

Animal = {
   eats: function(fruit) {
       console.log('om nom nom nom ' + fruit);
   }
};

var person_exists = true;
Animal.eats(banana);
console.log(person_exists);

例如?

关于javascript - 在 Javascript VM 之上编写另一种语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3785812/

相关文章:

c++ - C++ 中 {} 和 {0} 的大括号初始化区别

c++ - 编译器是否按照您编写它们的相同顺序放置 && 语句的子句?

c++ - 在 Mac 上使用 intel 编译器编译 C++ 代码时出现错误 : expected an identifier

javascript - 如何在 Selenium 中将 Canvas 保存为 PNG?

javascript - 尝试将 haml-coffee 与expressJS 应用程序一起使用时出现奇怪的错误

javascript - 导出 Node 中的属性?

r - 编译 R 需要 zlib/bz2 库和头文件

javascript - 如何使属性/方法可调用或不可调用?

javascript - GraphQL 对象属性应该是一个字符串列表

c++ - 如何在 Visual Code Editor 中为 C++ 项目准备/配置开发环境?