Ich habe das folgende Programm mit pycparser und pycparserext geschrieben:generator.visit von pycparser Anzeige falsche Ausgabe in Ubuntu 16.04.3
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))
Wenn ich den Code in Mac laufen gibt es die richtige Ausgabe. Aber wenn ich den gleichen Code in Ubuntu 16.04.3 laufen gibt es die folgende falsche Ausgabe (dh den ‚main()‘ fehlt:
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;
}
Was diese fehlerhafte Ausgabe verursacht
Nur um klar zu sein: ist das Problem, dass es die main() in der Ausgabe fallen gelassen hat? – Foon
ja. main() und jede andere Funktion – Tom