Submit
Path:
~
/
/
proc
/
thread-self
/
root
/
opt
/
alt
/
python35
/
lib
/
python3.5
/
site-packages
/
pycparser
/
__pycache__
/
File Content:
_ast_gen.cpython-35.pyc
Թ�X�! � @ s� d d l Z d d l m Z Gd d � d e � Z Gd d � d e � Z d Z d Z e d k r� d d l Z e d � Z e j e d d � � d S) � N)�Templatec @ s: e Z d Z d d d � Z d d d � Z d d � Z d S) �ASTCodeGeneratorz _c_ast.cfgc C s, | | _ d d � | j | � D� | _ d S)zN Initialize the code generator from a configuration file. c S s% g | ] \ } } t | | � � q S� )�NodeCfg)�.0�name�contentsr r �/_ast_gen.py� <listcomp> s z-ASTCodeGenerator.__init__.<locals>.<listcomp>N)�cfg_filename� parse_cfgfile�node_cfg)�selfr r r r �__init__ s zASTCodeGenerator.__init__Nc C s^ t t � j d | j � } | t 7} x% | j D] } | | j � d 7} q/ W| j | � d S)z< Generates the code into file, an open file buffer. r z N)r �_PROLOGUE_COMMENT� substituter �_PROLOGUE_CODEr �generate_source�write)r �file�srcr r r r �generate s zASTCodeGenerator.generatec c s t | d � �� } x� | D]� } | j � } | s | j d � rD q | j d � } | j d � } | j d � } | d k s� | | k s� | | k r� t d | | f � � | d | � } | | d | � } | r� d d � | j d � D� n g } | | f Vq WWd QRXd S)ze Parse the configuration file and yield pairs of (name, contents) for each node. �r�#�:�[�]� zInvalid line in %s: %s Nc S s g | ] } | j � � q Sr )�strip)r �vr r r r 7 s z2ASTCodeGenerator.parse_cfgfile.<locals>.<listcomp>�,)�openr � startswith�find�RuntimeError�split) r �filename�f�lineZcolon_iZ lbracket_iZ rbracket_ir �valZvallistr r r r &