我知道任何源代码都可以转换为AST。现在我想将该AST转换回源代码,但是与语言无关。有什么工具可以帮助我吗?
通过独立于语言,我特别指python
和java
。从AST生成源代码
回答
你记住的是一个源代码翻译器,它涉及的不仅仅是从分析树生成一些代码(ANTLR4不会创建AST顺便说一句)。通常这样的翻译器将解析树转换成一个中间表示,它抽象出不同的语言结构,然后用它来生成目标语言的代码(对目标语言中不可用的源语言的所有内容进行大量的特殊处理,优化等等。)。
根据我的意见,您无法将AST转换回源代码。由于生成的ast可能是任何语言,因此您无法将该ast转换回您想要的任何语言。
可能值得强调的是,任何特定的AST仍然代表程序使用的语言语法,因此不能直接转换为另一种语言 –
如果您正确设计AST,它们将携带足够的信息重新生成由AST节点表示的语言的等效源文本。将一种语言的AST转换为另一种语言是可能的,但这实际上是代码代码迁移,而不是重新生成源文本。有关更多细节,请参阅https://stackoverflow.com/questions/3455456/what-kinds-of-patterns-could-i-enforce-on-the-code-to-make-it-easier-to- translat/3460977#3460977 –
- 1. 使用Antlr4和StringTemplates从AST生成源代码
- 2. 从源代码到AST到CodeDom
- 3. 从Python AST生成.pyc?
- 4. 从eclipse sirius生成源代码
- 5. 从IE生成HTML源代码DOM
- 6. 从源代码生成类图
- 7. antlr - 从java源代码生成语法
- 8. 从MATLAB源代码生成文件
- 9. 从java源文件代码生成
- 10. 生成AST
- 11. 将AST编译回源代码
- 12. 转换Jython的源代码/ ast
- 13. 执行从Rust/Python源代码生成的LLVM IR代码
- 14. 从源码生成rabbitmq
- 15. C源代码AST中的AST解析器
- 16. 下面的代码段如何工作以生成AST?
- 17. 从C#代码生成汇编代码?
- 18. 代码从Selenium IDE生成的代码
- 19. 我无法从c源代码使用cdt plugin eclipse获取AST
- 20. 从没有源代码的.Net程序集(IL代码)获取AST
- 21. 如何为从假想语言中解析出的AST树生成代码?
- 22. 从Emacs生成代码
- 23. 从python生成MATLAB代码
- 24. 从Swagger生成Rails代码
- 25. 从* .slx生成C++代码
- 26. 从HTML生成Emmet代码
- 27. 从wsdl生成AS3代码
- 28. 从C#生成XML代码
- 29. PHP源代码PO文件生成
- 30. 自动生成Java源代码
如果您没有将AST恢复到源代码来源,那么如果不是已知语言,目标语法是什么? –
如果您的AST构建器在AST中留下了足够的信息,您只能重新生成文本。 ANTLR主要不是(例如,这个数字的显示基数是什么?)如果你想知道如何做到这一点,请参阅我对“编译AST回源代码”的回答https://stackoverflow.com/a/5834775/120163 –