我试图使用在https://github.com/antlr/grammars-v4找到的antlr v4语法解析一个非常简单的C文件。 该文件如下所示:
#include <stdio.h>
int main()
{
printf("hello world!");
return 0;
}
我正在尝试解析这样的文件:
public void parse(FileInputStream myFile) throws IOException {
ANTLRInputStream source = new ANTLRInputStream(myFile);
CLexer lexer = new CLexer(source);
CommonTokenStream stream = new CommonTokenStream(lexer);
CParser parser = new CParser(stream);
ParseTree tree = parser.primaryExpression();
ParseTreeWalker.DEFAULT.walk(new MyParseListener(), tree);
}
当我试图解析它时,我会得到错误。
line 1:0 token recognition error at: '#i'
我需要做另一个步骤来处理预处理吗? C语法不完整吗?
答案 0 :(得分:2)
就我在当前提交的版本中看到的而言,所提供的语法不支持#include指令。
实际上#include指令不是C语法的一部分,因此它通常不是由编译器处理,而是由预处理器处理