Ray*_*nos 16 javascript compiler-construction parsing
我将如何将轻量级JavaScript写入javascript解析器.简单的东西,可以转换一些代码片段.
我想基本上在函数public中创建内部范围对象.
所以这样的事情
var outer = 42;
window.addEventListener('load', function() {
var inner = 42;
function magic() {
var in_magic = inner + outer;
console.log(in_magic);
}
magic();
}, false);
Run Code Online (Sandbox Code Playgroud)
会编译到
__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);
Run Code Online (Sandbox Code Playgroud)
这背后的动机是序列化功能和闭包的状态,并使它们在不同的机器(客户端,服务器,多个服务器)之间保持同步.为此,我需要一个代表[[Scope]]
问题:
如果你想要一个简单界面的东西,你可以尝试node-burrito: https: //github.com/substack/node-burrito
它使用 uglify-js 解析器生成 AST,然后递归地遍历节点。您所要做的就是提供一个测试每个节点的回调。您可以更改需要更改的内容,它会输出结果代码。
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |