gpt4 book ai didi

python - pycparser 的 generator.visit 在 Ubuntu 16.04.3 中显示错误的输出

转载 作者:行者123 更新时间:2023-12-04 19:13:48 32 4
gpt4 key购买 nike

我使用 pycparser 和 pycparserext 编写了以下程序:

from pycparser import parse_file,c_parser, c_ast, c_generator
from pycparserext.ext_c_parser import GnuCParser


content="int main() { int x = 1; int y = 0; while (y < 1000 && __VERIFIER_nondet_int()) { x = x + y; y = y + 1; } __VERIFIER_assert(x >= y); return 0;}"

text = r""" """+content
parser = GnuCParser()
ast = parser.parse(text)
generator = c_generator.CGenerator()
print str(generator.visit(ast))

当我在 Mac 中运行代码时,它会返回正确的输出。但是当我在 Ubuntu 16.04.3 中运行相同的代码时,它会返回以下不正确的输出(缺少'main()':
int{
int x = 1;
int y = 0;
while ((y < 1000) && __VERIFIER_nondet_int())
{
x = x + y;
y = y + 1;
}

__VERIFIER_assert(x >= y);
return 0;
}

是什么导致了这个不正确的输出?

最佳答案

这可能是 pycparserext 的问题。 .使用从 Github 新鲜克隆的 vanilla pycparser,我得到(从主 pycparser 目录运行):

$ cat /tmp/2.c
int main() { int x = 1; int y = 0; while (y < 1000 && __VERIFIER_nondet_int()) { x = x + y; y = y + 1; } __VERIFIER_assert(x >= y); return 0;}

$ PYTHONPATH=. python examples/c-to-c.py /tmp/2.c
int main()
{
int x = 1;
int y = 0;
while ((y < 1000) && __VERIFIER_nondet_int())
{
x = x + y;
y = y + 1;
}

__VERIFIER_assert(x >= y);
return 0;
}

所以我建议你打开一个 issue for pycparserext

关于python - pycparser 的 generator.visit 在 Ubuntu 16.04.3 中显示错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736709/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com