程序转换系统,它将一种语言(你的DSL)的语法结构映射到其他语言中的语法模式。这样的工具可以在代码生成项目期间执行任意转换(树重写一般化字符串重写,这是Post系统,具有完全图灵功能),这意味着您生成的内容和生成过程的复杂程度仅由您的野心决定,而不是“代码生成器框架”属性。 Sophtisticated程序转换系统结合了各种类型的范围,流量分析和/或自定义分析器来实现转换。这并没有增加任何理论能力,但它增加了许多实际功能:大多数真实语言(甚至DSL)都有名称空间,控制和数据流,需要类型推断等。 我们的DMS软件再造工具包就是这种类型的转换系统。它已被用于分析/转换传统语言和DSL,简单和复杂的语言,以及小型,大型甚至是巨大的软件系统。 与OP关于“将AST转换为其他语言”的评论相关,这是由DMS通过编写将DSL的表面语法(在他的DSL的AST后面实现)映射到目标语言的表面语法(使用目标实现)的转换来完成的。语言AST)。然后由DMS自动绘制得到的目标语言AST,以提供目标语言的实际源代码,其对应于目标AST。
https://zhuanlan.zhihu.com/p/25696396
https://segmentfault.com/a/1190000015127116
https://astexplorer.net/
https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md
https://github.com/xtx1130/blog/issues/7
https://babeljs.io/docs/en/
https://blog.csdn.net/weixin_39408343/article/details/95984062
https://blog.csdn.net/liwei113114/article/details/84171522
https://zhuanlan.zhihu.com/p/37499178
https://www.iteye.com/blog/liwei113114-1458525
https://blog.csdn.net/LoveLion/article/details/20309379
https://www.zhihu.com/question/50990692?sort=created
https://github.com/KhronosGroup/glslang
https://github.com/unknownworlds/hlslparser
https://www.bilibili.com/read/cv5594874/
https://pragprog.com/