2011-03-20 30 views
1

我的目标是制作一个程序(使用C++),它将C源代码作为输入并检查"SYNTAX ERRORS ONLY"继续C语法分析器相关项目的混乱

现在,我需要了解正则表达式,语法生成和解析器吗?

我想等工具的Yacc /柔性/野牛 - 但我面临的问题是 -

  1. 如何使用这些工具?我的意思是,当我阅读这些工具时,我只是在表面上刮擦 - 我感到无能为力。

  2. 如何将这些工具与我的C++源代码串联使用?

  3. How "The Hell" do i Get Started with this?

回答

2

使用别人的C语法分析器。例如,clang项目使用的解析器。 http://clang.llvm.org/

然后你可以专注于你的问题的其他难题:检测错误。

0

它们的名称通常以lint命名,这一切都取决于您想要检查的错误类型。

在任何情况下,您当然需要了解更多关于编译器体系结构的知识。本书是一本参考http://www.cs.princeton.edu/~appel/modern/c/

还看到:
http://decomp.ulb.ac.be/roelwuyts/playground/canalysistools/
http://wiki.altium.com/display/ADOH/Static+Code+Analysis+-+CERT+C+Secure+Code+Checking

有人在我以前的实验室对C和C++分析和改造 http://www.lrde.epita.fr/cgi-bin/twiki/view/Transformers/ 工作目前该项目处于待机状态,并已被证明是一个即使是用于编译写入的人也是复杂的主题(特别是在C++转换的情况下)。

最后您的需求也许比这更简单。你想想

FILE *output = popen("gcc -Wall my_c_file.c", "r"); 

(然后就检查GCC的输出)

0

你如何定义“语法错误ONLY”?如果您只想知道错误是什么,为什么不调用外部gcc来执行编译并报告错误?