![](/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.