2016-05-22 7 views
0

Ich weiß, dass dies ein ziemlich spezifisches Problem ist, aber ich habe alles getan, um eine Antwort zu finden und habe immer noch nichts Wertvolles gefunden. Ich benutze Pycparser, um etwas Code zu parsen (Überraschung, Überraschung) und wenn es die Verbindung macht, scheitert es mit dem Fehler unten. Wenn jemand irgendwelche Gedanken hat, wäre ich dankbar für etwas Hilfe.Pycparser parse Fehler auf byteswap.h

File "test.py", line 14, in <module> 
    cpp_args=['-E', r'-Iutils/fake_libc_include']) 
    File "/usr/lib/python2.7/site-packages/pycparser/__init__.py", line 93, in parse_file 
    return parser.parse(text, filename) 
    File "/usr/lib/python2.7/site-packages/pycparser/c_parser.py", line 146, in parse 
    debug=debuglevel) 
    File "/usr/lib/python2.7/site-packages/ply/yacc.py", line 265, in parse 
    return self.parseopt_notrack(input,lexer,debug,tracking,tokenfunc) 
    File "/usr/lib/python2.7/site-packages/ply/yacc.py", line 1047, in parseopt_notrack 
    tok = self.errorfunc(errtoken) 
    File "/usr/lib/python2.7/site-packages/pycparser/c_parser.py", line 1680, in p_error 
    column=self.clex.find_tok_column(p))) 
    File "/usr/lib/python2.7/site-packages/pycparser/plyparser.py", line 55, in 
_parse_error 
    raise ParseError("%s: %s" % (coord, msg)) 

/usr/include/bits/byteswap.h:46:1: before: { 

Dies ist auf CentOS 7.

Der Code:

 (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) 

#ifdef __GNUC__ 
# if __GNUC_PREREQ (4, 3) 
static __inline unsigned int 
__bswap_32 (unsigned int __bsx) 
{ 
    return __builtin_bswap32 (__bsx); 
} 
# elif __GNUC__ >= 2 
# if __WORDSIZE == 64 || (defined __i486__ || defined __pentium__   \ 
          || defined __pentiumpro__ || defined __pentium4__ \ 
          || defined __k8__ || defined __athlon__   \ 
          || defined __k6__ || defined __nocona__   \ 
          || defined __core2__ || defined __geode__   \ 
          || defined __amdfam10__) 
+0

Bitte geben Sie den Code von 'byte swap.h' aus Zeile 40 bis 50 – ForceBru

+0

Hinzugefügt, sorry darüber! – rreichel

+0

Ist dies die einzige Fehlermeldung, die Sie erhalten? Es ist ziemlich bedeutungslos, meiner Meinung nach sollte es länger sein – ForceBru

Antwort

2

Ich habe also nicht wirklich eine Antwort, aber ich werde zumindest Post dies als Behelfslösung in Falls jemand anderes das gleiche Problem hat. Ich muss meinen Code manuell durch einen Präprozessor laufen lassen, da ich denke, dass es einige Compiler-Probleme gibt, die pycparser Probleme verursachen (es ist seltsam, ich weiß). Wie auch immer, die Vorverarbeitung des Codes manuell, dann das Parsen mit pycparser funktionierte für mich!