我要回到一个旧项目,在那里我将预处理器功能添加到Essence',我意识到我之前编写域特定语言和相关词法分析器/解析器的解决方案是过度的。
相反,我只需要能够将动态语言代码嵌入到文件中,在运行时隔离它,eval并插入结果。换句话说,非常类似于将动态代码插入HTML的PHP模型。我宁愿不使用PHP,因为Python作为更大项目(IronPython或Jython)的一部分更容易分发
所以问题是,如何最好地实现以下内容:
<code>Python goes here</code>
Lots of essence <code>Python</code> prime code goes here
我不想改变Essence文件的结构(如果我删除所有代码块,剩下的一切应该能够在语法上正确。它需要能够插入文本代替代码阻止像PHP。
最后安全方面我并不担心代码注入,因为用户自己会选择要执行的文件,尽管如果一个模型比另一个模型有安全优势而没有明显好的额外成本。
提前干杯