![](/img/trans.png)
[英]Parsing Nested Structures/Unions defined in C/C++ header files in XML
[英]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.