/usr/lib/python2.6/site-packages/pycparser
NameSizeModeActions
ply/-0755rm
ast_transforms.py35680644editdlrm
ast_transforms.pyc28160644editdlrm
c_ast.py233360644editdlrm
c_ast.pyc354570644editdlrm
c_generator.py135700644editdlrm
c_generator.pyc190180644editdlrm
c_lexer.py144470644editdlrm
c_lexer.pyc154670644editdlrm
c_parser.py622120644editdlrm
c_parser.pyc643850644editdlrm
lextab.py74570644editdlrm
lextab.pyc71090644editdlrm
plyparser.py15940644editdlrm
plyparser.pyc26580644editdlrm
yacctab.py1295680644editdlrm
yacctab.pyc1018460644editdlrm
_ast_gen.py86630644editdlrm
_ast_gen.pyc94800644editdlrm
_build_tables.py8510644editdlrm
_build_tables.pyc6370644editdlrm
_c_ast.cfg41800644editdlrm
__init__.py29030644editdlrm
__init__.pyc28970644editdlrm
Edit: /usr/lib/python2.6/site-packages/pycparser/__init__.py (2903B)
#----------------------------------------------------------------- # pycparser: __init__.py # # This package file exports some convenience functions for # interacting with pycparser # # Copyright (C) 2008-2015, Eli Bendersky # License: BSD #----------------------------------------------------------------- __all__ = ['c_lexer', 'c_parser', 'c_ast'] __version__ = '2.14' from subprocess import Popen, PIPE from .c_parser import CParser def preprocess_file(filename, cpp_path='cpp', cpp_args=''): """ 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. """ path_list = [cpp_path] if isinstance(cpp_args, list): path_list += cpp_args elif cpp_args != '': path_list += [cpp_args] path_list += [filename] try: # Note the use of universal_newlines to treat all newlines # as \n for Python's purpose # pipe = Popen( path_list, stdout=PIPE, universal_newlines=True) text = pipe.communicate()[0] except OSError as e: raise RuntimeError("Unable to invoke 'cpp'. " + 'Make sure its path was passed correctly\n' + ('Original error: %s' % e)) return text def parse_file(filename, use_cpp=False, cpp_path='cpp', cpp_args='', parser=None): """ 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. """ if use_cpp: text = preprocess_file(filename, cpp_path, cpp_args) else: with open(filename, 'rU') as f: text = f.read() if parser is None: parser = CParser() return parser.parse(text, filename)