1
我正在嘗試使用在https://github.com/antlr/grammars-v4處找到的antlr v4語法解析一個非常簡單的C文件。 該文件是這樣的:令牌識別錯誤:解析c語法時'#i'
#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語法不完整?
「#包括」不的一部分C語法。它與#define,#ifdef等一起由*預處理器*處理,這是一個與解析和編譯相分離的階段。 –
我如何在antlr中處理這個問題呢?在解析它之前是否需要預編譯我的代碼?我是否需要爲預處理添加規則以便能夠解析我的代碼? – BjornArnelid
兩種方法都可以。 –