问题标签 [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 投票
1 回答
253 浏览

python - 在 Windows 中通过 pycparser 包含 Fake-headers?

我们可以通过在 pycparser parse_file 的帮助下对其进行预处理来支持新的 typedefs 、 #includes 和 #defines 。我还浏览了文档:README 页面和博客文章,但所有文档都是为 linux 系统编写的。我对 linux 系统一无所知,很想获得 windows 的文档。

0 投票
0 回答
1170 浏览

python - python中的Win206错误

我正在将具有大路径的包含目录列表传递给 pycparser 中的 cpp_args,这些是我遇到的一些错误,上述问题的任何解决方案还是我需要包含包含目录的原始字符串?

0 投票
1 回答
479 浏览

cryptography - 无法在 OSX 10.8 上安装密码学 0.9.3

我是 python 和 django 的新手。自最新版本的 django 以来,我一直在努力在本地安装我们公司的开发包。这是消息堆栈:

我跑过:

我注意到我的机器已经有旧版本的 openssl,所以我创建了一个指向新版本的符号链接:

我还可以确认我有一台 64 位机器:

运行依赖于 cryptography==0.7 的相同脚本会导致相同的错误。

我正在运行 GCC 4.2

到目前为止,我尝试过的任何操作都没有改变我在 django buildout 中遇到的错误 :( 当我运行 pip install cryptography 时,它似乎安装得很干净,但是这个 buildout 脚本坚持安装本地副本。

有人对我接下来应该尝试什么有任何建议吗?我的想法不多了。

0 投票
2 回答
1111 浏览

python - pycparser ParseError with typedef

我正在使用 pycparser 解析一些在解析之前无法使用 cpp 编译的 C 代码,因此我使用以下函数手动剥离所有注释和预处理器指令:

这是示例中memmgr.c文件中此函数的输出:

但我得到了这个 ParseError:

pycparser 有什么问题?

0 投票
2 回答
1114 浏览

python - pycparser 嵌套节点访问者

我正在尝试使用 pycparser 解析 C 代码,并为每个 IF 语句提供访问者。根据我的观察,它只访问没有嵌套 IF 的顶级节点。是故意的,还是我的代码有问题?

0 投票
0 回答
368 浏览

c - 使用解析器将“类 c 语言”转换为“自定义语言”

我有一组用语言“A”编写的文件,需要翻译成语言“B”的相应文件。我想创建一个可以自动执行此任务的程序/解析器(可能是一个工具链而不是单个程序)。但是,我正在努力为我的工具链程序找到合适的选择。

所需工具链的插图

语言A是嵌入式软件代码,即低级语言。它是 90% 的标准 C 代码和 10% 的“自定义”代码,即文件还包含标准 C 编译器无法理解的小段。90% 的 C 代码不是C 中可能出现的任何随机 C 构造(这在语义方面很难解析),而是遵循某些重复出现的表达式、动作和模式。它总是以(或多或少)相同的方式遵循这些模式。它主要执行对内存的写操作,包括复杂的结构,如 C-struct 或 enum 等。

语言 A 中的常规低级 C 代码示例:

语言 A 中的“自定义代码”示例:

语言 B是 100% 自定义语言。这种转换是必要的,以便在另一个工具中使用该文件进行调试。上面示例的翻译大致如下所示:

注意:我很清楚 Stackoverflow 并不是一个公开讨论“您更喜欢哪种工具?”的网站。但我认为这个问题更像是“我需要至少一个有意义的工具集来完成工作”,即无论如何可能没有那么多明智的讨论选项。

到目前为止,这些是我的考虑和方法:

  • 性能与我的工具链无关。它只应该易于实施和适应变化。
  • 第一种方法:由于语言 A 主要是 C-Code,我首先想到了pycparser Python Plugin,它提供了一个 C-parser,可以将 C-Code 解析为 AST(抽象语法树)。我的计划是读入语言 A 文件,然后编写一个 Python 程序,从 AST 中创建语言 B 文件。但是,我发现很难适应/教授 pycparser 插件以完全支持语言 A 的 10% 自定义属性。
  • 第二种方法:使用“通用解析器生成器”,例如 Yacc/Bison 或 ANTLR。然而,在这里,我不确定哪些工具适合我的需求(带有 LALR 解析器的 Yacc/Bison 或带有 LL 解析器的 ANTLR)以及如何设置一个包含此类解析器的适当工具链,然后处理(例如使用 Python)数据生成的解析器为创建自定义语言 B 而创建的结构。如果选择的解析器生成器提供一个现有的 C 语言定义,该定义可以轻松适应 10% 的自定义 C 语言部分,这也会很有帮助。我还应该提到,我以前从未使用过通用解析器。

任何人都可以给我一些关于用于这项任务的有意义的工具集的建议吗?

编辑: 如果这似乎是一个模糊的问题,我深表歉意,我试图尽可能准确地提出它。我为语言 A 和 B 添加了一个示例,以使语言的组成更加清晰,并表明语言 A 遵循某些在语义方面易于理解的重复模式。

如果此编辑不能提高清晰度和广泛性,我将按照建议重新发布给程序员。

Edit2:好的,由于主题显然似乎仍然在这里被取代,我在此撤回问题。我已经从前几张海报中收到了一些有价值的意见,这鼓励我对通用解析器生成器进行进一步的实验。

0 投票
1 回答
463 浏览

python - 将模块导入 LiClipse 时出现“未解析的导入:模块”

我最近安装了 liclipse 2.4(Python 3.0 语法)并下载了 pycparser-master.zip 文件,将其解压缩,并在 Project->Properties->PyDev-PYTHONPATH->External Libraries 下添加了 pycparser-master/pycparser/ 目录。

我在我的 Python 文件中使用了以下导入语句。

但是解释器似乎抛出了一个错误。

0 投票
2 回答
3337 浏览

python - Pycparser 没有被导入

2.7.11 python pckg for Mac - 安装相同。

现在我正在尝试执行一个 python 文件
python file1.py

它抛出错误:


文件“file1.py”,第 107 行,在 from pycparser import parse_file, c_parser, c_ast ImportError: No module named pycparser


如何安装这个 pycparser 模块?有人可以在这里帮助我吗?

0 投票
2 回答
1574 浏览

python - pycparser:如何在 C 文件中获取函数的结尾

我正在使用 pycparser 来解析 C 文件。我希望在 C 文件中获取每个函数定义的开始和结束。但我实际上得到的只是函数定义的开始。

我希望得到类似的东西:


0 投票
2 回答
303 浏览

python - pycparser 在 byteswap.h 上解析错误

我知道这是一个非常具体的问题,但我已经尽我所能寻找答案,但仍然没有提出任何有价值的东西。我正在使用 pycparser 尝试解析一些代码(惊喜,惊喜),当它进行链接时,它会失败并出现以下错误。如果有人有任何想法,我将不胜感激。

这是在 CentOS 7 上。

编码: