Ran*_*ber 4 c python compiler-construction compiler-errors compilation
我想构建一个python程序,它将.c文件的路径作为输入,然后编译它.
如果编译成功,程序将输出OK到屏幕,否则输出BAD.
我一直试图谷歌,但找不到任何东西.我一直在尝试使用编译程序的参数在python中运行cmd,但它不起作用.
澄清 - 我已经在我的机器中有一个非常具体的编译器,我想运行它.我不希望python充当编译器.只需获取代码,在其上运行我的编译器,然后查看答案是什么.
谢谢
步骤1.获得PLY.Python Lex和Yacc. http://www.dabeaz.com/ply/
步骤2.找到C的Yacc/Lex配置.http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
步骤3.调整PLY以使用您找到的C语言规则.
第4步.运行.你正在"编译"C代码 - 检查语法.
您可以仅使用标准库编译 C 代码,它可以在每个平台和每个 Python 版本上运行(假设您实际上有一个 C 编译器可用)。查看distutils.ccompilerPython 用于编译 C 扩展模块的模块。一个简单的例子:
// main.c
#include <stdio.h>
int main() {
printf("Hello world!\n");
return(0);
}
Run Code Online (Sandbox Code Playgroud)
编译脚本:
# build.py
from distutils.ccompiler import new_compiler
if __name__ == '__main__':
compiler = new_compiler()
compiler.compile(['main.c'])
compiler.link_executable(['main.o'], 'main')
Run Code Online (Sandbox Code Playgroud)
其他所有内容(包括路径、库路径、自定义标志或链接参数或宏)都可以通过各种配置选项传递。查看上面指向模块文档的链接以获取更多信息。