File: //opt/saltstack/salt/lib/python3.10/site-packages/pycparser/__pycache__/_ast_gen.cpython-310.pyc
o
;j, � @ s� d dl mZ d dlZd dlmZ G dd� d�ZG dd� d�ZdZd Ze d
kr_ej
�ej
�e
��Zej
�ed�Zej
�ed�Zee�Zeed
��Ze�e� W d � dS 1 sXw Y dS dS )� )�TemplateN)�IOc @ s4 e Zd Zddd�Zdee ddfdd�Zd d
� ZdS )�ASTCodeGenerator�
_c_ast.cfgc C s || _ dd� | �|�D �| _dS )zIInitialize the code generator from a configuration
file.
c S s g | ] \}}t ||��qS � )�NodeCfg)�.0�name�contentsr r �F/opt/saltstack/salt/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__�file�returnNc C sD t t�j| jd�}|t7 }| jD ]
}||�� d 7 }q|�|� dS )z2Generates the code into file, an open file buffer.)r
z
N)r �_PROLOGUE_COMMENT�
substituter
�_PROLOGUE_CODEr �generate_source�write)r r �srcr r r r �generate s
zASTCodeGenerator.generatec
c s� � t |d��a}|D ]U}|�� }|r|�d�rq |�d�}|�d�}|�d�}|dk s2||ks2||kr=td|� d|� d ���|d
|� }||d |� }|rWdd� |�d
�D �ng } || fV q W d
� d
S 1 sjw Y d
S )z`Parse the configuration file and yield pairs of
(name, contents) for each node.
�r�#�:�[�]� zInvalid line in �:
�
Nc S s g | ]}|� � �qS r )�strip)r �vr r r r ; s z2ASTCodeGenerator.parse_cfgfile.<locals>.<listcomp>�,)�openr# �
startswith�find�RuntimeError�split)
r �filename�f�lineZcolon_iZ
lbracket_iZ
rbracket_ir �valZvallistr r r r * s"