我正在研究Python的宏观系统(as discussed here),我一直在考虑的其中一项是度量单位。虽然度量单位可以在没有宏或通过静态宏实现的情况下实现(例如,提前定义所有单位),但我正在考虑允许在运行时动态扩展语法。解析的部分评估
为此,我正在考虑在编译时对代码进行一种部分评估。如果给定表达式的解析失败,由于宏的语法不可用,编译器将暂停对函数/块的评估,并生成已存在的未知表达式存根的代码。在运行时命中该存根时,该函数将针对当前宏集重新编译。如果此编译失败,则会抛出解析错误,因为执行无法继续。如果编译成功,则新函数会替换旧函数并继续执行。
我看到的最大问题是,在受影响的代码运行之前,您无法找到分析错误。但是,这不会影响很多情况,例如像[],{},()和``这样的组运算符仍然需要配对(我的tokenizer/list分析器的要求),而类和函数等顶级语法不会受到影响,因为它们的“运行时”真正加载时间,语法的评估和对象的生成。
除了上面描述的实施难度和问题,这个想法有什么问题吗?
感谢您的输入。赏金可能是所发生的最好的事情。给它多一点时间来看看还有什么进来,但在赏金期结束之前,我会标记一个可接受的答案。再次感谢:) – 2009-01-27 13:45:43
我希望我可以帮助更多。我不认为这应该是你的赏金=)但是赏金显然将我的注意力引向了你的帖子。 – 2009-01-27 14:06:06