Bil*_*ill 19 parsing antlr static-analysis objective-c javacc
我喜欢静态分析和编译时检查,几乎是出错,但我今天的大部分工作都是在Objective-C中.为了解决这种紧张局势,我希望能够编写自己的分析工具,我可以在Objective-C项目上运行.
但是在互联网上搜索网络表明,人们很难将完整的Objective-C语法整合在一起.一个网站 基本上建议放弃.
我确实在ANTLR网站上找到了一个语法,但是当我把它解雇时,我根本无法解析它.例如,它回应了该行:
void x();
Run Code Online (Sandbox Code Playgroud)
同 src/main/resources/somecode.m line 1:0 no viable alternative at input 'void'
:(
我仔细研究了语法,发现以下令人沮丧的免责声明:
it's a work in progress, most of the .h file can be parsed
Run Code Online (Sandbox Code Playgroud)
但是我需要能够解析接口和实现的东西.
某处有完整的Objective-C 2.0语法吗?我更喜欢可以与Scala一起使用的东西(所以任何与Java兼容的东西,比如ANTLR,都是完美的),但是在这一点上,我愿意为另一个解析器工具包设计一些东西.
yan*_*yan 17
正如其他人所说,Clang将是正确的解决方案.您可以提供自己的AST使用者,即在浏览AST时将调用的类,这样您就不必担心解析或弄乱语法.
Clang完全支持Objective-C,静态分析器中已经有很多类可以为你自己的检查建模.(in clang/lib/StaticAnalyzer/Checkers
).
该目录包含许多静态分析器检查器,但您也可以创建一个普通的AST使用者.有关详细信息,请参阅http://code.google.com/p/chromium/wiki/WritingClangPlugins.
Clang是一个支持Objective-C的静态分析工具.我发现它在过去非常有用.
http://clang-analyzer.llvm.org/