簡體   English   中英

解析 C Header 文件

[英]Parsing C Header Files

我有一個 C header 文件,我已經使用gcc -E標志進行了預編譯,現在我正在嘗試使用 Lex 和 Yacc 進行解析; 但是,它被 typedef 的變量掛斷了。

例如:

typedef unsigned long ULONG;
ULONG i = 5;

將在第二行的 ULONG 處引發語法錯誤。

我試圖重新定義部分語法(在此處找到) http://www.quut.com/c/ANSI-C-grammar-y.html ,特別是在type_specifer下,將TYPE_NAME替換為IDENTIFIER ,但是會創建多個 s/我無法修復的 r 和 r/r 錯誤。

您還有其他方法可以推薦嗎? 還是一起預編譯的不同方法?

在您鏈接的代碼中:
http://www.quut.com/c/ANSI-C-grammar-y.html

看底部:
你會看到這個 function

int check_type(void)
{
 /*
  * pseudo code --- this is what it should check
  *
  * if (yytext == type_name)
  *     return TYPE_NAME;
  *
  * return IDENTIFIER;
  */

/*
 *  it actually will only return IDENTIFIER
 */

    return IDENTIFIER;
}

您實際上需要編寫識別天氣序列的代碼(yytest,yytext+yylength] 是標識符或 TYPE_NAME。這意味着在解析器中,您需要在解析代碼時構建一些結構,以便此 function 可以查找結構中的標識符。

使用默認類型 char/int/short/long/float/double 等預先填充結構。在解析輸入時需要添加其他類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM