管理规范表单是代码的中间表示,适用于编译器,逻辑上等同于单静态分配但具有一些优点。例如,检查程序是否是有效的SSA表单是关于通过图表的可能路径集合的存在性问题。但是,检查程序是否是有效的ANF表达式只是本地语法的问题。
从严格的功能代码生成ANF非常容易,但我有兴趣从包含变量更新,循环等的命令式代码生成ANF。
将SSA转换为ANF有简单的算法。但是,如果您想快速生成SSA,那么首先生成SSA会变得非常重要。看起来直观的是,如果您想要最终得到的是更直接,更透明的格式,那么直接生成它而不是通过更不透明的形式应该更有效。
是否有已发布的算法直接从命令式代码生成ANF?