blob: 89ca68cd1a2a394b1452bb2f5e24734cd669e5d2 [file] [log] [blame]
Eli Bendersky3921e8e2010-05-21 09:05:39 +03001#-----------------------------------------------------------------
Eli Bendersky64782f52014-04-23 16:53:39 -07002# pycparser: using_cpp_libc.py
Eli Bendersky3921e8e2010-05-21 09:05:39 +03003#
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 Bendersky331f81f2015-04-21 14:42:56 -07008# Copyright (C) 2008-2015, Eli Bendersky
eli.bendersky84a6a632011-04-29 09:00:43 +03009# License: BSD
Eli Bendersky3921e8e2010-05-21 09:05:39 +030010#-----------------------------------------------------------------
11import sys
12
13# This is not required if you've installed pycparser into
14# your site-packages/ with setup.py
15#
Benf86dea12012-02-03 06:24:55 +020016sys.path.extend(['.', '..'])
Eli Bendersky3921e8e2010-05-21 09:05:39 +030017
18# Portable cpp path for Windows and Linux/Unix
Eli Bendersky331f81f2015-04-21 14:42:56 -070019CPPPATH = 'utils/cpp.exe' if sys.platform == 'win32' else 'cpp'
Eli Bendersky3921e8e2010-05-21 09:05:39 +030020
21from pycparser import parse_file
22
23
24if __name__ == "__main__":
25 if len(sys.argv) > 1:
26 filename = sys.argv[1]
27 else:
Eli Bendersky331f81f2015-04-21 14:42:56 -070028 filename = 'examples/c_files/year.c'
Eli Bendersky3921e8e2010-05-21 09:05:39 +030029
30 ast = parse_file(filename, use_cpp=True,
31 cpp_path=CPPPATH,
Eli Bendersky331f81f2015-04-21 14:42:56 -070032 cpp_args=r'-Iutils/fake_libc_include')
Eli Bendersky3921e8e2010-05-21 09:05:39 +030033
34 ast.show()