|
|
1
7
很难用如此宽泛的术语回答一个问题,但以下是我的一些想法。 使用F#构建解析器听起来不错。 FSParsec是一个很棒的库。我有点偏爱FSLex和FSYacc。无论哪种方式,在F#中都有专门为解析而设计的库,可以节省您的时间。 使用DLR生成代码听起来正常。 DLR是动态代码生成的绝佳平台。但是,您的应用程序要具体得多。如果您仅限于计算值,则应使用来自的表达式树API。净3.5。此API是为表示任意代码表达式而设计的。另一方面,DLR被设计为运行时或动态语言。我并不是说这是不可能的,只是说它不是完成这项工作的合适工具。 不要编译生成的代码。 如果你确实使用DLR来表示你的AST,编译和执行的成本可能会远远高于简单地解释树。如果满足以下条件,请编译代码:A.)你多次执行同一个函数/方法;B.)函数/方法 复杂。 C#+DLR、IronPython、F#或三者的组合都是不错的选择。最终,“正确”的选择是在尽可能快的时间内完成工作的选择。 |