File: //usr/local/CyberCP/lib64/python3.10/site-packages/pycparser/__pycache__/_ast_gen.cpython-310.pyc
o
�h;) � @ s8 d dl mZ G dd� de�ZG dd� de�ZdZdZdS ) � )�Templatec @ s( e Zd Zd dd�Zd
dd�Zdd� ZdS )�ASTCodeGenerator�
_c_ast.cfgc C s || _ dd� | �|�D �| _dS )zN Initialize the code generator from a configuration
file.
c S s g | ] \}}t ||��qS � )�NodeCfg)�.0�name�contentsr r �E/usr/local/CyberCP/lib/python3.10/site-packages/pycparser/_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 sD t t�j| jd�}|t7 }| jD ]
}||�� d 7 }q|�|� dS )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��^}|D ]R}|�� }|r|�d�rq |�d�}|�d�}|�d�}|dk s2||ks2||kr:td||f ��|d|� }||d |� }|rTd d
� |�d�D �ng } || fV q W d � dS 1 sgw Y dS )ze Parse the configuration file and yield pairs of
(name, contents) for each node.
�r�#�:�[�]� zInvalid line in %s:
%s
Nc S s g | ]}|� � �qS r )�strip)r �vr r r
r 6 s z2ASTCodeGenerator.parse_cfgfile.<locals>.<listcomp>�,)�openr �
startswith�find�RuntimeError�split)
r �filename�f�line�colon_i�
lbracket_i�
rbracket_ir �val�vallistr r r
r
% s"