程序转换系统,它将一种语言(你的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://www.jianshu.com/p/37573261d3cf https://blog.csdn.net/marlonyao/article/details/83816299
https://www.npmjs.com/package/swagger-markdown 做项目不是单纯的写完代码就结束了,还有文档,如果是接口开发,比较重要的一项就是接口文档,现在比较广泛使用的是swagger工具,在java中也提供了相应的swagger工具。虽然swagger很好用,但是在通用性上还是弱了一些,比如说记录到公司的文档工具就不是很方便。
antlr(ANother Tool for Language Recognition)是一个强大的语法分析器生成工具,它可用于读取,处理,执行和翻译结构化的文本和二进制文件。目前,该工具广泛应用于学术和工业生产领域,同时也是众多语言,工具和框架的基础。 今天我们就用这个工具实现一个go语言版的json2xml转换器;
https://gocn.vip/topics/10660 Twirp 是 Twichtv 2018 年开源的一套极简 RPC 框架,当时官方的介绍文章 Twirp: a sweet new RPC framework for Go。功能上比不上大名鼎鼎的 grpc,但是胜在小巧灵活,兼容 Go 原生的 http.Handler,可以与现有的任意 Router 和中间件搭配使用;同时支持 protobuf 和 json 格式传输,调试方便;另外我个人很喜欢它的 Error 实现,直观并且可扩展性还不错。