a
_^o) @ s@ d dl Z d dlmZ G dd deZG dd deZdZdZdS ) N)Templatec @ s( e Zd Zd ddZd
ddZdd 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).0namecontentsr r 6/usr/lib/python3.9/site-packages/pycparser/_ast_gen.py
s z-ASTCodeGenerator.__init__..N)cfg_filename
parse_cfgfilenode_cfg)selfr r r r
__init__ s zASTCodeGenerator.__init__Nc C sD t tj| jd}|t7 }| jD ]}|| d 7 }q || dS )z< Generates the code into file, an open file buffer.
)r z
N)r _PROLOGUE_COMMENTZ
substituter _PROLOGUE_CODEr generate_sourcewrite)r filesrcr r r r
generate s
zASTCodeGenerator.generatec
c s t |d}|D ]}| }|r|dr,q|d}|d}|d}|dk sb||ksb||krrtd||f |d| }||d | }|rd d
|dD ng } || fV qW d n1 s0 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 7 z2ASTCodeGenerator.parse_cfgfile..,)openr
startswithfindRuntimeErrorsplit)
r filenameflineZcolon_iZ
lbracket_iZ
rbracket_ir valZvallistr r r
r
&