问题标签 [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.
python - 如何使用 sly 仅获取功能块
我需要获取功能块(定义和所有内容,而不仅仅是声明),以获得函数依赖图。从函数依赖图中,识别连接的组件并模块化我极其庞大的 C 代码库,一次一个文件。
问题:我需要一个 C 解析器来识别功能块,仅此而已。我们有自定义类型等,但签名去
我想出的解决方案:显然,像任何理智的人一样使用 sly 和 pycparser。
pycparser 的问题:需要从其他文件编译预处理器,只是为了识别代码块。就我而言,事情达到了 6 个级别的深度。很抱歉,我无法显示实际代码。
尝试使用 Sly 编写代码:
错误 :
输入:
期望的输出:
python - 如何按功能块拆分 C 程序?
我正在尝试按功能块拆分 C 程序。例如,
我尝试使用正则表达式库并尝试按(){
. 但是没有用。不知道从哪里开始。
我希望结果是一个列表,其中每个功能块作为一个元素:['int first(){ ... }', 'customtype second(){....}']
我尝试了以下但得到None
c - 使用 pycparser 编辑 C 函数声明
我需要编写一个 Python 程序来解析 C 源代码文件并在每个函数声明的末尾添加一个隐藏参数。
更准确地说,我需要更改如下内容:
变成这样的东西:
显然,我还需要编辑其他函数对该函数的所有调用。
我需要使用 来执行此操作pycparser
,但是一旦阅读了 AST,我就无法弄清楚编辑 AST 的正确方法。有没有我想念的正确方法(或任何方法)?
python - 如何使用 pycparser 删除 AST 节点?
让我们从考虑这个片段开始:
上面的输出将是:
但我希望它变成这样:
所以我的问题是,使用 pycparser 从 AST 中删除节点/子树的规范/惯用方法是什么?
c - pycparser:解析回c文件
我正在尝试学习如何使用 pycparser,在我的练习中,我遇到了这个问题。基本上我有一个带有系统头文件的 C 文件,#include <stdio.h>
我#include <stdlib.h>
想通过 pycparser ast 树来分析它。我成功地使用了假标题,所以我可以解析文件,但后来我遇到了这个问题:ast 现在包含很多 typedef 并且不包含真正的标题,所以在我将 ast 打印到文件中以获得我的 c代码返回,它无法编译,因为缺少真正的头文件。
例如这个文件:
变成这样:
做我的研究,我看到#include <stdlib.h>
包含以下几行:
并且这些标题包含出现在我的文件中的所有 typedef。
有没有办法用真正的标题打印回 c 代码?
python-3.x - 使用 pycparser 获取枚举/结构的成员
我有一个简单的 C 程序test.c
,我想在 pycparser 的帮助下获取sample_enum
和sample_struct
使用 python 的成员。
我得到预处理输出并将其保存到test.txt
.
这是我的python程序:
ast.show 打印一堆输出,包括这些:
所以我的问题是,我是否需要解析输出并分别提取 enum 和 struct 的成员?或者里面有一个内置的方法/机制pycparser
可能会让我的生活更轻松。
python - pycparser 中的未知 uint8_t 类型
我正在尝试解析 C 函数声明。正如它所具有uint8_t
的uint16_t
那样,pycparser 无法识别这种类型。
这是我想要解析和创建的代码,但它给出了以 uint8_t 作为标识符的参数测试的函数声明错误
如何在 pycparser 中包含这些类型?
python - 如何从 pycparser 生成的 ast 中找到 switch 语句?
我正在尝试使用 pycparser 解析 c 文件并找到我使用https://github.com/eliben/pycparser/blob/master/examples/explore_ast.py这个链接生成 ast 的 switch 语句。然后使用 n = len(ast.ext) 我找到了从 ast 生成的 exts 的长度。现在我必须从我尝试做的 ast 中找到 switch 语句 if re.findall(r'(switch(\s*'),ast.ext) 并匹配正则表达式以找到 switch case 但它没有发生。如何继续这是因为我对 pycparser 完全陌生,对此一无所知
javascript - 使用 pycparser 从 C 解析到 Javascript
我正在尝试将 C 中的一些代码解析为 Javascript 以在网站上使用它。我已经按照 github 文档https://github.com/eliben/pycparser中的说明下载了 pycparser,但我不知道如何使用它。例如,我需要使用哪些命令以及如何使用 clang 或 cpp 对代码进行预处理。
谁能帮我?
谢谢。