2
我使用Antlr4解析C代碼,我使用下面的語法解析:獲取預處理線與解析C代碼antlr4
默認情況下上面的語法不提供任何解析規則獲得預處理器語句。
我改變了語法稍微得到通過添加以下行
externalDeclaration
: functionDefinition
| declaration
| ';' // stray ;
| preprocessorDeclaration
;
preprocessorDeclaration
: PreprocessorBlock
;
PreprocessorBlock
: '#' ~[\r\n]*
-> channel(HIDDEN)
;
而且在Java中,我使用下面的聽衆得到預處理線
@Override
public void enterPreprocessorDeclaration(PreprocessorDeclarationContext ctx) {
System.out.println("Preprocessor Directive found");
System.out.println("Preprocessor: " + parser.getTokenStream().getText(ctx));
}
的方法是預處理線從未觸發。有人可以提出一種獲得預處理器行的方法嗎?
輸入:
#include <stdio.h>
int k = 10;
int f(int a, int b){
int i;
for(i = 0; i < 5; i++){
printf("%d", i);
}
}
語法在給出的鏈接中。 –
您能否提供至少一行您嘗試解析的輸入,從#開始? – BernardK
#include int main(){ int a = 5; } –