在Javascript VM上面写另一种语言?

时间:2010-09-24 09:35:51

标签: javascript compilation

我想知道是否可以在Javascript VM之上编写一种新语言,以便您可以嵌入您的语言 - 这是基于javascript的 - 它将与本机javascript一起使用。

示例:

var person_exists = true; // native js

Animal eats banana // my language

console.log(person_exists) // native js

我见过Cappuccino的语法,他们说它可以在浏览器中没有编译的情况下运行。

但后来我看到了Coffeescript的语法,并且必须首先编译为javascript。

那么可以在Javascript VM之上创建一个新的语言/ javascript语法吗?

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

2 个答案:

答案 0 :(得分:2)

Processing.js是一种由Javascript解释的脚本语言(根据我的解释,已解释,未编译为JS),您可以查看该方法。 Processing.js专门用于在网页上生成图形,因此它可能不是您所需要的,但它是在一个网站上拥有两种脚本语言的示例。

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

你想要的是'带有我自己功能的Javascript'。这只有在你(或其他人)在Javascript之上构建JS + yourfeatures解释器时才有可能。我认为这不是一件非常合理的事情。 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);

例如?

答案 1 :(得分:1)

当然,请参阅GWTParenscript了解一些完全不同的示例。