令牌识别错误:' #i'在解析c语法时

时间:2014-03-13 11:28:36

标签: java parsing antlr4

我试图使用在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语法不完整吗?

1 个答案:

答案 0 :(得分:2)

就我在当前提交的版本中看到的而言,所提供的语法不支持#include指令。

实际上#include指令不是C语法的一部分,因此它通常不是由编译器处理,而是由预处理器处理

Definition of the C preprocessor