问题标签 [pycparser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2135 浏览

python - 使用 PycParser 解析 ac 文件时提取输入参数及其标识符类型

注意:熟悉 pycparser 的人会更好地理解这个问题。

我正在使用pycparser v2.10,我正在尝试提取已在 C 文件中定义的所有函数,并在解析该 C 文件时提取其输入参数名称和标识符类型(使用 pycparser)。

代码示例

在 visit_FuncDef 中,我正在打印函数名称,然后在 for 循环中,它是参数。

问题是我能够使用for 循环获取传递给函数的输入参数的名称,params.name但无法获取其标识符类型。params.type

有人可以告诉我如何提取参数的标识符吗?

顺便说一句,输出是这样的:

如您所见,我没有获取标识符类型,而是获取每一行中的对象类型。例如<pycparser.c_ast.PtrDecl object at 0x00000000024EFC88>

我用作测试文件的示例 hash.c 文件(无论如何它都在 pycparser 中):

0 投票
1 回答
299 浏览

python - python pyparser 在#pragma 指令处失败

python C-parser pycparser 在以下 #pragma 指令处失败:

产生错误:

这个#pragma 有什么问题?

0 投票
1 回答
1094 浏览

python - pycparser如何读取包含在C代码文件中的头文件?

我正在尝试使用 pycparser 解析 C 文件。我很想知道,在预处理 C 文件时,pycparser 是否仅读取假 lib 文件夹中提供的那些库文件(如果您在 cpp_args 中提供了假 lib 的路径),或者它还从包含中提到的位置读取语句,例如 -
在下面的行中

pycparser 将在哪里搜索 xyz.h 它只会在 FAKE LIB 文件夹中?

0 投票
2 回答
954 浏览

pycparser - 将解析树转换为字符串

我使用 PycParser 为 C 函数生成抽象语法树,但我仍在尝试弄清楚如何将解析树转换为字符串:

是否可以从已生成的解析树中生成一个字符串(或字符串数​​组)?

这是打印的抽象语法树,但我不知道如何将其转换为字符串:

0 投票
1 回答
1023 浏览

python-2.7 - 如何让 Pycparser 理解我的 c 函数

我正在使用 pycparser 来解析我的 C 代码。当我运行脚本时,pycparser 无法理解该函数,并引发如下错误。

它显示的行号不过​​是这样的函数

谁能告诉我如何让 pycparser 理解我的功能?

0 投票
1 回答
1483 浏览

pycparser - #包括
使用 pycparser

使用 pycparser 我遇到了我要解析的 C 代码中包含的标头的问题。出于某种神秘的原因,一些“假标题”可以正常工作,而另一些则不能正常工作。例如,如果我包含 stdint.h,pycparser 可以毫无问题地解析代码。但是,如果我尝试使用 stdio.h,则会收到错误消息。因此,使用 pycparser 给出的示例代码(示例文件夹中的 using_gcc_E_libc.py)不起作用!

这是引用的示例代码中使用的内容:

这是我得到的错误:

有人可以帮我理解为什么会发生这种情况以及如何解决吗?

提前致谢 !

0 投票
2 回答
1940 浏览

python-2.7 - Pycparser 无法处理预处理代码

我需要在预处理的 C 代码('gcc -E' 产生的结果)上使用 pycparser。但是,我目前遇到了我无法理解或解决的问题。

我正在使用提供的示例 year2.c 和 func_defs.py,我对其进行了修改以使用各种预处理器和假库,但无济于事。也许你们中的一些人可以调查一下,看看是否可以重现/解决问题。我将附加所有必要的代码。

错误是使用 year2.c(常规示例文件)和 year2.i('gcc -E' 输出)生成的。后者没有可用的结果,而前者同时使用预处理器/fakelib 变体。

我创建了一个包含所有相关错误的 bitbucket 存储库、使用的脚本(尽管只是它的最后一个变体)以及 year2.c 和 year2.i 文件。

错误和示例回购

谢谢你的时间。

0 投票
3 回答
2622 浏览

python - 如何在 Python 中解析 C 格式的字符串?

我的 C 文件中有这段代码:

我希望使用 Python 能够解析格式字符串并找到"%s"and "%d"

所以我想要一个功能:

我尝试使用 libclang 的 Python 绑定和 pycparser 来实现这一点,但我没有看到如何使用这些工具来完成。

我也尝试过使用正则表达式来解决这个问题,但这一点都不简单 - 考虑一下printfhas"%%s"和类似这样的东西的用例。

gcc 和 clang 显然都是在编译过程中这样做的——没有人将此逻辑导出到 Python 吗?

0 投票
1 回答
302 浏览

python - 有什么办法可以避免python的pycparser库中的解析错误

以下代码在pycparser尝试解析时触发 .c 文件中的错误。这可能是因为rf_wcdma_bup_flags_t没有定义 typedef,有没有跳过它?

0 投票
1 回答
547 浏览

c - extern 后跟字符串文字

我正在尝试使用pycparser解析 C 文件的语法。我通过预处理器发送 C 文件,然后将预处理器的输出发送给pycparser. 以下代码位于其中一个 C 文件中...

pycparserthrows 和异常告诉我这不是有效的 C 语法。查看C BNF关键字extern不允许字符串文字在其前面。我在阅读 BNF 时是正确的吗?这个外部功能是在更高版本的 C 中添加的,还是这个语法编译器特定的?