File: //usr/local/CyberCP/lib/python3.10/site-packages/pycparser/__pycache__/c_generator.cpython-310.pyc
o
�hlE � @ s d dl mZ G dd� de�ZdS )� )�c_astc @ s~ e Zd ZdZd�dd�Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zi dd�dd�dd�dd �d!d"�d#d$�d%d$�d&d'�d(d'�d)d'�d*d'�d+d,�d-d,�d.d/�d0d/�d1d2�d3d2�d4d2i�Zd5d6� Zd7d8� Zd9d:� Zd;d<� Zd�d=d>�Zd?d@� ZdAdB� ZdCdD� ZdEdF� ZdGdH� ZdIdJ� ZdKdL� ZdMdN� ZdOdP� ZdQdR� ZdSdT� ZdUdV� Z dWdX� Z!dYdZ� Z"d[d\� Z#d]d^� Z$d_d`� Z%dadb� Z&dcdd� Z'dedf� Z(dgdh� Z)didj� Z*dkdl� Z+dmdn� Z,dodp� Z-dqdr� Z.dsdt� Z/dudv� Z0dwdx� Z1dydz� Z2d{d|� Z3d}d~� Z4dd�� Z5d�d�� Z6d�d�� Z7d�d�� Z8d�d�� Z9d�d�� Z:d�d�� Z;d�d�� Z<d�d�d��Z=d�d�� Z>g d�fd�d��Z?d�d�� Z@d�d�� ZAd�d�� ZBd�S )��
CGeneratorz� Uses the same visitor pattern as c_ast.NodeVisitor, but modified to
return a value from each visit method, using string accumulation in
generic_visit.
Fc C s d| _ || _dS )z� Constructs C-code generator
reduce_parentheses:
if True, eliminates needless parentheses on binary operators
� N)�indent_level�reduce_parentheses)�selfr � r �H/usr/local/CyberCP/lib/python3.10/site-packages/pycparser/c_generator.py�__init__ s
zCGenerator.__init__c C s
d| j S �N� )r �r r r r �_make_indent �
zCGenerator._make_indentc C s d|j j }t| || j�|�S )N�visit_)� __class__�__name__�getattr�
generic_visit)r �node�methodr r r �visit s zCGenerator.visitc s( |d u rdS d� � fdd�|�� D ��S )N� c 3 s � | ]
\}}� � |�V qd S �N�r )�.0�c_name�cr
r r � <genexpr>'