求个思路,批量文本转换器是怎么写出来的?
网上有个软件,可以把C#写的程序源码和VB.net之间来回转,我现在要写一个类似的东西,把sql server 的sql文件转成mysqL可以用的,以前我有过写文本处理程序的经验,但是那基本就是替换关键字就行了,但是现在这种要把一种编程语言的源码改成另外一种,需要判断一段结构,比如一整段函数语句,一整段选择结构或循环结构,这个让我非常头疼,想知道业界在这个问题上采取的是什么方法?
------解决方案--------------------编译原理没学过?
那你的知识水平离解决这个问题还很远,甚至在这个问题上你连门是什么都不知道。
------解决方案--------------------楼主,如果是简单的字符串替换,你起码要熟知两种之间的差异性和相同性,然后利用字符串的常用处理方式来处理(正则算是一种比较靠谱的方式),如果需要语言之间的转换,肯定需要如楼上所说的语法分析等等。
根据你所趋向的方向做出选择。
------解决方案--------------------其实这两种语句的框架大体是相同的,但还是用用内空来填充目标框架做法比较好,再根据两者之间的差异,建议建立差异维护作业,如
SqlServer []
MySql ``
SqlServer 直接用 +
MySql concat()
这些,在转换过程中你只要去维护表中找,不需要在代码中写,程式修改灵活!不要写死,所以我觉得这样的转换分析并不难写
------解决方案--------------------antlr 相比其他的还是比较简单的
看看这个 http://www.cnblogs.com/RicCC/archive/2010/05/23/antlr-sql-parser.html
http://antlr.org/