Написать другой язык выше Javascript VM? - PullRequest
1 голос
/ 24 сентября 2010

Интересно, можно ли написать новый язык выше виртуальной машины Javascript, чтобы вы могли встраивать свой язык - который основан на javascript - и он будет работать вместе с нативным javascript.

Пример:

var person_exists = true; // native js

Animal eats banana // my language

console.log(person_exists) // native js

Я видел синтаксис Cappuccino, и они говорят, что он может быть запущен без компиляции в браузере.

Но затем я увидел синтаксис Coffeescript, и его нужно сначала скомпилировать в javascript.

Так можно ли создать новый синтаксис языка / javascript поверх виртуальной машины Javascript?

Если да, есть ли учебные пособия / книги о том, как это сделать?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Processing.js - это язык сценариев, который интерпретируется Javascript (насколько мне известно, он не скомпилирован в JS), вы можете взглянуть на этот подход.Processing.js специально предназначен для создания графики на веб-странице, поэтому он может быть не совсем тем, что вам нужно, но это пример наличия двух языков сценариев на одном веб-сайте.

(Обработка - это отдельный язык графикикоторый был впервые запущен в среде Java (а также в других реализациях), до того, как был создан элемент Canvas и была сделана другая реализация, основанная на Javascript.)

То, что вам нужно, - это «Javascript с моими собственными функциями»».Это возможно только в том случае, если вы (или кто-то еще) создаете интерпретатор JS + yourfeatures поверх Javascript.Хотя я не думаю, что это очень правдоподобно.Решение 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 голос
/ 24 сентября 2010

Конечно, см. GWT или Parenscript для некоторых совершенно разных примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...