繁体   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