Eli Bendersky | 3921e8e | 2010-05-21 09:05:39 +0300 | [diff] [blame] | 1 | #----------------------------------------------------------------- |
Eli Bendersky | 64782f5 | 2014-04-23 16:53:39 -0700 | [diff] [blame] | 2 | # pycparser: using_cpp_libc.py |
Eli Bendersky | 3921e8e | 2010-05-21 09:05:39 +0300 | [diff] [blame] | 3 | # |
| 4 | # Shows how to use the provided 'cpp' (on Windows, substitute for |
| 5 | # the 'real' cpp if you're on Linux/Unix) and "fake" libc includes |
| 6 | # to parse a file that includes standard C headers. |
| 7 | # |
Eli Bendersky | 331f81f | 2015-04-21 14:42:56 -0700 | [diff] [blame] | 8 | # Copyright (C) 2008-2015, Eli Bendersky |
eli.bendersky | 84a6a63 | 2011-04-29 09:00:43 +0300 | [diff] [blame] | 9 | # License: BSD |
Eli Bendersky | 3921e8e | 2010-05-21 09:05:39 +0300 | [diff] [blame] | 10 | #----------------------------------------------------------------- |
| 11 | import sys |
| 12 | |
| 13 | # This is not required if you've installed pycparser into |
| 14 | # your site-packages/ with setup.py |
| 15 | # |
Ben | f86dea1 | 2012-02-03 06:24:55 +0200 | [diff] [blame] | 16 | sys.path.extend(['.', '..']) |
Eli Bendersky | 3921e8e | 2010-05-21 09:05:39 +0300 | [diff] [blame] | 17 | |
Eli Bendersky | 3921e8e | 2010-05-21 09:05:39 +0300 | [diff] [blame] | 18 | from pycparser import parse_file |
| 19 | |
| 20 | |
| 21 | if __name__ == "__main__": |
| 22 | if len(sys.argv) > 1: |
| 23 | filename = sys.argv[1] |
| 24 | else: |
Eli Bendersky | 331f81f | 2015-04-21 14:42:56 -0700 | [diff] [blame] | 25 | filename = 'examples/c_files/year.c' |
Eli Bendersky | 3921e8e | 2010-05-21 09:05:39 +0300 | [diff] [blame] | 26 | |
| 27 | ast = parse_file(filename, use_cpp=True, |
Eli Bendersky | ad93836 | 2016-02-26 05:39:35 -0800 | [diff] [blame^] | 28 | cpp_path='cpp', |
Eli Bendersky | 331f81f | 2015-04-21 14:42:56 -0700 | [diff] [blame] | 29 | cpp_args=r'-Iutils/fake_libc_include') |
Eli Bendersky | 3921e8e | 2010-05-21 09:05:39 +0300 | [diff] [blame] | 30 | ast.show() |