Eli Bendersky | 0f8e231 | 2017-02-05 09:37:29 -0800 | [diff] [blame] | 1 | from __future__ import print_function |
Eli Bendersky | 8333e6c | 2015-04-20 05:41:32 -0700 | [diff] [blame] | 2 | |
Eli Bendersky | 0f8e231 | 2017-02-05 09:37:29 -0800 | [diff] [blame] | 3 | import sys |
| 4 | from pycparser import c_parser, c_generator, c_ast, parse_file |
Eli Bendersky | 8333e6c | 2015-04-20 05:41:32 -0700 | [diff] [blame] | 5 | |
| 6 | |
| 7 | if __name__ == "__main__": |
Eli Bendersky | 8333e6c | 2015-04-20 05:41:32 -0700 | [diff] [blame] | 8 | parser = c_parser.CParser() |
Eli Bendersky | 43375bf | 2015-04-20 07:19:09 -0700 | [diff] [blame] | 9 | code = r''' |
Eli Bendersky | 0f8e231 | 2017-02-05 09:37:29 -0800 | [diff] [blame] | 10 | void* ptr = (int[ ]){0}; |
Eli Bendersky | 43375bf | 2015-04-20 07:19:09 -0700 | [diff] [blame] | 11 | ''' |
Eli Bendersky | 8333e6c | 2015-04-20 05:41:32 -0700 | [diff] [blame] | 12 | |
Eli Bendersky | 43375bf | 2015-04-20 07:19:09 -0700 | [diff] [blame] | 13 | print(code) |
Eli Bendersky | 8333e6c | 2015-04-20 05:41:32 -0700 | [diff] [blame] | 14 | ast = parser.parse(code) |
| 15 | ast.show(attrnames=True, nodenames=True) |
Eli Bendersky | c36e7fb | 2017-01-31 07:01:16 -0800 | [diff] [blame] | 16 | print(ast.ext[0].__slots__) |
| 17 | print(dir(ast.ext[0])) |
Eli Bendersky | 0f8e231 | 2017-02-05 09:37:29 -0800 | [diff] [blame] | 18 | |
| 19 | print("==== From C generator:") |
| 20 | generator = c_generator.CGenerator() |
| 21 | print(generator.visit(ast)) |