Как я могу написать легкий 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]]
Вопросы:
- Могу ли я сделать этот компилятор без написания полного JavaScript → (немного другого) компилятора JavaScript?
- Как я могу написать такой компилятор?
- Можно ли повторно использовать существующие компиляторы js → js?