|
|
1
3
刚刚找到。lambdaexpression的DLR版本公开了一个compileToMethod方法,它完全满足我的需要。
|
|
|
2
0
为了发出原始IL,您需要定义自己的AST。需要先获取assemblybuilder,然后获取modulebuilder,然后才能定义模块级方法,或者获取新的typebuilder,现在是methodbuilder来定义类级方法。 你说你已经有了lexer和parser。这意味着你可以建立AST。所以只需遍历解析的表达式并发出您的IL。 即使您得到(通过编译)代码,您也不能用它做一些有用的事情,因为生成的代码依赖于基础结构。例如,如果需要编译闭包,那么应该为词法变量等创建类或其他存储(如非词法控件传输,它需要在.NET中使用异常)。 |