我打算做一个侧面项目,其目标是将代码从一种编程语言转换为另一种编程语言.我开始使用的语言是PHP和Python(Python到PHP应该更容易开始),但理想情况下我可以添加其他语言(相对)轻松.计划是:
这是面向Web开发的.原始代码和目标代码将位于框架之上(我也必须编写).这些框架将采用MVC设计模式并遵循严格的编码约定.这应该使翻译更容易一些.
我也在研究IOC和依赖注入,因为它们可能使翻译过程更容易,更不容易出错.
我将使用Python的解析器模块,它让我摆弄抽象语法树.显然,我可以用PHP获得的最接近的是token_get_all(),这是一个开始.
从那时起,我可以构建AST,符号表和控制流程.
然后我相信我可以开始输出代码了.我不需要完美的翻译.我仍然需要检查生成的代码并修复问题.理想情况下,翻译人员应标记有问题的翻译.
在你问"这到底是什么意思?"之前 答案是......这将是一次有趣的学习经历.如果您对如何减少这种麻烦有任何见解,请告诉我.
我更感兴趣的是知道我可以在代码上强制执行哪种模式,以便更容易翻译(即:IoC,SOA?)代码而不是如何进行翻译.
php python compiler-construction coding-style abstract-syntax-tree
是否可以使用口译员将一种语言翻译成另一种语言?
听说quercus可以将php翻译成java吗?起初,我认为这是一个廉价糟糕的解决方案,可能会导致代码错误,但似乎完全有可能这样做.
你能将php翻译成其他语言,比如python或ruby吗?c ++到java等等?
Cobol和Java的顶级架构之间有什么不同?
程序员在这两种语言中采用的风格和文化是什么?
如何才能从Cobol到Java最好的端口?
我读过几篇提到从一种语言到另一种语言的转换器的文章.
我对使用这种工具持怀疑态度.有没有人知道或有经验让我们说Visual Basic到Java或vs转换器?只是一个例子来挑选
http://www.tvobjects.com/products/products.html,声称在这方面是"世界领导者"左右,但如果读到这个:
http://dev.mysql.com/tech-resources/articles/active-grid.html
在那里,作者说:
"The consensus of MySQL users is that automated conversion tools for MS Access do not work. For example, tools that translate existing Access applications to Java often result in 80% complete solutions where finishing the last 20% of the work takes longer than starting from scratch."
Well we know we need 80% of the time to implement the first 80% functionality and another 80% of the time for the other 20 %....
So …
我有一个任务将COBOL代码转换为.NET.有可用的转换器吗?我试图在高级别了解COBOL代码.我无法理解COBOL代码.有流程图生成器吗?我感谢任何帮助.
谢谢..
我一直在研究编译器.词法分析器似乎非常直接:取一个"句子"并将其分解为单词(或标记).为了确保正确的语法,需要一个解析器.解析器通常采用令牌并构建一个树,从而产生根节点(将单词分为句子,段落,页面等等).
从这个问题来看,似乎解析器会构建一个AST.AST只包含执行代码所需的内容,所以括号之类的内容是不必要的,因为运算符优先级内置在AST中.AST可能都是编译器需要的.
但是如何将代码从一种语言转换为另一种语言?采用一种伪造的语言(语法)或现有的语法并将其转换为另一种语言,其中运算符优先级规则可能会有所不同?运营商优先还是"内置"到CST吗?
举个例子,假设我编写了一种语言,并希望将其翻译成PHP代码.大多数语言的三元运算符具有从右到左的关联性.PHP错误地使用从左到右的关联性(请在此处查看更多相关信息).我希望"我的语言"从右到左使用,但生成的PHP代码必须应用括号才能在PHP中获得正确的结果(通过指向Wikipedia的链接,结果需要是"train"而不是"horse").
因此,对于语言翻译,CST会更好吗?运营商优先级通常是否构建在CST中?介于两者之间吗?有没有例子比较两个树和一个简单的代数方程?任何说明三元运算符的例子?
("转码"是"编程语言翻译"的正确术语吗?谷歌搜索会带来转换媒体.)
我想弄清楚的是:什么时候使用一个比另一个更合适?
compiler-construction abstract-syntax-tree concrete-syntax-tree