2011-04-22 90 views
2

我想将C应用程序翻译成.Net,并考虑如何自动执行任务。我不需要“解析”和编译C文件,而是我想重新创建一个项目结构,创建一个与C文件相对应的.Net类。是否有意义查看YACC/LEX工具和其他解析器发电机?如果我能够从C代码创建AST,也许我可以从它得到一个C#代码?c - > c#翻译,工具

+6

即使有一个工具可以做到这一点,我认为使用它会是一个糟糕的主意:惯用的C和惯用的C#几乎完全不同,你可能会更好地重写C#中的代码并确保它被正确写入(或者如果有很多代码,请将其写成C,然后将其包装在C#中)。 – 2011-04-22 05:36:26

+0

(这并不意味着冒犯)惯用语何时出现?每次我看到它使用它似乎扼杀某人。如果你用惯用的方式编写我的猜测,那么你可能走过了一条包含许多曲折的道路,比如在那里想知道c到c#编译器(再一次没有犯法意图)。 – 2011-04-22 05:43:18

+1

@Gabriel - 语言代码是您认为写入特定语言的代码。直译经常是不好的,不可维护的。就像你从英文翻译成德文一样,你必须考虑编程语言中表达的方式。 – 2011-04-22 06:36:26

回答

3

发现code2code从C++从

转换关于第二个想法:
一般情况下,你最有可能从重新设计的实施和重写在C#代码中获益,在使用.NET库的强大功能时,许多以前在C中使用多行的东西有时可能只是一行。你会得到更小,更高效和更容易管理的代码库。

+0

但这只是可能的好,因为C++是面向对象的。在C中没有任何对象,因为我们在C#中知道它们。 – andrewjs 2011-04-22 05:39:35

+1

+1重新评论。 IMO C和C#如此不同,以至于任何类型的转换都不会结束。 – Euphoric 2011-04-22 06:30:05

+0

看起来像链接不工作((但是,无论如何,也许这是我正在寻找 – 2011-04-23 02:32:28