相关疑难解决方法(0)

我可以对代码强制执行哪些模式,以便更容易翻译成另一种编程语言?

我打算做一个侧面项目,其目标是将代码从一种编程语言转换为另一种编程语言.我开始使用的语言是PHP和Python(Python到PHP应该更容易开始),但理想情况下我可以添加其他语言(相对)轻松.计划是:

  • 这是面向Web开发的.原始代码和目标代码将位于框架之上(我也必须编写).这些框架将采用MVC设计模式并遵循严格的编码约定.这应该使翻译更容易一些.

  • 我也在研究IOC和依赖注入,因为它们可能使翻译过程更容易,更不容易出错.

  • 我将使用Python的解析器模块,它让我摆弄抽象语法树.显然,我可以用PHP获得的最接近的是token_get_all(),这是一个开始.

  • 从那时起,我可以构建AST,符号表和控制流程.

然后我相信我可以开始输出代码了.我不需要完美的翻译.我仍然需要检查生成的代码并修复问题.理想情况下,翻译人员应标记有问题的翻译.

在你问"这到底是什么意思?"之前 答案是......这将是一次有趣的学习经历.如果您对如何减少这种麻烦有任何见解,请告诉我.


编辑:

我更感兴趣的是知道我可以在代码上强制执行哪种模式,以便更容易翻译(即:IoC,SOA?)代码而不是如何进行翻译.

php python compiler-construction coding-style abstract-syntax-tree

95
推荐指数
3
解决办法
2万
查看次数

将一种语言翻译成另一种

是否可以使用口译员将一种语言翻译成另一种语言?

听说quercus可以将php翻译成java吗?起初,我认为这是一个廉价糟糕的解决方案,可能会导致代码错误,但似乎完全有可能这样做.

你能将php翻译成其他语言,比如python或ruby吗?c ++到java等等?

language-agnostic programming-languages code-translation

7
推荐指数
2
解决办法
5144
查看次数

从Cobol移植到Java

Cobol和Java的顶级架构之间有什么不同?

程序员在这两种语言中采用的风格和文化是什么?

如何才能从Cobol到Java最好的端口?

java cobol

6
推荐指数
1
解决办法
5599
查看次数

"语言转换器"的经验?

我读过几篇提到从一种语言到另一种语言的转换器的文章.

我对使用这种工具持怀疑态度.有没有人知道或有经验让我们说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 …

java ms-access code-migration converters

5
推荐指数
2
解决办法
424
查看次数

迁移COBOL代码

我有一个任务将COBOL代码转换为.NET.有可用的转换器吗?我试图在高级别了解COBOL代码.我无法理解COBOL代码.有流程图生成器吗?我感谢任何帮助.

谢谢..

cobol flowchart

5
推荐指数
3
解决办法
3823
查看次数

何时使用抽象或具体的语法树?

我一直在研究编译器.词法分析器似乎非常直接:取一个"句子"并将其分解为单词(或标记).为了确保正确的语法,需要一个解析器.解析器通常采用令牌并构建一个树,从而产生根节点(将单词分为句子,段落,页面等等).

这个问题来看,似乎解析器会构建一个AST.AST只包含执行代码所需的内容,所以括号之类的内容是不必要的,因为运算符优先级内置在AST中.AST可能都是编译器需要的.

但是如何将代码从一种语言转换为另一种语言?采用一种伪造的语言(语法)或现有的语法并将其转换为另一种语言,其中运算符优先级规则可能会有所不同?运营商优先还是"内置"到CST吗?

举个例子,假设我编写了一种语言,并希望将其翻译成PHP代码.大多数语言的三元运算符具有从右到左的关联性.PHP错误地使用从左到右的关联性(请在此处查看更多相关信息).我希望"我的语言"从右到左使用,但生成的PHP代码必须应用括号才能在PHP中获得正确的结果(通过指向Wikipedia链接,结果需要是"train"而不是"horse").

因此,对于语言翻译,CST会更好吗?运营商优先级通常是否构建在CST中?介于两者之间吗?有没有例子比较两个树和一个简单的代数方程?任何说明三元运算符的例子?

("转码"是"编程语言翻译"的正确术语吗?谷歌搜索会带来转换媒体.)

我想弄清楚的是:什么时候使用一个比另一个更合适?

compiler-construction abstract-syntax-tree concrete-syntax-tree

5
推荐指数
1
解决办法
1290
查看次数