ó g¨wUc@scdddgZdZddlmZmZddlmZdd d „Zedd d d „Z d S( tc_lexertc_parsertc_asts2.14i˙˙˙˙(tPopentPIPEi(tCParsertcpptcCsŹ|g}t|tƒr%||7}n|dkrA||g7}n||g7}y,t|dtdtƒ}|jƒd}Wn+tk r§}tddd|ƒ‚nX|S(se Preprocess a file using cpp. filename: Name of the file you want to preprocess. cpp_path: cpp_args: Refer to the documentation of parse_file for the meaning of these arguments. When successful, returns the preprocessed file's contents. Errors from cpp will be printed out. Rtstdouttuniversal_newlinesisUnable to invoke 'cpp'. s(Make sure its path was passed correctly sOriginal error: %s(t isinstancetlistRRtTruet communicatetOSErrort RuntimeError(tfilenametcpp_pathtcpp_argst path_listtpipettextte((s6/usr/lib/python2.7/site-packages/pycparser/__init__.pytpreprocess_files       cCsg|rt|||ƒ}n$t|dƒ}|jƒ}WdQX|dkrWtƒ}n|j||ƒS(s˙ Parse a C file using pycparser. filename: Name of the file you want to parse. use_cpp: Set to True if you want to execute the C pre-processor on the file prior to parsing it. cpp_path: If use_cpp is True, this is the path to 'cpp' on your system. If no path is provided, it attempts to just execute 'cpp', so it must be in your PATH. cpp_args: If use_cpp is True, set this to the command line arguments strings to cpp. Be careful with quotes - it's best to pass a raw string (r'') here. For example: r'-I../utils/fake_libc_include' If several arguments are required, pass a list of strings. parser: Optional parser object to be used instead of the default CParser When successful, an AST is returned. ParseError can be thrown if the file doesn't parse successfully. Errors from cpp will be printed out. trUN(RtopentreadtNoneRtparse(Rtuse_cppRRtparserRtf((s6/usr/lib/python2.7/site-packages/pycparser/__init__.pyt parse_file6s  N( t__all__t __version__t subprocessRRRRRtFalseRR (((s6/usr/lib/python2.7/site-packages/pycparser/__init__.pyt s %