2017-01-27 14 views
-1

以下の構文のタイプはpycparserで解析できません。どのようにそのような構文を処理するための任意の提案?あるいは、pycparserでサポートされていない構文を削除するために、別々のモジュールを書く必要があります。pycparserはgccが処理できる構文を解析できません

static __inline unsigned int 
__bswap_32 (unsigned int __bsx) 
{ 
    return __builtin_bswap32 (__bsx); 
} 
static __inline __uint64_t 
__bswap_64 (__uint64_t __bsx) 
{ 
    return __builtin_bswap64 (__bsx); 
} 


typedef union 
    { 
    union wait *__uptr; 
    int *__iptr; 
    } __WAIT_STATUS __attribute__ ((__transparent_union__)); 



    __extension__ typedef struct 
    { 
     long long int quot; 
     long long int rem; 
    } lldiv_t; 



extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__)) ; 

extern double atof (const char *__nptr) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; 
extern int atoi (const char *__nptr) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; 
extern long int atol (const char *__nptr) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; 


__extension__ extern long long int atoll (const char *__nptr) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; 


extern double strtod (const char *__restrict __nptr, 
     char **__restrict __endptr) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 

extern float strtof (const char *__restrict __nptr, 
     char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 
extern long double strtold (const char *__restrict __nptr, 
     char **__restrict __endptr) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 


extern long int strtol (const char *__restrict __nptr, 
    char **__restrict __endptr, int __base) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 
extern unsigned long int strtoul (const char *__restrict __nptr, 
     char **__restrict __endptr, int __base) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 

__extension__ 
extern long long int strtoq (const char *__restrict __nptr, 
     char **__restrict __endptr, int __base) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 
__extension__ 
extern unsigned long long int strtouq (const char *__restrict __nptr, 
      char **__restrict __endptr, int __base) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 

__extension__ 
extern long long int strtoll (const char *__restrict __nptr, 
     char **__restrict __endptr, int __base) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 
__extension__ 
extern unsigned long long int strtoull (const char *__restrict __nptr, 
    char **__restrict __endptr, int __base) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); 

extern char *l64a (long int __n) __attribute__ ((__nothrow__ , __leaf__)) ; 
extern long int a64l (const char *__s) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; 


typedef int int8_t __attribute__ ((__mode__ (__QI__))); 
typedef int int16_t __attribute__ ((__mode__ (__HI__))); 
typedef int int32_t __attribute__ ((__mode__ (__SI__))); 
typedef int int64_t __attribute__ ((__mode__ (__DI__))); 
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); 
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); 
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); 
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); 
typedef int register_t __attribute__ ((__mode__ (__word__))); 



extern int select (int __nfds, fd_set *__restrict __readfds, 
    fd_set *__restrict __writefds, 
    fd_set *__restrict __exceptfds, 
    struct timeval *__restrict __timeout); 
extern int pselect (int __nfds, fd_set *__restrict __readfds, 
     fd_set *__restrict __writefds, 
     fd_set *__restrict __exceptfds, 
     const struct timespec *__restrict __timeout, 
     const __sigset_t *__restrict __sigmask); 


__extension__ 
extern unsigned int gnu_dev_major (unsigned long long int __dev) 
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); 
__extension__ 
extern unsigned int gnu_dev_minor (unsigned long long int __dev) 
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); 
__extension__ 
extern unsigned long long int gnu_dev_makedev (unsigned int __major, 
      unsigned int __minor) 
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); 

注:サンプル・プログラムは、分岐マークプログラム

https://github.com/sosy-lab/sv-benchmarks/blob/master/c/array-memsafety/add_last-alloca_true-valid-memsafety.i

+0

正確には解析しませんか? –

答えて

関連する問題