облегченный javascript для синтаксического анализатора javascript

Как мне написать облегченный javascript для парсера javascript. Что-то простое, что может преобразовать некоторые фрагменты кода.

Я хотел бы в основном сделать объекты внутренней области в функциях общедоступными.

Так что что-то вроде этого

var outer = 42;
window.addEventListener('load', function() {
   var inner = 42;
   function magic() {
       var in_magic = inner + outer;
       console.log(in_magic);
   }
   magic();
}, false);

Компилируется в

__Scope__.set('outer', 42);
__Scope__.set('console', console);
window.addEventListener('load', constructScopeWrapper(__Scope__, function(__Scope__) {
    __Scope__.set('inner', 42);
    __Scope__.set('magic',constructScopeWrapper(__Scope__, function _magic(__Scope__) {
        __Scope__.set('in_magic', __Scope__.get('inner') + __Scope__.get('outer'));
        __Scope__.get('console').log(__Scope__.get('in_magic'));
    }));
    __Scope__.get('magic')();
}), false);

Пример демонстрации

Мотивация, стоящая за это необходимо для сериализации состояния функций и замыканий и их синхронизации на разных машинах (клиент, сервер, несколько серверов). Для этого мне понадобится представление [[Scope]]

Вопросы:

  1. Могу ли я сделать такой компилятор без написания полного JavaScript -> (немного другого) компилятора JavaScript?
  2. Как бы Я собираюсь написать такой компилятор?
  3. Могу ли я повторно использовать существующие компиляторы js -> js?

16
задан Raynos 27 July 2011 в 22:21
поделиться