网上有个软件,可以把C#写的程序源码和VB.net之间来回转,我现在要写一个类似的东西,把sql server 的sql文件转成mysqL可以用的,以前我有过写文本处理程序的经验,但是那基本就是替换关键字就行了,但是现在这种要把一种编程语言的源码改成另外一种,需要判断一段结构,比如一整段函数语句,一整段选择结构或循环结构,这个让我非常头疼,想知道业界在这个问题上采取的是什么方法?
其实这两种语句的框架大体是相同的,但还是用用内空来填充目标框架做法比较好,再根据两者之间的差异,建议建立差异维护作业,如 SqlServer [] MySql ``SqlServer 直接用 + MySql concat() 这些,在转换过程中你只要去维护表中找,不需要在代码中写,程式修改灵活!不要写死,所以我觉得这样的转换分析并不难写
http://baike.baidu.com/link?url=OE2tJTEqzD4643CJwzD2ur6DtiPGXBMkPRYoFOZZwO3YaluWCkIlLMa1t4htya8v
建议你好好看看编译原理,就知道怎么做了。
我只是想把一种sql方言改写成另外一种,靠机器分析自动生成
我只是想把一种sql方言改写成另外一种,靠机器分析自动生成你需要可靠性么?你需要通用性么?你见过那些靠字符串替换做成的语法转换有靠谱的么?
SqlServer []
MySql ``SqlServer 直接用 +
MySql concat()
这些,在转换过程中你只要去维护表中找,不需要在代码中写,程式修改灵活!不要写死,所以我觉得这样的转换分析并不难写
看看这个 http://www.cnblogs.com/RicCC/archive/2010/05/23/antlr-sql-parser.html
http://antlr.org/