Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java编写的C编译器_Java_C_Compiler Construction - Fatal编程技术网

用java编写的C编译器

用java编写的C编译器,java,c,compiler-construction,Java,C,Compiler Construction,我想将c语言编译器集成到java应用程序中,以编译c源代码,而无需创建文件(如java编译器Api)。有没有完全用java编写的c编译器?Antll有一个c语言版本。为特定平台生成汇编代码的问题没有为您解决,但您可以通过AST并发出指令,只要您知道它们应该是什么。您可以从Google代码中查看此链接 向开发者说声恭喜:)-不是我:p- 另一个选项是:将源代码解析为AST通常是编译器最简单的部分。语义分析和代码生成将是一项艰巨的任务。我同意这一点,Paul。代码生成是特定于平台且困难的。根据定义,

我想将c语言编译器集成到java应用程序中,以编译c源代码,而无需创建文件(如java编译器Api)。有没有完全用java编写的c编译器?

Antll有一个c语言版本。为特定平台生成汇编代码的问题没有为您解决,但您可以通过AST并发出指令,只要您知道它们应该是什么。

您可以从Google代码中查看此链接

向开发者说声恭喜:)-不是我:p-


另一个选项是:

将源代码解析为AST通常是编译器最简单的部分。语义分析和代码生成将是一项艰巨的任务。我同意这一点,Paul。代码生成是特定于平台且困难的。根据定义,C编译器依赖于平台,因为生成的汇编代码绑定到平台。ANTLR对汇编代码生成没有帮助,但其他任何东西也没有帮助。如果您理解的话,这是一个困难的问题。您的平台无关结论是基于“将x86作为您的VM语言”的假设。当我说机器代码绑定到平台时,我没有做出假设。我意识到C语言独立于为它生成的机器代码。我说的是第二步——机器代码生成——在使用C标准语法将源代码解析为AST之后;解释器可以执行特定于机器的I/O、内存访问和操作系统调用。同意,如果你想用C来表示任意的低级金属,你必须清楚金属是什么。OP不清楚他的目标。您指向github C编译器的链接没有指向github,并且链接已断开。已修复,感谢您的通知!(好久不见了)