owned this note
owned this note
Published
Linked with GitHub
Work-in-progress generator is [in my GitHub branch](https://github.com/encukou/cpython/blob/railroad-svg-simplify/Tools/peg_generator/pegen/grammar_visualizer_railroad.py).
# Railroad Diagrams for Python grammar
<style>
svg.railroad-diagram path {
stroke-width:3;
stroke:black;
fill: transparent;
}
svg.railroad-diagram text {
font:bold 14px monospace;
text-anchor:middle;
}
svg.railroad-diagram text.label{
text-anchor:start;
}
svg.railroad-diagram text.comment{
font:italic 12px monospace;
}
svg.railroad-diagram rect{
stroke-width:3;
stroke:black;
fill: #bbddff;
}
svg.railroad-diagram rect.group-box {
stroke: gray;
stroke-dasharray: 10 5;
fill: none;
}
svg.railroad-diagram .token rect {
fill: #ffffaa
}
</style>
<div><pre><code><b>file</b>: statements? $</code></pre><div><div>Unused!</div><svg class="railroad-diagram" height="71" viewBox="0 0 351.5 71" width="351.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M301.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M195.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M175.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M175.0 31h0.0" /><rect height="22" width="105" x="70" y="20"></rect><text x="122.5" y="35">statements</text></g></g><path d="M175.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M70 51h105.0" /></g><path d="M175.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M195.0 31h10" /><g class="non-terminal ">
<path d="M205.0 31h0" /><path d="M301.5 31h0.0" /><rect height="22" width="96.5" x="205" y="20"></rect><text x="253.25" y="35">ENDMARKER</text></g></g><path d="M301.5 31h10" /><path d="M 311.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>interactive</b>: statement_newline<br> <b>statement_newline</b>: compound_stmt NEWLINE | simple_stmts | NEWLINE | $</code></pre><div><div>Unused!</div><svg class="railroad-diagram" height="152" viewBox="0 0 370.0 152" width="370.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M320.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M320.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M300.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M200.5 31h0.0" /><rect height="22" width="130.5" x="70" y="20"></rect><text x="135.25" y="35">compound_stmt</text></g><path d="M200.5 31h10" /><path d="M210.5 31h10" /><g class="non-terminal ">
<path d="M220.5 31h0" /><path d="M300.0 31h0.0" /><rect height="22" width="79.5" x="220.5" y="20"></rect><text x="260.25" y="35">NEWLINE</text></g></g><path d="M300.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M70 61h0" /><path d="M192.0 61h108.0" /><g class="non-terminal ">
<path d="M70 61h0" /><path d="M192.0 61h0.0" /><rect height="22" width="122" x="70" y="50"></rect><text x="131" y="65">simple_stmts</text></g></g><path d="M300.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M50 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M70 91h0" /><path d="M149.5 91h150.5" /><g class="non-terminal ">
<path d="M70 91h0" /><path d="M149.5 91h0.0" /><rect height="22" width="79.5" x="70" y="80"></rect><text x="109.75" y="95">NEWLINE</text></g></g><path d="M300.0 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /><path d="M50 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M70 121h0" /><path d="M166.5 121h133.5" /><g class="non-terminal ">
<path d="M70 121h0" /><path d="M166.5 121h0.0" /><rect height="22" width="96.5" x="70" y="110"></rect><text x="118.25" y="125">ENDMARKER</text></g></g><path d="M300.0 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /></g></g><path d="M320.0 31h10" /><path d="M 330.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>eval</b>: expressions NEWLINE* $<br> <b>expressions</b>: expression ((',' expression))+ ','? | expression ',' | expression</code></pre><div><div>Unused!</div><svg class="railroad-diagram" height="109" viewBox="0 0 753.0 109" width="753.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M703.0 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M155.0 31h0.0" /><rect height="22" width="105" x="50" y="20"></rect><text x="102.5" y="35">expression</text></g><path d="M155.0 31h10" /><g>
<path d="M165.0 31h0" /><path d="M457.0 31h0.0" /><path d="M165.0 31h20" /><g>
<path d="M185.0 31h0" /><path d="M437.0 31h0.0" /><g>
<path d="M185.0 31h0" /><path d="M358.5 31h0.0" /><path d="M185.0 31h10" /><g>
<path d="M195.0 31h0" /><path d="M348.5 31h0.0" /><g class="terminal token">
<path d="M195.0 31h0" /><path d="M223.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="195" y="20"></rect><text x="209.25" y="35">,</text></g><path d="M223.5 31h10" /><path d="M233.5 31h10" /><g class="non-terminal ">
<path d="M243.5 31h0" /><path d="M348.5 31h0.0" /><rect height="22" width="105" x="243.5" y="20"></rect><text x="296" y="35">expression</text></g></g><path d="M348.5 31h10" /><path d="M195.0 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M195.0 51h153.5" /></g><path d="M348.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g><path d="M358.5 31h10" /><g>
<path d="M368.5 31h0" /><path d="M437.0 31h0.0" /><path d="M368.5 31h20" /><g>
<path d="M388.5 31h0" /><path d="M417.0 31h0.0" /><g class="terminal token">
<path d="M388.5 31h0" /><path d="M417.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="388.5" y="20"></rect><text x="402.75" y="35">,</text></g></g><path d="M417.0 31h20" /><path d="M368.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M388.5 51h28.5" /></g><path d="M417.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M437.0 31h20" /><path d="M165.0 31a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M185.0 70h0" /><path d="M213.5 70h223.5" /><g class="terminal token">
<path d="M185.0 70h0" /><path d="M213.5 70h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="185" y="59"></rect><text x="199.25" y="74">,</text></g></g><path d="M437.0 70a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /><path d="M165.0 31a10 10 0 0 1 10 10v38a10 10 0 0 0 10 10" /><g>
<path d="M185.0 89h252.0" /></g><path d="M437.0 89a10 10 0 0 0 10 -10v-38a10 10 0 0 1 10 -10" /></g><g>
<path d="M457.0 31h0" /><path d="M596.5 31h0.0" /><path d="M457.0 31h20" /><g>
<path d="M477.0 31h0" /><path d="M576.5 31h0.0" /><g>
<path d="M477.0 31h0" /><path d="M576.5 31h0.0" /><path d="M477.0 31h10" /><g class="non-terminal ">
<path d="M487.0 31h0" /><path d="M566.5 31h0.0" /><rect height="22" width="79.5" x="487" y="20"></rect><text x="526.75" y="35">NEWLINE</text></g><path d="M566.5 31h10" /><path d="M487.0 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M487.0 51h79.5" /></g><path d="M566.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M576.5 31h20" /><path d="M457.0 31a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M477.0 59h99.5" /></g><path d="M576.5 59a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g><path d="M596.5 31h10" /><g class="non-terminal ">
<path d="M606.5 31h0" /><path d="M703.0 31h0.0" /><rect height="22" width="96.5" x="606.5" y="20"></rect><text x="654.75" y="35">ENDMARKER</text></g></g><path d="M703.0 31h10" /><path d="M 713.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>func_type</b>: '(' type_expressions? ')' '->' expression NEWLINE* $<br> <b>type_expressions</b>: ','.expression+ ',' '*' expression ',' '**' expression | ','.expression+ ',' '*' expression | ','.expression+ ',' '**' expression | '*' expression ',' '**' expression | '*' expression | '**' expression | ','.expression+</code></pre><div><div>Unused!</div><svg class="railroad-diagram" height="238" viewBox="0 0 1322.5 238" width="1322.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M1272.5 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M78.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="50" y="20"></rect><text x="64.25" y="35">(</text></g><path d="M78.5 31h10" /><g>
<path d="M88.5 31h0" /><path d="M796.0 31h0.0" /><path d="M88.5 31h20" /><g>
<path d="M108.5 31h0" /><path d="M776.0 31h0.0" /><g>
<path d="M108.5 31h0" /><path d="M661.0 31h0.0" /><path d="M108.5 31h20" /><g>
<path d="M128.5 31h0" /><path d="M641.0 31h0.0" /><g>
<path d="M128.5 31h0" /><path d="M253.5 31h0.0" /><path d="M128.5 31h10" /><g class="non-terminal ">
<path d="M138.5 31h0" /><path d="M243.5 31h0.0" /><rect height="22" width="105" x="138.5" y="20"></rect><text x="191" y="35">expression</text></g><path d="M243.5 31h10" /><path d="M138.5 31a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M138.5 61h0" /><path d="M167.0 61h76.5" /><rect height="22" rx="10" ry="10" width="28.5" x="138.5" y="50"></rect><text x="152.75" y="65">,</text></g><path d="M243.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g><path d="M253.5 31h10" /><path d="M263.5 31h10" /><g class="terminal token">
<path d="M273.5 31h0" /><path d="M302.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="273.5" y="20"></rect><text x="287.75" y="35">,</text></g><path d="M302.0 31h10" /><g>
<path d="M312.0 31h0" /><path d="M641.0 31h0.0" /><path d="M312.0 31h20" /><g>
<path d="M332.0 31h0" /><path d="M621.0 31h0.0" /><g class="terminal token">
<path d="M332.0 31h0" /><path d="M360.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="332" y="20"></rect><text x="346.25" y="35">*</text></g><path d="M360.5 31h10" /><g>
<path d="M370.5 31h0" /><path d="M621.0 31h0.0" /><path d="M370.5 31h20" /><g>
<path d="M390.5 31h0" /><path d="M601.0 31h0.0" /><g class="non-terminal ">
<path d="M390.5 31h0" /><path d="M495.5 31h0.0" /><rect height="22" width="105" x="390.5" y="20"></rect><text x="443" y="35">expression</text></g><path d="M495.5 31h10" /><path d="M505.5 31h10" /><g class="terminal token">
<path d="M515.5 31h0" /><path d="M544.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="515.5" y="20"></rect><text x="529.75" y="35">,</text></g><path d="M544.0 31h10" /><path d="M554.0 31h10" /><g class="terminal token">
<path d="M564.0 31h0" /><path d="M601.0 31h0.0" /><rect height="22" rx="10" ry="10" width="37" x="564" y="20"></rect><text x="582.5" y="35">**</text></g></g><path d="M601.0 31h20" /><path d="M370.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M390.5 51h210.5" /></g><path d="M601.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M621.0 31h20" /><path d="M312.0 31a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M332.0 70h0" /><path d="M369.0 70h252.0" /><g class="terminal token">
<path d="M332.0 70h0" /><path d="M369.0 70h0.0" /><rect height="22" rx="10" ry="10" width="37" x="332" y="59"></rect><text x="350.5" y="74">**</text></g></g><path d="M621.0 70a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /></g></g><path d="M641.0 31h20" /><path d="M108.5 31a10 10 0 0 1 10 10v49a10 10 0 0 0 10 10" /><g>
<path d="M128.5 100h0" /><path d="M417.5 100h223.5" /><g class="terminal token">
<path d="M128.5 100h0" /><path d="M157.0 100h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="128.5" y="89"></rect><text x="142.75" y="104">*</text></g><path d="M157.0 100h10" /><g>
<path d="M167.0 100h0" /><path d="M417.5 100h0.0" /><path d="M167.0 100h20" /><g>
<path d="M187.0 100h0" /><path d="M397.5 100h0.0" /><g class="non-terminal ">
<path d="M187.0 100h0" /><path d="M292.0 100h0.0" /><rect height="22" width="105" x="187" y="89"></rect><text x="239.5" y="104">expression</text></g><path d="M292.0 100h10" /><path d="M302.0 100h10" /><g class="terminal token">
<path d="M312.0 100h0" /><path d="M340.5 100h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="312" y="89"></rect><text x="326.25" y="104">,</text></g><path d="M340.5 100h10" /><path d="M350.5 100h10" /><g class="terminal token">
<path d="M360.5 100h0" /><path d="M397.5 100h0.0" /><rect height="22" rx="10" ry="10" width="37" x="360.5" y="89"></rect><text x="379" y="104">**</text></g></g><path d="M397.5 100h20" /><path d="M167.0 100a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M187.0 120h210.5" /></g><path d="M397.5 120a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M641.0 100a10 10 0 0 0 10 -10v-49a10 10 0 0 1 10 -10" /><path d="M108.5 31a10 10 0 0 1 10 10v88a10 10 0 0 0 10 10" /><g>
<path d="M128.5 139h0" /><path d="M165.5 139h475.5" /><g class="terminal token">
<path d="M128.5 139h0" /><path d="M165.5 139h0.0" /><rect height="22" rx="10" ry="10" width="37" x="128.5" y="128"></rect><text x="147" y="143">**</text></g></g><path d="M641.0 139a10 10 0 0 0 10 -10v-88a10 10 0 0 1 10 -10" /></g><path d="M661.0 31h10" /><g class="non-terminal ">
<path d="M671.0 31h0" /><path d="M776.0 31h0.0" /><rect height="22" width="105" x="671" y="20"></rect><text x="723.5" y="35">expression</text></g></g><path d="M776.0 31h20" /><path d="M88.5 31a10 10 0 0 1 10 10v118a10 10 0 0 0 10 10" /><g>
<path d="M108.5 169h0" /><path d="M233.5 169h542.5" /><g>
<path d="M108.5 169h0" /><path d="M233.5 169h0.0" /><path d="M108.5 169h10" /><g class="non-terminal ">
<path d="M118.5 169h0" /><path d="M223.5 169h0.0" /><rect height="22" width="105" x="118.5" y="158"></rect><text x="171" y="173">expression</text></g><path d="M223.5 169h10" /><path d="M118.5 169a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M118.5 199h0" /><path d="M147.0 199h76.5" /><rect height="22" rx="10" ry="10" width="28.5" x="118.5" y="188"></rect><text x="132.75" y="203">,</text></g><path d="M223.5 199a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g></g><path d="M776.0 169a10 10 0 0 0 10 -10v-118a10 10 0 0 1 10 -10" /><path d="M88.5 31a10 10 0 0 1 10 10v167a10 10 0 0 0 10 10" /><g>
<path d="M108.5 218h667.5" /></g><path d="M776.0 218a10 10 0 0 0 10 -10v-167a10 10 0 0 1 10 -10" /></g><path d="M796.0 31h10" /><g class="terminal token">
<path d="M806.0 31h0" /><path d="M834.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="806" y="20"></rect><text x="820.25" y="35">)</text></g><path d="M834.5 31h10" /><path d="M844.5 31h10" /><g class="terminal token">
<path d="M854.5 31h0" /><path d="M891.5 31h0.0" /><rect height="22" rx="10" ry="10" width="37" x="854.5" y="20"></rect><text x="873" y="35">-></text></g><path d="M891.5 31h10" /><path d="M901.5 31h10" /><g class="non-terminal ">
<path d="M911.5 31h0" /><path d="M1016.5 31h0.0" /><rect height="22" width="105" x="911.5" y="20"></rect><text x="964" y="35">expression</text></g><path d="M1016.5 31h10" /><g>
<path d="M1026.5 31h0" /><path d="M1166.0 31h0.0" /><path d="M1026.5 31h20" /><g>
<path d="M1046.5 31h0" /><path d="M1146.0 31h0.0" /><g>
<path d="M1046.5 31h0" /><path d="M1146.0 31h0.0" /><path d="M1046.5 31h10" /><g class="non-terminal ">
<path d="M1056.5 31h0" /><path d="M1136.0 31h0.0" /><rect height="22" width="79.5" x="1056.5" y="20"></rect><text x="1096.25" y="35">NEWLINE</text></g><path d="M1136.0 31h10" /><path d="M1056.5 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1056.5 51h79.5" /></g><path d="M1136.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M1146.0 31h20" /><path d="M1026.5 31a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M1046.5 59h99.5" /></g><path d="M1146.0 59a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g><path d="M1166.0 31h10" /><g class="non-terminal ">
<path d="M1176.0 31h0" /><path d="M1272.5 31h0.0" /><rect height="22" width="96.5" x="1176" y="20"></rect><text x="1224.25" y="35">ENDMARKER</text></g></g><path d="M1272.5 31h10" /><path d="M 1282.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>statements</b>: statement+<br> <b>statement</b>: compound_stmt | simple_stmts</code></pre><div><div>Used in: file (1), block (1)</div><svg class="railroad-diagram" height="100" viewBox="0 0 290.5 100" width="290.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M240.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M240.5 31h0.0" /><path d="M50 31h10" /><g>
<path d="M60 31h0" /><path d="M230.5 31h0.0" /><path d="M60 31h20" /><g>
<path d="M80 31h0" /><path d="M210.5 31h0.0" /><g class="non-terminal ">
<path d="M80 31h0" /><path d="M210.5 31h0.0" /><rect height="22" width="130.5" x="80" y="20"></rect><text x="145.25" y="35">compound_stmt</text></g></g><path d="M210.5 31h20" /><path d="M60 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M80 61h0" /><path d="M202.0 61h8.5" /><g class="non-terminal ">
<path d="M80 61h0" /><path d="M202.0 61h0.0" /><rect height="22" width="122" x="80" y="50"></rect><text x="141" y="65">simple_stmts</text></g></g><path d="M210.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M230.5 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M60 80h170.5" /></g><path d="M230.5 80a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10" /></g></g><path d="M240.5 31h10" /><path d="M 250.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>simple_stmts</b>: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE</code></pre><div><div>Used in: interactive (1), statements (1), block (1)</div><svg class="railroad-diagram" height="122" viewBox="0 0 441.5 122" width="441.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M391.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M302.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M183.5 31h98.5" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M183.5 31h0.0" /><rect height="22" width="113.5" x="70" y="20"></rect><text x="126.75" y="35">simple_stmt</text></g></g><path d="M282.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M70 61h0" /><path d="M282.0 61h0.0" /><g>
<path d="M70 61h0" /><path d="M203.5 61h0.0" /><path d="M70 61h10" /><g class="non-terminal ">
<path d="M80 61h0" /><path d="M193.5 61h0.0" /><rect height="22" width="113.5" x="80" y="50"></rect><text x="136.75" y="65">simple_stmt</text></g><path d="M193.5 61h10" /><path d="M80 61a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M80 91h0" /><path d="M108.5 91h85.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="80"></rect><text x="94.25" y="95">;</text></g><path d="M193.5 91a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g><path d="M203.5 61h10" /><g>
<path d="M213.5 61h0" /><path d="M282.0 61h0.0" /><path d="M213.5 61h20" /><g>
<path d="M233.5 61h0" /><path d="M262.0 61h0.0" /><g class="terminal token">
<path d="M233.5 61h0" /><path d="M262.0 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="233.5" y="50"></rect><text x="247.75" y="65">;</text></g></g><path d="M262.0 61h20" /><path d="M213.5 61a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M233.5 81h28.5" /></g><path d="M262.0 81a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M282.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M302.0 31h10" /><g class="non-terminal ">
<path d="M312.0 31h0" /><path d="M391.5 31h0.0" /><rect height="22" width="79.5" x="312" y="20"></rect><text x="351.75" y="35">NEWLINE</text></g></g><path d="M391.5 31h10" /><path d="M 401.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>simple_stmt</b>: assignment | &"type" type_alias | star_expressions | &'return' return_stmt | &('import' | 'from') import_stmt | &'raise' raise_stmt | 'pass' | &'del' del_stmt | &'yield' yield_stmt | &'assert' assert_stmt | 'break' | 'continue' | &'global' global_stmt | &'nonlocal' nonlocal_stmt<br> <b>assignment</b>: NAME ':' expression ['=' annotated_rhs] | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs] | ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT? | single_target augassign ~ (yield_expr | star_expressions) | invalid_assignment<br> <b>return_stmt</b>: 'return' star_expressions?<br> <b>raise_stmt</b>: 'raise' expression ['from' expression] | 'raise'<br> <b>global_stmt</b>: 'global' ','.NAME+<br> <b>nonlocal_stmt</b>: 'nonlocal' ','.NAME+<br> <b>del_stmt</b>: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt<br> <b>yield_stmt</b>: yield_expr<br> <b>assert_stmt</b>: 'assert' expression [',' expression]<br> <b>import_stmt</b>: invalid_import | import_name | import_from<br> <b>type_alias</b>: "type" NAME type_params? '=' expression<br> <b>annotated_rhs</b>: yield_expr | star_expressions<br> <b>augassign</b>: '+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' | '//='<br> <b>import_name</b>: 'import' dotted_as_names<br> <b>dotted_as_names</b>: ','.dotted_as_name+<br> <b>import_from</b>: 'from' (('.' | '...'))* dotted_name 'import' import_from_targets | 'from' (('.' | '...'))+ 'import' import_from_targets<br> <b>import_from_targets</b>: '(' import_from_as_names ','? ')' | import_from_as_names !',' | '*' | invalid_import_from_targets<br> <b>dotted_as_name</b>: dotted_name ['as' NAME]</code></pre><div><div>Used in: simple_stmts (2)</div><svg class="railroad-diagram" height="1168" viewBox="0 0 1013.5 1168" width="1013.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M973.5 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M848.5 31h105.0" /><g>
<path d="M60 31h0" /><path d="M400.5 31h0.0" /><path d="M60 31h20" /><g>
<path d="M80 31h0" /><path d="M134.0 31h246.5" /><g class="non-terminal ">
<path d="M80 31h0" /><path d="M134.0 31h0.0" /><rect height="22" width="54" x="80" y="20"></rect><text x="107" y="35">NAME</text></g></g><path d="M380.5 31h20" /><path d="M60 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M80 61h0" /><path d="M307.5 61h73.0" /><g class="terminal token">
<path d="M80 61h0" /><path d="M108.5 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="50"></rect><text x="94.25" y="65">(</text></g><path d="M108.5 61h10" /><path d="M118.5 61h10" /><g class="non-terminal ">
<path d="M128.5 61h0" /><path d="M259.0 61h0.0" /><rect height="22" width="130.5" x="128.5" y="50"></rect><text x="193.75" y="65">single_target</text></g><path d="M259.0 61h10" /><path d="M269.0 61h10" /><g class="terminal token">
<path d="M279.0 61h0" /><path d="M307.5 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="279" y="50"></rect><text x="293.25" y="65">)</text></g></g><path d="M380.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M80 91h0" /><path d="M380.5 91h0.0" /><g class="non-terminal ">
<path d="M80 91h0" /><path d="M380.5 91h0.0" /><rect height="22" width="300.5" x="80" y="80"></rect><text x="230.25" y="95">single_subscript_attribute_target</text></g></g><path d="M380.5 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /></g><path d="M400.5 31h10" /><g class="terminal token">
<path d="M410.5 31h0" /><path d="M439.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="410.5" y="20"></rect><text x="424.75" y="35">:</text></g><path d="M439.0 31h10" /><path d="M449.0 31h10" /><g class="non-terminal ">
<path d="M459.0 31h0" /><path d="M564.0 31h0.0" /><rect height="22" width="105" x="459" y="20"></rect><text x="511.5" y="35">expression</text></g><path d="M564.0 31h10" /><g>
<path d="M574.0 31h0" /><path d="M848.5 31h0.0" /><path d="M574.0 31h20" /><g>
<path d="M594.0 31h0" /><path d="M828.5 31h0.0" /><g class="terminal token">
<path d="M594.0 31h0" /><path d="M622.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="594" y="20"></rect><text x="608.25" y="35">=</text></g><path d="M622.5 31h10" /><g>
<path d="M632.5 31h0" /><path d="M828.5 31h0.0" /><path d="M632.5 31h20" /><g>
<path d="M652.5 31h0" /><path d="M757.5 31h51.0" /><g class="non-terminal ">
<path d="M652.5 31h0" /><path d="M757.5 31h0.0" /><rect height="22" width="105" x="652.5" y="20"></rect><text x="705" y="35">yield_expr</text></g></g><path d="M808.5 31h20" /><path d="M632.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M652.5 61h0" /><path d="M808.5 61h0.0" /><g class="non-terminal ">
<path d="M652.5 61h0" /><path d="M808.5 61h0.0" /><rect height="22" width="156" x="652.5" y="50"></rect><text x="730.5" y="65">star_expressions</text></g></g><path d="M808.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M828.5 31h20" /><path d="M574.0 31a10 10 0 0 1 10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M594.0 80h234.5" /></g><path d="M828.5 80a10 10 0 0 0 10 -10v-29a10 10 0 0 1 10 -10" /></g></g><path d="M953.5 31h20" /><path d="M40 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M60 121h0" /><path d="M522.0 121h431.5" /><g>
<path d="M60 121h0" /><path d="M326.0 121h0.0" /><path d="M60 121h20" /><g>
<path d="M80 121h0" /><path d="M270.5 121h35.5" /><g>
<path d="M80 121h0" /><path d="M270.5 121h0.0" /><path d="M80 121h10" /><g>
<path d="M90 121h0" /><path d="M260.5 121h0.0" /><g class="non-terminal ">
<path d="M90 121h0" /><path d="M212.0 121h0.0" /><rect height="22" width="122" x="90" y="110"></rect><text x="151" y="125">star_targets</text></g><path d="M212.0 121h10" /><path d="M222.0 121h10" /><g class="terminal token">
<path d="M232.0 121h0" /><path d="M260.5 121h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="232" y="110"></rect><text x="246.25" y="125">=</text></g></g><path d="M260.5 121h10" /><path d="M90 121a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M90 141h170.5" /></g><path d="M260.5 141a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M306.0 121h20" /><path d="M60 121a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M80 160h0" /><path d="M306.0 160h0.0" /><g class="non-terminal ">
<path d="M80 160h0" /><path d="M210.5 160h0.0" /><rect height="22" width="130.5" x="80" y="149"></rect><text x="145.25" y="164">single_target</text></g><path d="M210.5 160h10" /><g>
<path d="M220.5 160h0" /><path d="M306.0 160h0.0" /><path d="M220.5 160h20" /><g>
<path d="M240.5 160h0" /><path d="M277.5 160h8.5" /><g class="terminal token">
<path d="M240.5 160h0" /><path d="M277.5 160h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="149"></rect><text x="259" y="164">+=</text></g></g><path d="M286.0 160h20" /><path d="M220.5 160a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M240.5 190h0" /><path d="M277.5 190h8.5" /><g class="terminal token">
<path d="M240.5 190h0" /><path d="M277.5 190h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="179"></rect><text x="259" y="194">-=</text></g></g><path d="M286.0 190a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M240.5 220h0" /><path d="M277.5 220h8.5" /><g class="terminal token">
<path d="M240.5 220h0" /><path d="M277.5 220h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="209"></rect><text x="259" y="224">*=</text></g></g><path d="M286.0 220a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M240.5 250h0" /><path d="M277.5 250h8.5" /><g class="terminal token">
<path d="M240.5 250h0" /><path d="M277.5 250h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="239"></rect><text x="259" y="254">@=</text></g></g><path d="M286.0 250a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v100a10 10 0 0 0 10 10" /><g>
<path d="M240.5 280h0" /><path d="M277.5 280h8.5" /><g class="terminal token">
<path d="M240.5 280h0" /><path d="M277.5 280h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="269"></rect><text x="259" y="284">/=</text></g></g><path d="M286.0 280a10 10 0 0 0 10 -10v-100a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v130a10 10 0 0 0 10 10" /><g>
<path d="M240.5 310h0" /><path d="M277.5 310h8.5" /><g class="terminal token">
<path d="M240.5 310h0" /><path d="M277.5 310h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="299"></rect><text x="259" y="314">%=</text></g></g><path d="M286.0 310a10 10 0 0 0 10 -10v-130a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v160a10 10 0 0 0 10 10" /><g>
<path d="M240.5 340h0" /><path d="M277.5 340h8.5" /><g class="terminal token">
<path d="M240.5 340h0" /><path d="M277.5 340h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="329"></rect><text x="259" y="344">&=</text></g></g><path d="M286.0 340a10 10 0 0 0 10 -10v-160a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v190a10 10 0 0 0 10 10" /><g>
<path d="M240.5 370h0" /><path d="M277.5 370h8.5" /><g class="terminal token">
<path d="M240.5 370h0" /><path d="M277.5 370h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="359"></rect><text x="259" y="374">|=</text></g></g><path d="M286.0 370a10 10 0 0 0 10 -10v-190a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v220a10 10 0 0 0 10 10" /><g>
<path d="M240.5 400h0" /><path d="M277.5 400h8.5" /><g class="terminal token">
<path d="M240.5 400h0" /><path d="M277.5 400h0.0" /><rect height="22" rx="10" ry="10" width="37" x="240.5" y="389"></rect><text x="259" y="404">^=</text></g></g><path d="M286.0 400a10 10 0 0 0 10 -10v-220a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v250a10 10 0 0 0 10 10" /><g>
<path d="M240.5 430h0" /><path d="M286.0 430h0.0" /><g class="terminal token">
<path d="M240.5 430h0" /><path d="M286.0 430h0.0" /><rect height="22" rx="10" ry="10" width="45.5" x="240.5" y="419"></rect><text x="263.25" y="434"><<=</text></g></g><path d="M286.0 430a10 10 0 0 0 10 -10v-250a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v280a10 10 0 0 0 10 10" /><g>
<path d="M240.5 460h0" /><path d="M286.0 460h0.0" /><g class="terminal token">
<path d="M240.5 460h0" /><path d="M286.0 460h0.0" /><rect height="22" rx="10" ry="10" width="45.5" x="240.5" y="449"></rect><text x="263.25" y="464">>>=</text></g></g><path d="M286.0 460a10 10 0 0 0 10 -10v-280a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v310a10 10 0 0 0 10 10" /><g>
<path d="M240.5 490h0" /><path d="M286.0 490h0.0" /><g class="terminal token">
<path d="M240.5 490h0" /><path d="M286.0 490h0.0" /><rect height="22" rx="10" ry="10" width="45.5" x="240.5" y="479"></rect><text x="263.25" y="494">**=</text></g></g><path d="M286.0 490a10 10 0 0 0 10 -10v-310a10 10 0 0 1 10 -10" /><path d="M220.5 160a10 10 0 0 1 10 10v340a10 10 0 0 0 10 10" /><g>
<path d="M240.5 520h0" /><path d="M286.0 520h0.0" /><g class="terminal token">
<path d="M240.5 520h0" /><path d="M286.0 520h0.0" /><rect height="22" rx="10" ry="10" width="45.5" x="240.5" y="509"></rect><text x="263.25" y="524">//=</text></g></g><path d="M286.0 520a10 10 0 0 0 10 -10v-340a10 10 0 0 1 10 -10" /></g></g><path d="M306.0 160a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /></g><g>
<path d="M326.0 121h0" /><path d="M522.0 121h0.0" /><path d="M326.0 121h20" /><g>
<path d="M346.0 121h0" /><path d="M451.0 121h51.0" /><g class="non-terminal ">
<path d="M346.0 121h0" /><path d="M451.0 121h0.0" /><rect height="22" width="105" x="346" y="110"></rect><text x="398.5" y="125">yield_expr</text></g></g><path d="M502.0 121h20" /><path d="M326.0 121a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M346.0 151h0" /><path d="M502.0 151h0.0" /><g class="non-terminal ">
<path d="M346.0 151h0" /><path d="M502.0 151h0.0" /><rect height="22" width="156" x="346" y="140"></rect><text x="424" y="155">star_expressions</text></g></g><path d="M502.0 151a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M953.5 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v499a10 10 0 0 0 10 10" /><g>
<path d="M60 550h0" /><path d="M532.0 550h421.5" /><g class="terminal token">
<path d="M60 550h0" /><path d="M131.0 550h0.0" /><rect height="22" rx="10" ry="10" width="71" x="60" y="539"></rect><text x="95.5" y="554">"type"</text></g><path d="M131.0 550h10" /><path d="M141.0 550h10" /><g class="non-terminal ">
<path d="M151.0 550h0" /><path d="M205.0 550h0.0" /><rect height="22" width="54" x="151" y="539"></rect><text x="178" y="554">NAME</text></g><path d="M205.0 550h10" /><g>
<path d="M215.0 550h0" /><path d="M368.5 550h0.0" /><path d="M215.0 550h20" /><g>
<path d="M235.0 550h0" /><path d="M348.5 550h0.0" /><g class="non-terminal ">
<path d="M235.0 550h0" /><path d="M348.5 550h0.0" /><rect height="22" width="113.5" x="235" y="539"></rect><text x="291.75" y="554">type_params</text></g></g><path d="M348.5 550h20" /><path d="M215.0 550a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M235.0 570h113.5" /></g><path d="M348.5 570a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M368.5 550h10" /><g class="terminal token">
<path d="M378.5 550h0" /><path d="M407.0 550h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="378.5" y="539"></rect><text x="392.75" y="554">=</text></g><path d="M407.0 550h10" /><path d="M417.0 550h10" /><g class="non-terminal ">
<path d="M427.0 550h0" /><path d="M532.0 550h0.0" /><rect height="22" width="105" x="427" y="539"></rect><text x="479.5" y="554">expression</text></g></g><path d="M953.5 550a10 10 0 0 0 10 -10v-499a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v538a10 10 0 0 0 10 10" /><g>
<path d="M60 589h0" /><path d="M216.0 589h737.5" /><g class="non-terminal ">
<path d="M60 589h0" /><path d="M216.0 589h0.0" /><rect height="22" width="156" x="60" y="578"></rect><text x="138" y="593">star_expressions</text></g></g><path d="M953.5 589a10 10 0 0 0 10 -10v-538a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v568a10 10 0 0 0 10 10" /><g>
<path d="M60 619h0" /><path d="M354.0 619h599.5" /><g class="terminal token">
<path d="M60 619h0" /><path d="M148.0 619h0.0" /><rect height="22" rx="10" ry="10" width="88" x="60" y="608"></rect><text x="104" y="623">'return'</text></g><path d="M148.0 619h10" /><g>
<path d="M158.0 619h0" /><path d="M354.0 619h0.0" /><path d="M158.0 619h20" /><g>
<path d="M178.0 619h0" /><path d="M334.0 619h0.0" /><g class="non-terminal ">
<path d="M178.0 619h0" /><path d="M334.0 619h0.0" /><rect height="22" width="156" x="178" y="608"></rect><text x="256" y="623">star_expressions</text></g></g><path d="M334.0 619h20" /><path d="M158.0 619a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M178.0 639h156.0" /></g><path d="M334.0 639a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M953.5 619a10 10 0 0 0 10 -10v-568a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v607a10 10 0 0 0 10 10" /><g>
<path d="M60 658h0" /><path d="M479.5 658h474.0" /><g class="terminal token">
<path d="M60 658h0" /><path d="M148.0 658h0.0" /><rect height="22" rx="10" ry="10" width="88" x="60" y="647"></rect><text x="104" y="662">'import'</text></g><path d="M148.0 658h10" /><path d="M158.0 658h10" /><g>
<path d="M168.0 658h0" /><path d="M479.5 658h0.0" /><path d="M168.0 658h10" /><g>
<path d="M178.0 658h0" /><path d="M469.5 658h0.0" /><g class="non-terminal ">
<path d="M178.0 658h0" /><path d="M291.5 658h0.0" /><rect height="22" width="113.5" x="178" y="647"></rect><text x="234.75" y="662">dotted_name</text></g><path d="M291.5 658h10" /><g>
<path d="M301.5 658h0" /><path d="M469.5 658h0.0" /><path d="M301.5 658h20" /><g>
<path d="M321.5 658h0" /><path d="M449.5 658h0.0" /><g class="terminal token">
<path d="M321.5 658h0" /><path d="M375.5 658h0.0" /><rect height="22" rx="10" ry="10" width="54" x="321.5" y="647"></rect><text x="348.5" y="662">'as'</text></g><path d="M375.5 658h10" /><path d="M385.5 658h10" /><g class="non-terminal ">
<path d="M395.5 658h0" /><path d="M449.5 658h0.0" /><rect height="22" width="54" x="395.5" y="647"></rect><text x="422.5" y="662">NAME</text></g></g><path d="M449.5 658h20" /><path d="M301.5 658a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M321.5 678h128.0" /></g><path d="M449.5 678a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M469.5 658h10" /><path d="M178.0 658a10 10 0 0 0 -10 10v19a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M178.0 697h0" /><path d="M206.5 697h263.0" /><rect height="22" rx="10" ry="10" width="28.5" x="178" y="686"></rect><text x="192.25" y="701">,</text></g><path d="M469.5 697a10 10 0 0 0 10 -10v-19a10 10 0 0 0 -10 -10" /></g></g><path d="M953.5 658a10 10 0 0 0 10 -10v-607a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v676a10 10 0 0 0 10 10" /><g>
<path d="M60 727h0" /><path d="M953.5 727h0.0" /><g class="terminal token">
<path d="M60 727h0" /><path d="M131.0 727h0.0" /><rect height="22" rx="10" ry="10" width="71" x="60" y="716"></rect><text x="95.5" y="731">'from'</text></g><path d="M131.0 727h10" /><g>
<path d="M141.0 727h0" /><path d="M450.0 727h0.0" /><path d="M141.0 727h20" /><g>
<path d="M161.0 727h0" /><path d="M430.0 727h0.0" /><g>
<path d="M161.0 727h0" /><path d="M306.5 727h0.0" /><path d="M161.0 727h20" /><g>
<path d="M181.0 727h0" /><path d="M286.5 727h0.0" /><g>
<path d="M181.0 727h0" /><path d="M286.5 727h0.0" /><path d="M181.0 727h10" /><g>
<path d="M191.0 727h0" /><path d="M276.5 727h0.0" /><g>
<path d="M191.0 727h0" /><path d="M276.5 727h0.0" /><path d="M191.0 727h20" /><g>
<path d="M211.0 727h0" /><path d="M239.5 727h17.0" /><g class="terminal token">
<path d="M211.0 727h0" /><path d="M239.5 727h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="211" y="716"></rect><text x="225.25" y="731">.</text></g></g><path d="M256.5 727h20" /><path d="M191.0 727a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M211.0 757h0" /><path d="M256.5 757h0.0" /><g class="terminal token">
<path d="M211.0 757h0" /><path d="M256.5 757h0.0" /><rect height="22" rx="10" ry="10" width="45.5" x="211" y="746"></rect><text x="233.75" y="761">...</text></g></g><path d="M256.5 757a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M276.5 727h10" /><path d="M191.0 727a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M191.0 776h85.5" /></g><path d="M276.5 776a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10" /></g></g><path d="M286.5 727h20" /><path d="M161.0 727a10 10 0 0 1 10 10v37a10 10 0 0 0 10 10" /><g>
<path d="M181.0 784h105.5" /></g><path d="M286.5 784a10 10 0 0 0 10 -10v-37a10 10 0 0 1 10 -10" /></g><path d="M306.5 727h10" /><g class="non-terminal ">
<path d="M316.5 727h0" /><path d="M430.0 727h0.0" /><rect height="22" width="113.5" x="316.5" y="716"></rect><text x="373.25" y="731">dotted_name</text></g></g><path d="M430.0 727h20" /><path d="M141.0 727a10 10 0 0 1 10 10v56a10 10 0 0 0 10 10" /><g>
<path d="M161.0 803h0" /><path d="M266.5 803h163.5" /><g>
<path d="M161.0 803h0" /><path d="M266.5 803h0.0" /><path d="M161.0 803h10" /><g>
<path d="M171.0 803h0" /><path d="M256.5 803h0.0" /><g>
<path d="M171.0 803h0" /><path d="M256.5 803h0.0" /><path d="M171.0 803h20" /><g>
<path d="M191.0 803h0" /><path d="M219.5 803h17.0" /><g class="terminal token">
<path d="M191.0 803h0" /><path d="M219.5 803h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="191" y="792"></rect><text x="205.25" y="807">.</text></g></g><path d="M236.5 803h20" /><path d="M171.0 803a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M191.0 833h0" /><path d="M236.5 833h0.0" /><g class="terminal token">
<path d="M191.0 833h0" /><path d="M236.5 833h0.0" /><rect height="22" rx="10" ry="10" width="45.5" x="191" y="822"></rect><text x="213.75" y="837">...</text></g></g><path d="M236.5 833a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M256.5 803h10" /><path d="M171.0 803a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M171.0 852h85.5" /></g><path d="M256.5 852a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10" /></g></g><path d="M430.0 803a10 10 0 0 0 10 -10v-56a10 10 0 0 1 10 -10" /></g><path d="M450.0 727h10" /><g class="terminal token">
<path d="M460.0 727h0" /><path d="M548.0 727h0.0" /><rect height="22" rx="10" ry="10" width="88" x="460" y="716"></rect><text x="504" y="731">'import'</text></g><path d="M548.0 727h10" /><g>
<path d="M558.0 727h0" /><path d="M953.5 727h0.0" /><path d="M558.0 727h20" /><g>
<path d="M578.0 727h0" /><path d="M933.5 727h0.0" /><g class="terminal token">
<path d="M578.0 727h0" /><path d="M606.5 727h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="578" y="716"></rect><text x="592.25" y="731">(</text></g><path d="M606.5 727h10" /><path d="M616.5 727h10" /><g class="non-terminal ">
<path d="M626.5 727h0" /><path d="M816.5 727h0.0" /><rect height="22" width="190" x="626.5" y="716"></rect><text x="721.5" y="731">import_from_as_names</text></g><path d="M816.5 727h10" /><g>
<path d="M826.5 727h0" /><path d="M895.0 727h0.0" /><path d="M826.5 727h20" /><g>
<path d="M846.5 727h0" /><path d="M875.0 727h0.0" /><g class="terminal token">
<path d="M846.5 727h0" /><path d="M875.0 727h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="846.5" y="716"></rect><text x="860.75" y="731">,</text></g></g><path d="M875.0 727h20" /><path d="M826.5 727a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M846.5 747h28.5" /></g><path d="M875.0 747a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M895.0 727h10" /><g class="terminal token">
<path d="M905.0 727h0" /><path d="M933.5 727h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="905" y="716"></rect><text x="919.25" y="731">)</text></g></g><path d="M933.5 727h20" /><path d="M558.0 727a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M578.0 766h0" /><path d="M768.0 766h165.5" /><g class="non-terminal ">
<path d="M578.0 766h0" /><path d="M768.0 766h0.0" /><rect height="22" width="190" x="578" y="755"></rect><text x="673" y="770">import_from_as_names</text></g></g><path d="M933.5 766a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /><path d="M558.0 727a10 10 0 0 1 10 10v49a10 10 0 0 0 10 10" /><g>
<path d="M578.0 796h0" /><path d="M606.5 796h327.0" /><g class="terminal token">
<path d="M578.0 796h0" /><path d="M606.5 796h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="578" y="785"></rect><text x="592.25" y="800">*</text></g></g><path d="M933.5 796a10 10 0 0 0 10 -10v-49a10 10 0 0 1 10 -10" /></g></g><path d="M953.5 727a10 10 0 0 0 10 -10v-676a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v820a10 10 0 0 0 10 10" /><g>
<path d="M60 871h0" /><path d="M540.5 871h413.0" /><g class="terminal token">
<path d="M60 871h0" /><path d="M139.5 871h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="60" y="860"></rect><text x="99.75" y="875">'raise'</text></g><path d="M139.5 871h10" /><g>
<path d="M149.5 871h0" /><path d="M540.5 871h0.0" /><path d="M149.5 871h20" /><g>
<path d="M169.5 871h0" /><path d="M520.5 871h0.0" /><g class="non-terminal ">
<path d="M169.5 871h0" /><path d="M274.5 871h0.0" /><rect height="22" width="105" x="169.5" y="860"></rect><text x="222" y="875">expression</text></g><path d="M274.5 871h10" /><g>
<path d="M284.5 871h0" /><path d="M520.5 871h0.0" /><path d="M284.5 871h20" /><g>
<path d="M304.5 871h0" /><path d="M500.5 871h0.0" /><g class="terminal token">
<path d="M304.5 871h0" /><path d="M375.5 871h0.0" /><rect height="22" rx="10" ry="10" width="71" x="304.5" y="860"></rect><text x="340" y="875">'from'</text></g><path d="M375.5 871h10" /><path d="M385.5 871h10" /><g class="non-terminal ">
<path d="M395.5 871h0" /><path d="M500.5 871h0.0" /><rect height="22" width="105" x="395.5" y="860"></rect><text x="448" y="875">expression</text></g></g><path d="M500.5 871h20" /><path d="M284.5 871a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M304.5 891h196.0" /></g><path d="M500.5 891a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M520.5 871h20" /><path d="M149.5 871a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M169.5 899h351.0" /></g><path d="M520.5 899a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g></g><path d="M953.5 871a10 10 0 0 0 10 -10v-820a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v867a10 10 0 0 0 10 10" /><g>
<path d="M60 918h0" /><path d="M131.0 918h822.5" /><g class="terminal token">
<path d="M60 918h0" /><path d="M131.0 918h0.0" /><rect height="22" rx="10" ry="10" width="71" x="60" y="907"></rect><text x="95.5" y="922">'pass'</text></g></g><path d="M953.5 918a10 10 0 0 0 10 -10v-867a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v897a10 10 0 0 0 10 10" /><g>
<path d="M60 948h0" /><path d="M256.0 948h697.5" /><g class="terminal token">
<path d="M60 948h0" /><path d="M122.5 948h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="60" y="937"></rect><text x="91.25" y="952">'del'</text></g><path d="M122.5 948h10" /><path d="M132.5 948h10" /><g class="non-terminal ">
<path d="M142.5 948h0" /><path d="M256.0 948h0.0" /><rect height="22" width="113.5" x="142.5" y="937"></rect><text x="199.25" y="952">del_targets</text></g></g><path d="M953.5 948a10 10 0 0 0 10 -10v-897a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v927a10 10 0 0 0 10 10" /><g>
<path d="M60 978h0" /><path d="M165.0 978h788.5" /><g class="non-terminal ">
<path d="M60 978h0" /><path d="M165.0 978h0.0" /><rect height="22" width="105" x="60" y="967"></rect><text x="112.5" y="982">yield_expr</text></g></g><path d="M953.5 978a10 10 0 0 0 10 -10v-927a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v957a10 10 0 0 0 10 10" /><g>
<path d="M60 1008h0" /><path d="M476.5 1008h477.0" /><g class="terminal token">
<path d="M60 1008h0" /><path d="M148.0 1008h0.0" /><rect height="22" rx="10" ry="10" width="88" x="60" y="997"></rect><text x="104" y="1012">'assert'</text></g><path d="M148.0 1008h10" /><path d="M158.0 1008h10" /><g class="non-terminal ">
<path d="M168.0 1008h0" /><path d="M273.0 1008h0.0" /><rect height="22" width="105" x="168" y="997"></rect><text x="220.5" y="1012">expression</text></g><path d="M273.0 1008h10" /><g>
<path d="M283.0 1008h0" /><path d="M476.5 1008h0.0" /><path d="M283.0 1008h20" /><g>
<path d="M303.0 1008h0" /><path d="M456.5 1008h0.0" /><g class="terminal token">
<path d="M303.0 1008h0" /><path d="M331.5 1008h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="303" y="997"></rect><text x="317.25" y="1012">,</text></g><path d="M331.5 1008h10" /><path d="M341.5 1008h10" /><g class="non-terminal ">
<path d="M351.5 1008h0" /><path d="M456.5 1008h0.0" /><rect height="22" width="105" x="351.5" y="997"></rect><text x="404" y="1012">expression</text></g></g><path d="M456.5 1008h20" /><path d="M283.0 1008a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M303.0 1028h153.5" /></g><path d="M456.5 1028a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M953.5 1008a10 10 0 0 0 10 -10v-957a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v996a10 10 0 0 0 10 10" /><g>
<path d="M60 1047h0" /><path d="M139.5 1047h814.0" /><g class="terminal token">
<path d="M60 1047h0" /><path d="M139.5 1047h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="60" y="1036"></rect><text x="99.75" y="1051">'break'</text></g></g><path d="M953.5 1047a10 10 0 0 0 10 -10v-996a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v1026a10 10 0 0 0 10 10" /><g>
<path d="M60 1077h0" /><path d="M165.0 1077h788.5" /><g class="terminal token">
<path d="M60 1077h0" /><path d="M165.0 1077h0.0" /><rect height="22" rx="10" ry="10" width="105" x="60" y="1066"></rect><text x="112.5" y="1081">'continue'</text></g></g><path d="M953.5 1077a10 10 0 0 0 10 -10v-1026a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v1056a10 10 0 0 0 10 10" /><g>
<path d="M60 1107h0" /><path d="M289.0 1107h664.5" /><g>
<path d="M60 1107h0" /><path d="M205.0 1107h0.0" /><path d="M60 1107h20" /><g>
<path d="M80 1107h0" /><path d="M168.0 1107h17.0" /><g class="terminal token">
<path d="M80 1107h0" /><path d="M168.0 1107h0.0" /><rect height="22" rx="10" ry="10" width="88" x="80" y="1096"></rect><text x="124" y="1111">'global'</text></g></g><path d="M185.0 1107h20" /><path d="M60 1107a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M80 1137h0" /><path d="M185.0 1137h0.0" /><g class="terminal token">
<path d="M80 1137h0" /><path d="M185.0 1137h0.0" /><rect height="22" rx="10" ry="10" width="105" x="80" y="1126"></rect><text x="132.5" y="1141">'nonlocal'</text></g></g><path d="M185.0 1137a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M205.0 1107h10" /><g>
<path d="M215.0 1107h0" /><path d="M289.0 1107h0.0" /><path d="M215.0 1107h10" /><g class="non-terminal ">
<path d="M225.0 1107h0" /><path d="M279.0 1107h0.0" /><rect height="22" width="54" x="225" y="1096"></rect><text x="252" y="1111">NAME</text></g><path d="M279.0 1107h10" /><path d="M225.0 1107a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M225.0 1137h0" /><path d="M253.5 1137h25.5" /><rect height="22" rx="10" ry="10" width="28.5" x="225" y="1126"></rect><text x="239.25" y="1141">,</text></g><path d="M279.0 1137a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g></g><path d="M953.5 1107a10 10 0 0 0 10 -10v-1056a10 10 0 0 1 10 -10" /></g><path d="M 973.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>compound_stmt</b>: &('def' | '@' | 'async') function_def | &'if' if_stmt | &('class' | '@') class_def | &('with' | 'async') with_stmt | &('for' | 'async') for_stmt | &'try' try_stmt | &'while' while_stmt | match_stmt<br> <b>class_def</b>: decorators class_def_raw | class_def_raw<br> <b>function_def</b>: decorators function_def_raw | function_def_raw<br> <b>if_stmt</b>: invalid_if_stmt | 'if' named_expression ':' block elif_stmt | 'if' named_expression ':' block else_block?<br> <b>while_stmt</b>: invalid_while_stmt | 'while' named_expression ':' block else_block?<br> <b>for_stmt</b>: invalid_for_stmt | 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block? | 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block? | invalid_for_target<br> <b>with_stmt</b>: invalid_with_stmt_indent | 'with' '(' ','.with_item+ ','? ')' ':' block | 'with' ','.with_item+ ':' TYPE_COMMENT? block | 'async' 'with' '(' ','.with_item+ ','? ')' ':' block | 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block | invalid_with_stmt<br> <b>try_stmt</b>: invalid_try_stmt | 'try' &&':' block finally_block | 'try' &&':' block except_block+ else_block? finally_block? | 'try' &&':' block except_star_block+ else_block? finally_block?<br> <b>match_stmt</b>: "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT | invalid_match_stmt<br> <b>class_def_raw</b>: invalid_class_def_raw | 'class' NAME type_params? ['(' arguments? ')'] ':' block<br> <b>function_def_raw</b>: invalid_def_raw | 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block | 'async' 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block<br> <b>params</b>: invalid_parameters | parameters<br> <b>func_type_comment</b>: NEWLINE TYPE_COMMENT &(NEWLINE INDENT) | invalid_double_type_comments | TYPE_COMMENT<br> <b>except_block</b>: invalid_except_stmt_indent | 'except' expression ['as' NAME] ':' block | 'except' ':' block | invalid_except_stmt<br> <b>except_star_block</b>: invalid_except_star_stmt_indent | 'except' '*' expression ['as' NAME] ':' block | invalid_except_stmt<br> <b>subject_expr</b>: star_named_expression ',' star_named_expressions? | named_expression<br> <b>case_block</b>: invalid_case_block | "case" patterns guard? ':' block<br> <b>guard</b>: 'if' named_expression<br> <b>patterns</b>: open_sequence_pattern | pattern<br> <b>parameters</b>: slash_no_default param_no_default* param_with_default* star_etc? | slash_with_default param_with_default* star_etc? | param_no_default+ param_with_default* star_etc? | param_with_default+ star_etc? | star_etc<br> <b>slash_no_default</b>: param_no_default+ '/' ',' | param_no_default+ '/' &')'<br> <b>slash_with_default</b>: param_no_default* param_with_default+ '/' ',' | param_no_default* param_with_default+ '/' &')'</code></pre><div><div>Used in: interactive (1), statements (1)</div><svg class="railroad-diagram" height="756" viewBox="0 0 2261.0 756" width="2261.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M2221.0 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M2201.0 31h0.0" /><g>
<path d="M60 31h0" /><path d="M205.0 31h0.0" /><path d="M60 31h20" /><g>
<path d="M80 31h0" /><path d="M185.0 31h0.0" /><g class="non-terminal ">
<path d="M80 31h0" /><path d="M185.0 31h0.0" /><rect height="22" width="105" x="80" y="20"></rect><text x="132.5" y="35">decorators</text></g></g><path d="M185.0 31h20" /><path d="M60 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M80 51h105.0" /></g><path d="M185.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><g>
<path d="M205.0 31h0" /><path d="M324.5 31h0.0" /><path d="M205.0 31h20" /><g>
<path d="M225.0 31h79.5" /></g><path d="M304.5 31h20" /><path d="M205.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M225.0 51h0" /><path d="M304.5 51h0.0" /><g class="terminal token">
<path d="M225.0 51h0" /><path d="M304.5 51h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="225" y="40"></rect><text x="264.75" y="55">'async'</text></g></g><path d="M304.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M324.5 31h10" /><g class="terminal token">
<path d="M334.5 31h0" /><path d="M397.0 31h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="334.5" y="20"></rect><text x="365.75" y="35">'def'</text></g><path d="M397.0 31h10" /><path d="M407.0 31h10" /><g class="non-terminal ">
<path d="M417.0 31h0" /><path d="M471.0 31h0.0" /><rect height="22" width="54" x="417" y="20"></rect><text x="444" y="35">NAME</text></g><path d="M471.0 31h10" /><g>
<path d="M481.0 31h0" /><path d="M634.5 31h0.0" /><path d="M481.0 31h20" /><g>
<path d="M501.0 31h0" /><path d="M614.5 31h0.0" /><g class="non-terminal ">
<path d="M501.0 31h0" /><path d="M614.5 31h0.0" /><rect height="22" width="113.5" x="501" y="20"></rect><text x="557.75" y="35">type_params</text></g></g><path d="M614.5 31h20" /><path d="M481.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M501.0 51h113.5" /></g><path d="M614.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M634.5 31h10" /><g class="terminal token">
<path d="M644.5 31h0" /><path d="M673.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="644.5" y="20"></rect><text x="658.75" y="35">(</text></g><path d="M673.0 31h10" /><g>
<path d="M683.0 31h0" /><path d="M1710.0 31h0.0" /><path d="M683.0 31h20" /><g>
<path d="M703.0 31h0" /><path d="M1690.0 31h0.0" /><g>
<path d="M703.0 31h0" /><path d="M1562.0 31h0.0" /><path d="M703.0 31h20" /><g>
<path d="M723.0 31h0" /><path d="M1542.0 31h0.0" /><g>
<path d="M723.0 31h0" /><path d="M1309.0 31h0.0" /><path d="M723.0 31h20" /><g>
<path d="M743.0 31h0" /><path d="M1262.0 31h27.0" /><g>
<path d="M743.0 31h0" /><path d="M919.0 31h0.0" /><path d="M743.0 31h10" /><g class="non-terminal ">
<path d="M753.0 31h0" /><path d="M909.0 31h0.0" /><rect height="22" width="156" x="753" y="20"></rect><text x="831" y="35">param_no_default</text></g><path d="M909.0 31h10" /><path d="M753.0 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M753.0 51h156.0" /></g><path d="M909.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g><path d="M919.0 31h10" /><path d="M929.0 31h10" /><g class="terminal token">
<path d="M939.0 31h0" /><path d="M967.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="939" y="20"></rect><text x="953.25" y="35">/</text></g><path d="M967.5 31h10" /><g>
<path d="M977.5 31h0" /><path d="M1046.0 31h0.0" /><path d="M977.5 31h20" /><g>
<path d="M997.5 31h0" /><path d="M1026.0 31h0.0" /><g class="terminal token">
<path d="M997.5 31h0" /><path d="M1026.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="997.5" y="20"></rect><text x="1011.75" y="35">,</text></g></g><path d="M1026.0 31h20" /><path d="M977.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M997.5 51h28.5" /></g><path d="M1026.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><g>
<path d="M1046.0 31h0" /><path d="M1262.0 31h0.0" /><path d="M1046.0 31h20" /><g>
<path d="M1066.0 31h0" /><path d="M1242.0 31h0.0" /><g>
<path d="M1066.0 31h0" /><path d="M1242.0 31h0.0" /><path d="M1066.0 31h10" /><g class="non-terminal ">
<path d="M1076.0 31h0" /><path d="M1232.0 31h0.0" /><rect height="22" width="156" x="1076" y="20"></rect><text x="1154" y="35">param_no_default</text></g><path d="M1232.0 31h10" /><path d="M1076.0 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1076.0 51h156.0" /></g><path d="M1232.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M1242.0 31h20" /><path d="M1046.0 31a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M1066.0 59h176.0" /></g><path d="M1242.0 59a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g></g><path d="M1289.0 31h20" /><path d="M723.0 31a10 10 0 0 1 10 10v27a10 10 0 0 0 10 10" /><g>
<path d="M743.0 78h0" /><path d="M1289.0 78h0.0" /><g>
<path d="M743.0 78h0" /><path d="M959.0 78h0.0" /><path d="M743.0 78h20" /><g>
<path d="M763.0 78h0" /><path d="M939.0 78h0.0" /><g>
<path d="M763.0 78h0" /><path d="M939.0 78h0.0" /><path d="M763.0 78h10" /><g class="non-terminal ">
<path d="M773.0 78h0" /><path d="M929.0 78h0.0" /><rect height="22" width="156" x="773" y="67"></rect><text x="851" y="82">param_no_default</text></g><path d="M929.0 78h10" /><path d="M773.0 78a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M773.0 98h156.0" /></g><path d="M929.0 98a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M939.0 78h20" /><path d="M743.0 78a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M763.0 106h176.0" /></g><path d="M939.0 106a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g><path d="M959.0 78h10" /><g>
<path d="M969.0 78h0" /><path d="M1162.0 78h0.0" /><path d="M969.0 78h10" /><g class="non-terminal ">
<path d="M979.0 78h0" /><path d="M1152.0 78h0.0" /><rect height="22" width="173" x="979" y="67"></rect><text x="1065.5" y="82">param_with_default</text></g><path d="M1152.0 78h10" /><path d="M979.0 78a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M979.0 98h173.0" /></g><path d="M1152.0 98a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g><path d="M1162.0 78h10" /><path d="M1172.0 78h10" /><g class="terminal token">
<path d="M1182.0 78h0" /><path d="M1210.5 78h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="1182" y="67"></rect><text x="1196.25" y="82">/</text></g><path d="M1210.5 78h10" /><g>
<path d="M1220.5 78h0" /><path d="M1289.0 78h0.0" /><path d="M1220.5 78h20" /><g>
<path d="M1240.5 78h0" /><path d="M1269.0 78h0.0" /><g class="terminal token">
<path d="M1240.5 78h0" /><path d="M1269.0 78h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="1240.5" y="67"></rect><text x="1254.75" y="82">,</text></g></g><path d="M1269.0 78h20" /><path d="M1220.5 78a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1240.5 98h28.5" /></g><path d="M1269.0 98a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M1289.0 78a10 10 0 0 0 10 -10v-27a10 10 0 0 1 10 -10" /><path d="M723.0 31a10 10 0 0 1 10 10v74a10 10 0 0 0 10 10" /><g>
<path d="M743.0 125h0" /><path d="M919.0 125h370.0" /><g>
<path d="M743.0 125h0" /><path d="M919.0 125h0.0" /><path d="M743.0 125h10" /><g class="non-terminal ">
<path d="M753.0 125h0" /><path d="M909.0 125h0.0" /><rect height="22" width="156" x="753" y="114"></rect><text x="831" y="129">param_no_default</text></g><path d="M909.0 125h10" /><path d="M753.0 125a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M753.0 145h156.0" /></g><path d="M909.0 145a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M1289.0 125a10 10 0 0 0 10 -10v-74a10 10 0 0 1 10 -10" /></g><g>
<path d="M1309.0 31h0" /><path d="M1542.0 31h0.0" /><path d="M1309.0 31h20" /><g>
<path d="M1329.0 31h0" /><path d="M1522.0 31h0.0" /><g>
<path d="M1329.0 31h0" /><path d="M1522.0 31h0.0" /><path d="M1329.0 31h10" /><g class="non-terminal ">
<path d="M1339.0 31h0" /><path d="M1512.0 31h0.0" /><rect height="22" width="173" x="1339" y="20"></rect><text x="1425.5" y="35">param_with_default</text></g><path d="M1512.0 31h10" /><path d="M1339.0 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1339.0 51h173.0" /></g><path d="M1512.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M1522.0 31h20" /><path d="M1309.0 31a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M1329.0 59h193.0" /></g><path d="M1522.0 59a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g></g><path d="M1542.0 31h20" /><path d="M703.0 31a10 10 0 0 1 10 10v113a10 10 0 0 0 10 10" /><g>
<path d="M723.0 164h0" /><path d="M916.0 164h626.0" /><g>
<path d="M723.0 164h0" /><path d="M916.0 164h0.0" /><path d="M723.0 164h10" /><g class="non-terminal ">
<path d="M733.0 164h0" /><path d="M906.0 164h0.0" /><rect height="22" width="173" x="733" y="153"></rect><text x="819.5" y="168">param_with_default</text></g><path d="M906.0 164h10" /><path d="M733.0 164a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M733.0 184h173.0" /></g><path d="M906.0 184a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M1542.0 164a10 10 0 0 0 10 -10v-113a10 10 0 0 1 10 -10" /></g><g>
<path d="M1562.0 31h0" /><path d="M1690.0 31h0.0" /><path d="M1562.0 31h20" /><g>
<path d="M1582.0 31h0" /><path d="M1670.0 31h0.0" /><g class="non-terminal ">
<path d="M1582.0 31h0" /><path d="M1670.0 31h0.0" /><rect height="22" width="88" x="1582" y="20"></rect><text x="1626" y="35">star_etc</text></g></g><path d="M1670.0 31h20" /><path d="M1562.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1582.0 51h88.0" /></g><path d="M1670.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M1690.0 31h20" /><path d="M683.0 31a10 10 0 0 1 10 10v152a10 10 0 0 0 10 10" /><g>
<path d="M703.0 203h0" /><path d="M791.0 203h899.0" /><g class="non-terminal ">
<path d="M703.0 203h0" /><path d="M791.0 203h0.0" /><rect height="22" width="88" x="703" y="192"></rect><text x="747" y="207">star_etc</text></g></g><path d="M1690.0 203a10 10 0 0 0 10 -10v-152a10 10 0 0 1 10 -10" /><path d="M683.0 31a10 10 0 0 1 10 10v171a10 10 0 0 0 10 10" /><g>
<path d="M703.0 222h987.0" /></g><path d="M1690.0 222a10 10 0 0 0 10 -10v-171a10 10 0 0 1 10 -10" /></g><path d="M1710.0 31h10" /><g class="terminal token">
<path d="M1720.0 31h0" /><path d="M1748.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="1720" y="20"></rect><text x="1734.25" y="35">)</text></g><path d="M1748.5 31h10" /><g>
<path d="M1758.5 31h0" /><path d="M1960.5 31h0.0" /><path d="M1758.5 31h20" /><g>
<path d="M1778.5 31h0" /><path d="M1940.5 31h0.0" /><g class="terminal token">
<path d="M1778.5 31h0" /><path d="M1815.5 31h0.0" /><rect height="22" rx="10" ry="10" width="37" x="1778.5" y="20"></rect><text x="1797" y="35">-></text></g><path d="M1815.5 31h10" /><path d="M1825.5 31h10" /><g class="non-terminal ">
<path d="M1835.5 31h0" /><path d="M1940.5 31h0.0" /><rect height="22" width="105" x="1835.5" y="20"></rect><text x="1888" y="35">expression</text></g></g><path d="M1940.5 31h20" /><path d="M1758.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1778.5 51h162.0" /></g><path d="M1940.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M1960.5 31h10" /><g class="terminal token">
<path d="M1970.5 31h0" /><path d="M1999.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="1970.5" y="20"></rect><text x="1984.75" y="35">:</text></g><path d="M1999.0 31h10" /><g>
<path d="M2009.0 31h0" /><path d="M2128.5 31h0.0" /><path d="M2009.0 31h20" /><g>
<path d="M2029.0 31h0" /><path d="M2108.5 31h0.0" /><g class="non-terminal ">
<path d="M2029.0 31h0" /><path d="M2108.5 31h0.0" /><rect height="22" width="79.5" x="2029" y="20"></rect><text x="2068.75" y="35">NEWLINE</text></g></g><path d="M2108.5 31h20" /><path d="M2009.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M2029.0 51h79.5" /></g><path d="M2108.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M2128.5 31h10" /><g class="non-terminal ">
<path d="M2138.5 31h0" /><path d="M2201.0 31h0.0" /><rect height="22" width="62.5" x="2138.5" y="20"></rect><text x="2169.75" y="35">block</text></g></g><path d="M2201.0 31h20" /><path d="M40 31a10 10 0 0 1 10 10v190a10 10 0 0 0 10 10" /><g>
<path d="M60 241h0" /><path d="M576.0 241h1625.0" /><g class="terminal token">
<path d="M60 241h0" /><path d="M114.0 241h0.0" /><rect height="22" rx="10" ry="10" width="54" x="60" y="230"></rect><text x="87" y="245">'if'</text></g><path d="M114.0 241h10" /><path d="M124.0 241h10" /><g class="non-terminal ">
<path d="M134.0 241h0" /><path d="M290.0 241h0.0" /><rect height="22" width="156" x="134" y="230"></rect><text x="212" y="245">named_expression</text></g><path d="M290.0 241h10" /><path d="M300.0 241h10" /><g class="terminal token">
<path d="M310.0 241h0" /><path d="M338.5 241h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="310" y="230"></rect><text x="324.25" y="245">:</text></g><path d="M338.5 241h10" /><path d="M348.5 241h10" /><g class="non-terminal ">
<path d="M358.5 241h0" /><path d="M421.0 241h0.0" /><rect height="22" width="62.5" x="358.5" y="230"></rect><text x="389.75" y="245">block</text></g><path d="M421.0 241h10" /><g>
<path d="M431.0 241h0" /><path d="M576.0 241h0.0" /><path d="M431.0 241h20" /><g>
<path d="M451.0 241h0" /><path d="M547.5 241h8.5" /><g class="non-terminal ">
<path d="M451.0 241h0" /><path d="M547.5 241h0.0" /><rect height="22" width="96.5" x="451" y="230"></rect><text x="499.25" y="245">elif_stmt</text></g></g><path d="M556.0 241h20" /><path d="M431.0 241a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M451.0 271h0" /><path d="M556.0 271h0.0" /><g class="non-terminal ">
<path d="M451.0 271h0" /><path d="M556.0 271h0.0" /><rect height="22" width="105" x="451" y="260"></rect><text x="503.5" y="275">else_block</text></g></g><path d="M556.0 271a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M431.0 241a10 10 0 0 1 10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M451.0 290h105.0" /></g><path d="M556.0 290a10 10 0 0 0 10 -10v-29a10 10 0 0 1 10 -10" /></g></g><path d="M2201.0 241a10 10 0 0 0 10 -10v-190a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v258a10 10 0 0 0 10 10" /><g>
<path d="M60 309h0" /><path d="M906.5 309h1294.5" /><g>
<path d="M60 309h0" /><path d="M205.0 309h0.0" /><path d="M60 309h20" /><g>
<path d="M80 309h0" /><path d="M185.0 309h0.0" /><g class="non-terminal ">
<path d="M80 309h0" /><path d="M185.0 309h0.0" /><rect height="22" width="105" x="80" y="298"></rect><text x="132.5" y="313">decorators</text></g></g><path d="M185.0 309h20" /><path d="M60 309a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M80 329h105.0" /></g><path d="M185.0 329a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M205.0 309h10" /><g class="terminal token">
<path d="M215.0 309h0" /><path d="M294.5 309h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="215" y="298"></rect><text x="254.75" y="313">'class'</text></g><path d="M294.5 309h10" /><path d="M304.5 309h10" /><g class="non-terminal ">
<path d="M314.5 309h0" /><path d="M368.5 309h0.0" /><rect height="22" width="54" x="314.5" y="298"></rect><text x="341.5" y="313">NAME</text></g><path d="M368.5 309h10" /><g>
<path d="M378.5 309h0" /><path d="M532.0 309h0.0" /><path d="M378.5 309h20" /><g>
<path d="M398.5 309h0" /><path d="M512.0 309h0.0" /><g class="non-terminal ">
<path d="M398.5 309h0" /><path d="M512.0 309h0.0" /><rect height="22" width="113.5" x="398.5" y="298"></rect><text x="455.25" y="313">type_params</text></g></g><path d="M512.0 309h20" /><path d="M378.5 309a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M398.5 329h113.5" /></g><path d="M512.0 329a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><g>
<path d="M532.0 309h0" /><path d="M785.5 309h0.0" /><path d="M532.0 309h20" /><g>
<path d="M552.0 309h0" /><path d="M765.5 309h0.0" /><g class="terminal token">
<path d="M552.0 309h0" /><path d="M580.5 309h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="552" y="298"></rect><text x="566.25" y="313">(</text></g><path d="M580.5 309h10" /><g>
<path d="M590.5 309h0" /><path d="M727.0 309h0.0" /><path d="M590.5 309h20" /><g>
<path d="M610.5 309h0" /><path d="M707.0 309h0.0" /><g class="non-terminal ">
<path d="M610.5 309h0" /><path d="M707.0 309h0.0" /><rect height="22" width="96.5" x="610.5" y="298"></rect><text x="658.75" y="313">arguments</text></g></g><path d="M707.0 309h20" /><path d="M590.5 309a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M610.5 329h96.5" /></g><path d="M707.0 329a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M727.0 309h10" /><g class="terminal token">
<path d="M737.0 309h0" /><path d="M765.5 309h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="737" y="298"></rect><text x="751.25" y="313">)</text></g></g><path d="M765.5 309h20" /><path d="M532.0 309a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M552.0 337h213.5" /></g><path d="M765.5 337a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g><path d="M785.5 309h10" /><g class="terminal token">
<path d="M795.5 309h0" /><path d="M824.0 309h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="795.5" y="298"></rect><text x="809.75" y="313">:</text></g><path d="M824.0 309h10" /><path d="M834.0 309h10" /><g class="non-terminal ">
<path d="M844.0 309h0" /><path d="M906.5 309h0.0" /><rect height="22" width="62.5" x="844" y="298"></rect><text x="875.25" y="313">block</text></g></g><path d="M2201.0 309a10 10 0 0 0 10 -10v-258a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v305a10 10 0 0 0 10 10" /><g>
<path d="M60 356h0" /><path d="M960.0 356h1241.0" /><g>
<path d="M60 356h0" /><path d="M179.5 356h0.0" /><path d="M60 356h20" /><g>
<path d="M80 356h79.5" /></g><path d="M159.5 356h20" /><path d="M60 356a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M80 376h0" /><path d="M159.5 376h0.0" /><g class="terminal token">
<path d="M80 376h0" /><path d="M159.5 376h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="80" y="365"></rect><text x="119.75" y="380">'async'</text></g></g><path d="M159.5 376a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><g>
<path d="M179.5 356h0" /><path d="M960.0 356h0.0" /><path d="M179.5 356h20" /><g>
<path d="M199.5 356h0" /><path d="M723.5 356h216.5" /><g class="terminal token">
<path d="M199.5 356h0" /><path d="M270.5 356h0.0" /><rect height="22" rx="10" ry="10" width="71" x="199.5" y="345"></rect><text x="235" y="360">'with'</text></g><path d="M270.5 356h10" /><g>
<path d="M280.5 356h0" /><path d="M602.5 356h0.0" /><path d="M280.5 356h20" /><g>
<path d="M300.5 356h0" /><path d="M582.5 356h0.0" /><g class="terminal token">
<path d="M300.5 356h0" /><path d="M329.0 356h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="300.5" y="345"></rect><text x="314.75" y="360">(</text></g><path d="M329.0 356h10" /><path d="M339.0 356h10" /><g>
<path d="M349.0 356h0" /><path d="M465.5 356h0.0" /><path d="M349.0 356h10" /><g class="non-terminal ">
<path d="M359.0 356h0" /><path d="M455.5 356h0.0" /><rect height="22" width="96.5" x="359" y="345"></rect><text x="407.25" y="360">with_item</text></g><path d="M455.5 356h10" /><path d="M359.0 356a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M359.0 386h0" /><path d="M387.5 386h68.0" /><rect height="22" rx="10" ry="10" width="28.5" x="359" y="375"></rect><text x="373.25" y="390">,</text></g><path d="M455.5 386a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g><path d="M465.5 356h10" /><g>
<path d="M475.5 356h0" /><path d="M544.0 356h0.0" /><path d="M475.5 356h20" /><g>
<path d="M495.5 356h0" /><path d="M524.0 356h0.0" /><g class="terminal token">
<path d="M495.5 356h0" /><path d="M524.0 356h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="495.5" y="345"></rect><text x="509.75" y="360">,</text></g></g><path d="M524.0 356h20" /><path d="M475.5 356a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M495.5 376h28.5" /></g><path d="M524.0 376a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M544.0 356h10" /><g class="terminal token">
<path d="M554.0 356h0" /><path d="M582.5 356h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="554" y="345"></rect><text x="568.25" y="360">)</text></g></g><path d="M582.5 356h20" /><path d="M280.5 356a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M300.5 416h0" /><path d="M417.0 416h165.5" /><g>
<path d="M300.5 416h0" /><path d="M417.0 416h0.0" /><path d="M300.5 416h10" /><g class="non-terminal ">
<path d="M310.5 416h0" /><path d="M407.0 416h0.0" /><rect height="22" width="96.5" x="310.5" y="405"></rect><text x="358.75" y="420">with_item</text></g><path d="M407.0 416h10" /><path d="M310.5 416a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M310.5 446h0" /><path d="M339.0 446h68.0" /><rect height="22" rx="10" ry="10" width="28.5" x="310.5" y="435"></rect><text x="324.75" y="450">,</text></g><path d="M407.0 446a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g></g><path d="M582.5 416a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /></g><path d="M602.5 356h10" /><g class="terminal token">
<path d="M612.5 356h0" /><path d="M641.0 356h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="612.5" y="345"></rect><text x="626.75" y="360">:</text></g><path d="M641.0 356h10" /><path d="M651.0 356h10" /><g class="non-terminal ">
<path d="M661.0 356h0" /><path d="M723.5 356h0.0" /><rect height="22" width="62.5" x="661" y="345"></rect><text x="692.25" y="360">block</text></g></g><path d="M940.0 356h20" /><path d="M179.5 356a10 10 0 0 1 10 10v100a10 10 0 0 0 10 10" /><g>
<path d="M199.5 476h0" /><path d="M940.0 476h0.0" /><g class="terminal token">
<path d="M199.5 476h0" /><path d="M262.0 476h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="199.5" y="465"></rect><text x="230.75" y="480">'for'</text></g><path d="M262.0 476h10" /><path d="M272.0 476h10" /><g class="non-terminal ">
<path d="M282.0 476h0" /><path d="M404.0 476h0.0" /><rect height="22" width="122" x="282" y="465"></rect><text x="343" y="480">star_targets</text></g><path d="M404.0 476h10" /><path d="M414.0 476h10" /><g class="terminal token">
<path d="M424.0 476h0" /><path d="M478.0 476h0.0" /><rect height="22" rx="10" ry="10" width="54" x="424" y="465"></rect><text x="451" y="480">'in'</text></g><path d="M478.0 476h10" /><path d="M488.0 476h10" /><g class="non-terminal ">
<path d="M498.0 476h0" /><path d="M654.0 476h0.0" /><rect height="22" width="156" x="498" y="465"></rect><text x="576" y="480">star_expressions</text></g><path d="M654.0 476h10" /><path d="M664.0 476h10" /><g class="terminal token">
<path d="M674.0 476h0" /><path d="M702.5 476h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="674" y="465"></rect><text x="688.25" y="480">:</text></g><path d="M702.5 476h10" /><path d="M712.5 476h10" /><g class="non-terminal ">
<path d="M722.5 476h0" /><path d="M785.0 476h0.0" /><rect height="22" width="62.5" x="722.5" y="465"></rect><text x="753.75" y="480">block</text></g><path d="M785.0 476h10" /><g>
<path d="M795.0 476h0" /><path d="M940.0 476h0.0" /><path d="M795.0 476h20" /><g>
<path d="M815.0 476h0" /><path d="M920.0 476h0.0" /><g class="non-terminal ">
<path d="M815.0 476h0" /><path d="M920.0 476h0.0" /><rect height="22" width="105" x="815" y="465"></rect><text x="867.5" y="480">else_block</text></g></g><path d="M920.0 476h20" /><path d="M795.0 476a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M815.0 496h105.0" /></g><path d="M920.0 496a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M940.0 476a10 10 0 0 0 10 -10v-100a10 10 0 0 1 10 -10" /></g></g><path d="M2201.0 356a10 10 0 0 0 10 -10v-305a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v464a10 10 0 0 0 10 10" /><g>
<path d="M60 515h0" /><path d="M1239.5 515h961.5" /><g class="terminal token">
<path d="M60 515h0" /><path d="M122.5 515h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="60" y="504"></rect><text x="91.25" y="519">'try'</text></g><path d="M122.5 515h10" /><path d="M132.5 515h10" /><g class="terminal token">
<path d="M142.5 515h0" /><path d="M171.0 515h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="142.5" y="504"></rect><text x="156.75" y="519">:</text></g><path d="M171.0 515h10" /><path d="M181.0 515h10" /><g class="non-terminal ">
<path d="M191.0 515h0" /><path d="M253.5 515h0.0" /><rect height="22" width="62.5" x="191" y="504"></rect><text x="222.25" y="519">block</text></g><path d="M253.5 515h10" /><g>
<path d="M263.5 515h0" /><path d="M1239.5 515h0.0" /><path d="M263.5 515h20" /><g>
<path d="M283.5 515h0" /><path d="M414.0 515h805.5" /><g class="non-terminal ">
<path d="M283.5 515h0" /><path d="M414.0 515h0.0" /><rect height="22" width="130.5" x="283.5" y="504"></rect><text x="348.75" y="519">finally_block</text></g></g><path d="M1219.5 515h20" /><path d="M263.5 515a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M283.5 545h0" /><path d="M1219.5 545h0.0" /><g>
<path d="M283.5 545h0" /><path d="M904.0 545h0.0" /><path d="M283.5 545h20" /><g>
<path d="M303.5 545h0" /><path d="M865.5 545h18.5" /><g>
<path d="M303.5 545h0" /><path d="M865.5 545h0.0" /><path d="M303.5 545h10" /><g>
<path d="M313.5 545h0" /><path d="M855.5 545h0.0" /><g class="terminal token">
<path d="M313.5 545h0" /><path d="M401.5 545h0.0" /><rect height="22" rx="10" ry="10" width="88" x="313.5" y="534"></rect><text x="357.5" y="549">'except'</text></g><path d="M401.5 545h10" /><g>
<path d="M411.5 545h0" /><path d="M734.5 545h0.0" /><path d="M411.5 545h20" /><g>
<path d="M431.5 545h0" /><path d="M714.5 545h0.0" /><g class="non-terminal ">
<path d="M431.5 545h0" /><path d="M536.5 545h0.0" /><rect height="22" width="105" x="431.5" y="534"></rect><text x="484" y="549">expression</text></g><path d="M536.5 545h10" /><g>
<path d="M546.5 545h0" /><path d="M714.5 545h0.0" /><path d="M546.5 545h20" /><g>
<path d="M566.5 545h0" /><path d="M694.5 545h0.0" /><g class="terminal token">
<path d="M566.5 545h0" /><path d="M620.5 545h0.0" /><rect height="22" rx="10" ry="10" width="54" x="566.5" y="534"></rect><text x="593.5" y="549">'as'</text></g><path d="M620.5 545h10" /><path d="M630.5 545h10" /><g class="non-terminal ">
<path d="M640.5 545h0" /><path d="M694.5 545h0.0" /><rect height="22" width="54" x="640.5" y="534"></rect><text x="667.5" y="549">NAME</text></g></g><path d="M694.5 545h20" /><path d="M546.5 545a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M566.5 565h128.0" /></g><path d="M694.5 565a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M714.5 545h20" /><path d="M411.5 545a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M431.5 573h283.0" /></g><path d="M714.5 573a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g><path d="M734.5 545h10" /><g class="terminal token">
<path d="M744.5 545h0" /><path d="M773.0 545h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="744.5" y="534"></rect><text x="758.75" y="549">:</text></g><path d="M773.0 545h10" /><path d="M783.0 545h10" /><g class="non-terminal ">
<path d="M793.0 545h0" /><path d="M855.5 545h0.0" /><rect height="22" width="62.5" x="793" y="534"></rect><text x="824.25" y="549">block</text></g></g><path d="M855.5 545h10" /><path d="M313.5 545a10 10 0 0 0 -10 10v16a10 10 0 0 0 10 10" /><g>
<path d="M313.5 581h542.0" /></g><path d="M855.5 581a10 10 0 0 0 10 -10v-16a10 10 0 0 0 -10 -10" /></g></g><path d="M884.0 545h20" /><path d="M283.5 545a10 10 0 0 1 10 10v35a10 10 0 0 0 10 10" /><g>
<path d="M303.5 600h0" /><path d="M884.0 600h0.0" /><g>
<path d="M303.5 600h0" /><path d="M884.0 600h0.0" /><path d="M303.5 600h10" /><g>
<path d="M313.5 600h0" /><path d="M874.0 600h0.0" /><g class="terminal token">
<path d="M313.5 600h0" /><path d="M401.5 600h0.0" /><rect height="22" rx="10" ry="10" width="88" x="313.5" y="589"></rect><text x="357.5" y="604">'except'</text></g><path d="M401.5 600h10" /><path d="M411.5 600h10" /><g class="terminal token">
<path d="M421.5 600h0" /><path d="M450.0 600h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="421.5" y="589"></rect><text x="435.75" y="604">*</text></g><path d="M450.0 600h10" /><path d="M460.0 600h10" /><g class="non-terminal ">
<path d="M470.0 600h0" /><path d="M575.0 600h0.0" /><rect height="22" width="105" x="470" y="589"></rect><text x="522.5" y="604">expression</text></g><path d="M575.0 600h10" /><g>
<path d="M585.0 600h0" /><path d="M753.0 600h0.0" /><path d="M585.0 600h20" /><g>
<path d="M605.0 600h0" /><path d="M733.0 600h0.0" /><g class="terminal token">
<path d="M605.0 600h0" /><path d="M659.0 600h0.0" /><rect height="22" rx="10" ry="10" width="54" x="605" y="589"></rect><text x="632" y="604">'as'</text></g><path d="M659.0 600h10" /><path d="M669.0 600h10" /><g class="non-terminal ">
<path d="M679.0 600h0" /><path d="M733.0 600h0.0" /><rect height="22" width="54" x="679" y="589"></rect><text x="706" y="604">NAME</text></g></g><path d="M733.0 600h20" /><path d="M585.0 600a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M605.0 620h128.0" /></g><path d="M733.0 620a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M753.0 600h10" /><g class="terminal token">
<path d="M763.0 600h0" /><path d="M791.5 600h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="763" y="589"></rect><text x="777.25" y="604">:</text></g><path d="M791.5 600h10" /><path d="M801.5 600h10" /><g class="non-terminal ">
<path d="M811.5 600h0" /><path d="M874.0 600h0.0" /><rect height="22" width="62.5" x="811.5" y="589"></rect><text x="842.75" y="604">block</text></g></g><path d="M874.0 600h10" /><path d="M313.5 600a10 10 0 0 0 -10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M313.5 628h560.5" /></g><path d="M874.0 628a10 10 0 0 0 10 -10v-8a10 10 0 0 0 -10 -10" /></g></g><path d="M884.0 600a10 10 0 0 0 10 -10v-35a10 10 0 0 1 10 -10" /></g><g>
<path d="M904.0 545h0" /><path d="M1049.0 545h0.0" /><path d="M904.0 545h20" /><g>
<path d="M924.0 545h0" /><path d="M1029.0 545h0.0" /><g class="non-terminal ">
<path d="M924.0 545h0" /><path d="M1029.0 545h0.0" /><rect height="22" width="105" x="924" y="534"></rect><text x="976.5" y="549">else_block</text></g></g><path d="M1029.0 545h20" /><path d="M904.0 545a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M924.0 565h105.0" /></g><path d="M1029.0 565a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><g>
<path d="M1049.0 545h0" /><path d="M1219.5 545h0.0" /><path d="M1049.0 545h20" /><g>
<path d="M1069.0 545h0" /><path d="M1199.5 545h0.0" /><g class="non-terminal ">
<path d="M1069.0 545h0" /><path d="M1199.5 545h0.0" /><rect height="22" width="130.5" x="1069" y="534"></rect><text x="1134.25" y="549">finally_block</text></g></g><path d="M1199.5 545h20" /><path d="M1049.0 545a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1069.0 565h130.5" /></g><path d="M1199.5 565a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M1219.5 545a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M2201.0 515a10 10 0 0 0 10 -10v-464a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v596a10 10 0 0 0 10 10" /><g>
<path d="M60 647h0" /><path d="M601.5 647h1599.5" /><g class="terminal token">
<path d="M60 647h0" /><path d="M139.5 647h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="60" y="636"></rect><text x="99.75" y="651">'while'</text></g><path d="M139.5 647h10" /><path d="M149.5 647h10" /><g class="non-terminal ">
<path d="M159.5 647h0" /><path d="M315.5 647h0.0" /><rect height="22" width="156" x="159.5" y="636"></rect><text x="237.5" y="651">named_expression</text></g><path d="M315.5 647h10" /><path d="M325.5 647h10" /><g class="terminal token">
<path d="M335.5 647h0" /><path d="M364.0 647h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="335.5" y="636"></rect><text x="349.75" y="651">:</text></g><path d="M364.0 647h10" /><path d="M374.0 647h10" /><g class="non-terminal ">
<path d="M384.0 647h0" /><path d="M446.5 647h0.0" /><rect height="22" width="62.5" x="384" y="636"></rect><text x="415.25" y="651">block</text></g><path d="M446.5 647h10" /><g>
<path d="M456.5 647h0" /><path d="M601.5 647h0.0" /><path d="M456.5 647h20" /><g>
<path d="M476.5 647h0" /><path d="M581.5 647h0.0" /><g class="non-terminal ">
<path d="M476.5 647h0" /><path d="M581.5 647h0.0" /><rect height="22" width="105" x="476.5" y="636"></rect><text x="529" y="651">else_block</text></g></g><path d="M581.5 647h20" /><path d="M456.5 647a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M476.5 667h105.0" /></g><path d="M581.5 667a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M2201.0 647a10 10 0 0 0 10 -10v-596a10 10 0 0 1 10 -10" /><path d="M40 31a10 10 0 0 1 10 10v635a10 10 0 0 0 10 10" /><g>
<path d="M60 686h0" /><path d="M1764.0 686h437.0" /><g class="terminal token">
<path d="M60 686h0" /><path d="M139.5 686h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="60" y="675"></rect><text x="99.75" y="690">"match"</text></g><path d="M139.5 686h10" /><g>
<path d="M149.5 686h0" /><path d="M693.5 686h0.0" /><path d="M149.5 686h20" /><g>
<path d="M169.5 686h0" /><path d="M673.5 686h0.0" /><g class="non-terminal ">
<path d="M169.5 686h0" /><path d="M368.0 686h0.0" /><rect height="22" width="198.5" x="169.5" y="675"></rect><text x="268.75" y="690">star_named_expression</text></g><path d="M368.0 686h10" /><path d="M378.0 686h10" /><g class="terminal token">
<path d="M388.0 686h0" /><path d="M416.5 686h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="388" y="675"></rect><text x="402.25" y="690">,</text></g><path d="M416.5 686h10" /><g>
<path d="M426.5 686h0" /><path d="M673.5 686h0.0" /><path d="M426.5 686h20" /><g>
<path d="M446.5 686h0" /><path d="M653.5 686h0.0" /><g class="non-terminal ">
<path d="M446.5 686h0" /><path d="M653.5 686h0.0" /><rect height="22" width="207" x="446.5" y="675"></rect><text x="550" y="690">star_named_expressions</text></g></g><path d="M653.5 686h20" /><path d="M426.5 686a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M446.5 706h207.0" /></g><path d="M653.5 706a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M673.5 686h20" /><path d="M149.5 686a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M169.5 725h0" /><path d="M325.5 725h348.0" /><g class="non-terminal ">
<path d="M169.5 725h0" /><path d="M325.5 725h0.0" /><rect height="22" width="156" x="169.5" y="714"></rect><text x="247.5" y="729">named_expression</text></g></g><path d="M673.5 725a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /></g><path d="M693.5 686h10" /><g class="terminal token">
<path d="M703.5 686h0" /><path d="M732.0 686h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="703.5" y="675"></rect><text x="717.75" y="690">:</text></g><path d="M732.0 686h10" /><path d="M742.0 686h10" /><g class="non-terminal ">
<path d="M752.0 686h0" /><path d="M831.5 686h0.0" /><rect height="22" width="79.5" x="752" y="675"></rect><text x="791.75" y="690">NEWLINE</text></g><path d="M831.5 686h10" /><path d="M841.5 686h10" /><g class="non-terminal ">
<path d="M851.5 686h0" /><path d="M922.5 686h0.0" /><rect height="22" width="71" x="851.5" y="675"></rect><text x="887" y="690">INDENT</text></g><path d="M922.5 686h10" /><path d="M932.5 686h10" /><g>
<path d="M942.5 686h0" /><path d="M1673.0 686h0.0" /><path d="M942.5 686h10" /><g>
<path d="M952.5 686h0" /><path d="M1663.0 686h0.0" /><g class="terminal token">
<path d="M952.5 686h0" /><path d="M1023.5 686h0.0" /><rect height="22" rx="10" ry="10" width="71" x="952.5" y="675"></rect><text x="988" y="690">"case"</text></g><path d="M1023.5 686h10" /><g>
<path d="M1033.5 686h0" /><path d="M1272.0 686h0.0" /><path d="M1033.5 686h20" /><g>
<path d="M1053.5 686h0" /><path d="M1252.0 686h0.0" /><g class="non-terminal ">
<path d="M1053.5 686h0" /><path d="M1252.0 686h0.0" /><rect height="22" width="198.5" x="1053.5" y="675"></rect><text x="1152.75" y="690">open_sequence_pattern</text></g></g><path d="M1252.0 686h20" /><path d="M1033.5 686a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M1053.5 716h0" /><path d="M1133.0 716h119.0" /><g class="non-terminal ">
<path d="M1053.5 716h0" /><path d="M1133.0 716h0.0" /><rect height="22" width="79.5" x="1053.5" y="705"></rect><text x="1093.25" y="720">pattern</text></g></g><path d="M1252.0 716a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><g>
<path d="M1272.0 686h0" /><path d="M1542.0 686h0.0" /><path d="M1272.0 686h20" /><g>
<path d="M1292.0 686h0" /><path d="M1522.0 686h0.0" /><g class="terminal token">
<path d="M1292.0 686h0" /><path d="M1346.0 686h0.0" /><rect height="22" rx="10" ry="10" width="54" x="1292" y="675"></rect><text x="1319" y="690">'if'</text></g><path d="M1346.0 686h10" /><path d="M1356.0 686h10" /><g class="non-terminal ">
<path d="M1366.0 686h0" /><path d="M1522.0 686h0.0" /><rect height="22" width="156" x="1366" y="675"></rect><text x="1444" y="690">named_expression</text></g></g><path d="M1522.0 686h20" /><path d="M1272.0 686a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1292.0 706h230.0" /></g><path d="M1522.0 706a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M1542.0 686h10" /><g class="terminal token">
<path d="M1552.0 686h0" /><path d="M1580.5 686h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="1552" y="675"></rect><text x="1566.25" y="690">:</text></g><path d="M1580.5 686h10" /><path d="M1590.5 686h10" /><g class="non-terminal ">
<path d="M1600.5 686h0" /><path d="M1663.0 686h0.0" /><rect height="22" width="62.5" x="1600.5" y="675"></rect><text x="1631.75" y="690">block</text></g></g><path d="M1663.0 686h10" /><path d="M952.5 686a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M952.5 735h710.5" /></g><path d="M1663.0 735a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10" /></g><path d="M1673.0 686h10" /><path d="M1683.0 686h10" /><g class="non-terminal ">
<path d="M1693.0 686h0" /><path d="M1764.0 686h0.0" /><rect height="22" width="71" x="1693" y="675"></rect><text x="1728.5" y="690">DEDENT</text></g></g><path d="M2201.0 686a10 10 0 0 0 10 -10v-635a10 10 0 0 1 10 -10" /></g><path d="M 2221.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>import_from_as_names</b>: ','.import_from_as_name+<br> <b>import_from_as_name</b>: NAME ['as' NAME]</code></pre><div><div>Used in: simple_stmt (2)</div><svg class="railroad-diagram" height="101" viewBox="0 0 352.0 101" width="352.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M302.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M302.0 31h0.0" /><path d="M50 31h10" /><g>
<path d="M60 31h0" /><path d="M292.0 31h0.0" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M114.0 31h0.0" /><rect height="22" width="54" x="60" y="20"></rect><text x="87" y="35">NAME</text></g><path d="M114.0 31h10" /><g>
<path d="M124.0 31h0" /><path d="M292.0 31h0.0" /><path d="M124.0 31h20" /><g>
<path d="M144.0 31h0" /><path d="M272.0 31h0.0" /><g class="terminal token">
<path d="M144.0 31h0" /><path d="M198.0 31h0.0" /><rect height="22" rx="10" ry="10" width="54" x="144" y="20"></rect><text x="171" y="35">'as'</text></g><path d="M198.0 31h10" /><path d="M208.0 31h10" /><g class="non-terminal ">
<path d="M218.0 31h0" /><path d="M272.0 31h0.0" /><rect height="22" width="54" x="218" y="20"></rect><text x="245" y="35">NAME</text></g></g><path d="M272.0 31h20" /><path d="M124.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M144.0 51h128.0" /></g><path d="M272.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M292.0 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v19a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M60 70h0" /><path d="M88.5 70h203.5" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="59"></rect><text x="74.25" y="74">,</text></g><path d="M292.0 70a10 10 0 0 0 10 -10v-19a10 10 0 0 0 -10 -10" /></g></g><path d="M302.0 31h10" /><path d="M 312.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>dotted_name</b>: dotted_name '.' NAME | NAME</code></pre><div><div>Used in: simple_stmt (2), dotted_name (1)</div><svg class="railroad-diagram" height="71" viewBox="0 0 366.0 71" width="366.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M316.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M252.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M232.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M183.5 31h0.0" /><rect height="22" width="113.5" x="70" y="20"></rect><text x="126.75" y="35">dotted_name</text></g><path d="M183.5 31h10" /><path d="M193.5 31h10" /><g class="terminal token">
<path d="M203.5 31h0" /><path d="M232.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="203.5" y="20"></rect><text x="217.75" y="35">.</text></g></g><path d="M232.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M70 51h162.0" /></g><path d="M232.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M252.0 31h10" /><g class="non-terminal ">
<path d="M262.0 31h0" /><path d="M316.0 31h0.0" /><rect height="22" width="54" x="262" y="20"></rect><text x="289" y="35">NAME</text></g></g><path d="M316.0 31h10" /><path d="M 326.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>block</b>: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block</code></pre><div><div>Used in: compound_stmt (10), elif_stmt (1), else_block (1), finally_block (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 506.5 92" width="506.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M466.5 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M446.5 31h0.0" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M139.5 31h0.0" /><rect height="22" width="79.5" x="60" y="20"></rect><text x="99.75" y="35">NEWLINE</text></g><path d="M139.5 31h10" /><path d="M149.5 31h10" /><g class="non-terminal ">
<path d="M159.5 31h0" /><path d="M230.5 31h0.0" /><rect height="22" width="71" x="159.5" y="20"></rect><text x="195" y="35">INDENT</text></g><path d="M230.5 31h10" /><path d="M240.5 31h10" /><g class="non-terminal ">
<path d="M250.5 31h0" /><path d="M355.5 31h0.0" /><rect height="22" width="105" x="250.5" y="20"></rect><text x="303" y="35">statements</text></g><path d="M355.5 31h10" /><path d="M365.5 31h10" /><g class="non-terminal ">
<path d="M375.5 31h0" /><path d="M446.5 31h0.0" /><rect height="22" width="71" x="375.5" y="20"></rect><text x="411" y="35">DEDENT</text></g></g><path d="M446.5 31h20" /><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M60 61h0" /><path d="M182.0 61h264.5" /><g class="non-terminal ">
<path d="M60 61h0" /><path d="M182.0 61h0.0" /><rect height="22" width="122" x="60" y="50"></rect><text x="121" y="65">simple_stmts</text></g></g><path d="M446.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M 466.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>decorators</b>: (('@' named_expression NEWLINE))+</code></pre><div><div>Used in: compound_stmt (2)</div><svg class="railroad-diagram" height="71" viewBox="0 0 424.0 71" width="424.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M374.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M374.0 31h0.0" /><path d="M50 31h10" /><g>
<path d="M60 31h0" /><path d="M364.0 31h0.0" /><g class="terminal token">
<path d="M60 31h0" /><path d="M88.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="20"></rect><text x="74.25" y="35">@</text></g><path d="M88.5 31h10" /><path d="M98.5 31h10" /><g class="non-terminal ">
<path d="M108.5 31h0" /><path d="M264.5 31h0.0" /><rect height="22" width="156" x="108.5" y="20"></rect><text x="186.5" y="35">named_expression</text></g><path d="M264.5 31h10" /><path d="M274.5 31h10" /><g class="non-terminal ">
<path d="M284.5 31h0" /><path d="M364.0 31h0.0" /><rect height="22" width="79.5" x="284.5" y="20"></rect><text x="324.25" y="35">NEWLINE</text></g></g><path d="M364.0 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M60 51h304.0" /></g><path d="M364.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M374.0 31h10" /><path d="M 384.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>star_etc</b>: invalid_star_etc | '*' param_no_default param_maybe_default* kwds? | '*' param_no_default_star_annotation param_maybe_default* kwds? | '*' ',' param_maybe_default+ kwds? | kwds<br> <b>param_no_default_star_annotation</b>: param_star_annotation ',' TYPE_COMMENT? | param_star_annotation TYPE_COMMENT? &')'<br> <b>param_star_annotation</b>: NAME star_annotation<br> <b>star_annotation</b>: ':' star_expression</code></pre><div><div>Used in: compound_stmt (2)</div><svg class="railroad-diagram" height="170" viewBox="0 0 922.5 170" width="922.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M882.5 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M862.5 31h0.0" /><g class="terminal token">
<path d="M60 31h0" /><path d="M88.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="20"></rect><text x="74.25" y="35">*</text></g><path d="M88.5 31h10" /><g>
<path d="M98.5 31h0" /><path d="M768.5 31h0.0" /><path d="M98.5 31h20" /><g>
<path d="M118.5 31h0" /><path d="M748.5 31h0.0" /><g>
<path d="M118.5 31h0" /><path d="M507.0 31h0.0" /><path d="M118.5 31h20" /><g>
<path d="M138.5 31h0" /><path d="M294.5 31h192.5" /><g class="non-terminal ">
<path d="M138.5 31h0" /><path d="M294.5 31h0.0" /><rect height="22" width="156" x="138.5" y="20"></rect><text x="216.5" y="35">param_no_default</text></g></g><path d="M487.0 31h20" /><path d="M118.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M138.5 61h0" /><path d="M487.0 61h0.0" /><g class="non-terminal ">
<path d="M138.5 61h0" /><path d="M192.5 61h0.0" /><rect height="22" width="54" x="138.5" y="50"></rect><text x="165.5" y="65">NAME</text></g><path d="M192.5 61h10" /><path d="M202.5 61h10" /><g class="terminal token">
<path d="M212.5 61h0" /><path d="M241.0 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="212.5" y="50"></rect><text x="226.75" y="65">:</text></g><path d="M241.0 61h10" /><path d="M251.0 61h10" /><g class="non-terminal ">
<path d="M261.0 61h0" /><path d="M408.5 61h0.0" /><rect height="22" width="147.5" x="261" y="50"></rect><text x="334.75" y="65">star_expression</text></g><path d="M408.5 61h10" /><g>
<path d="M418.5 61h0" /><path d="M487.0 61h0.0" /><path d="M418.5 61h20" /><g>
<path d="M438.5 61h0" /><path d="M467.0 61h0.0" /><g class="terminal token">
<path d="M438.5 61h0" /><path d="M467.0 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="438.5" y="50"></rect><text x="452.75" y="65">,</text></g></g><path d="M467.0 61h20" /><path d="M418.5 61a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M438.5 81h28.5" /></g><path d="M467.0 81a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M487.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><g>
<path d="M507.0 31h0" /><path d="M748.5 31h0.0" /><path d="M507.0 31h20" /><g>
<path d="M527.0 31h0" /><path d="M728.5 31h0.0" /><g>
<path d="M527.0 31h0" /><path d="M728.5 31h0.0" /><path d="M527.0 31h10" /><g class="non-terminal ">
<path d="M537.0 31h0" /><path d="M718.5 31h0.0" /><rect height="22" width="181.5" x="537" y="20"></rect><text x="627.75" y="35">param_maybe_default</text></g><path d="M718.5 31h10" /><path d="M537.0 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M537.0 51h181.5" /></g><path d="M718.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M728.5 31h20" /><path d="M507.0 31a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M527.0 59h201.5" /></g><path d="M728.5 59a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g></g><path d="M748.5 31h20" /><path d="M98.5 31a10 10 0 0 1 10 10v49a10 10 0 0 0 10 10" /><g>
<path d="M118.5 100h0" /><path d="M368.5 100h380.0" /><g class="terminal token">
<path d="M118.5 100h0" /><path d="M147.0 100h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="118.5" y="89"></rect><text x="132.75" y="104">,</text></g><path d="M147.0 100h10" /><path d="M157.0 100h10" /><g>
<path d="M167.0 100h0" /><path d="M368.5 100h0.0" /><path d="M167.0 100h10" /><g class="non-terminal ">
<path d="M177.0 100h0" /><path d="M358.5 100h0.0" /><rect height="22" width="181.5" x="177" y="89"></rect><text x="267.75" y="104">param_maybe_default</text></g><path d="M358.5 100h10" /><path d="M177.0 100a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M177.0 120h181.5" /></g><path d="M358.5 120a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M748.5 100a10 10 0 0 0 10 -10v-49a10 10 0 0 1 10 -10" /></g><g>
<path d="M768.5 31h0" /><path d="M862.5 31h0.0" /><path d="M768.5 31h20" /><g>
<path d="M788.5 31h0" /><path d="M842.5 31h0.0" /><g class="non-terminal ">
<path d="M788.5 31h0" /><path d="M842.5 31h0.0" /><rect height="22" width="54" x="788.5" y="20"></rect><text x="815.5" y="35">kwds</text></g></g><path d="M842.5 31h20" /><path d="M768.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M788.5 51h54.0" /></g><path d="M842.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M862.5 31h20" /><path d="M40 31a10 10 0 0 1 10 10v88a10 10 0 0 0 10 10" /><g>
<path d="M60 139h0" /><path d="M114.0 139h748.5" /><g class="non-terminal ">
<path d="M60 139h0" /><path d="M114.0 139h0.0" /><rect height="22" width="54" x="60" y="128"></rect><text x="87" y="143">kwds</text></g></g><path d="M862.5 139a10 10 0 0 0 10 -10v-88a10 10 0 0 1 10 -10" /></g><path d="M 882.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>kwds</b>: invalid_kwds | '**' param_no_default</code></pre><div><div>Used in: star_etc (2)</div><svg class="railroad-diagram" height="62" viewBox="0 0 313.0 62" width="313.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M263.0 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M87.0 31h0.0" /><rect height="22" rx="10" ry="10" width="37" x="50" y="20"></rect><text x="68.5" y="35">**</text></g><path d="M87.0 31h10" /><path d="M97.0 31h10" /><g class="non-terminal ">
<path d="M107.0 31h0" /><path d="M263.0 31h0.0" /><rect height="22" width="156" x="107" y="20"></rect><text x="185" y="35">param_no_default</text></g></g><path d="M263.0 31h10" /><path d="M 273.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>param_no_default</b>: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'</code></pre><div><div>Used in: compound_stmt (4), star_etc (1), kwds (1)</div><svg class="railroad-diagram" height="71" viewBox="0 0 241.0 71" width="241.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M191.0 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M112.5 31h0.0" /><rect height="22" width="62.5" x="50" y="20"></rect><text x="81.25" y="35">param</text></g><path d="M112.5 31h10" /><g>
<path d="M122.5 31h0" /><path d="M191.0 31h0.0" /><path d="M122.5 31h20" /><g>
<path d="M142.5 31h0" /><path d="M171.0 31h0.0" /><g class="terminal token">
<path d="M142.5 31h0" /><path d="M171.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="142.5" y="20"></rect><text x="156.75" y="35">,</text></g></g><path d="M171.0 31h20" /><path d="M122.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M142.5 51h28.5" /></g><path d="M171.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M191.0 31h10" /><path d="M 201.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>param_with_default</b>: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'</code></pre><div><div>Used in: compound_stmt (3)</div><svg class="railroad-diagram" height="71" viewBox="0 0 340.5 71" width="340.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M290.5 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M112.5 31h0.0" /><rect height="22" width="62.5" x="50" y="20"></rect><text x="81.25" y="35">param</text></g><path d="M112.5 31h10" /><path d="M122.5 31h10" /><g class="non-terminal ">
<path d="M132.5 31h0" /><path d="M212.0 31h0.0" /><rect height="22" width="79.5" x="132.5" y="20"></rect><text x="172.25" y="35">default</text></g><path d="M212.0 31h10" /><g>
<path d="M222.0 31h0" /><path d="M290.5 31h0.0" /><path d="M222.0 31h20" /><g>
<path d="M242.0 31h0" /><path d="M270.5 31h0.0" /><g class="terminal token">
<path d="M242.0 31h0" /><path d="M270.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="242" y="20"></rect><text x="256.25" y="35">,</text></g></g><path d="M270.5 31h20" /><path d="M222.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M242.0 51h28.5" /></g><path d="M270.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M290.5 31h10" /><path d="M 300.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>param_maybe_default</b>: param default? ',' TYPE_COMMENT? | param default? TYPE_COMMENT? &')'</code></pre><div><div>Used in: star_etc (2)</div><svg class="railroad-diagram" height="109" viewBox="0 0 370.5 109" width="370.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M320.5 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M112.5 31h0.0" /><rect height="22" width="62.5" x="50" y="20"></rect><text x="81.25" y="35">param</text></g><path d="M112.5 31h10" /><g>
<path d="M122.5 31h0" /><path d="M320.5 31h0.0" /><path d="M122.5 31h20" /><g>
<path d="M142.5 31h0" /><path d="M300.5 31h0.0" /><g>
<path d="M142.5 31h0" /><path d="M262.0 31h0.0" /><path d="M142.5 31h20" /><g>
<path d="M162.5 31h0" /><path d="M242.0 31h0.0" /><g class="non-terminal ">
<path d="M162.5 31h0" /><path d="M242.0 31h0.0" /><rect height="22" width="79.5" x="162.5" y="20"></rect><text x="202.25" y="35">default</text></g></g><path d="M242.0 31h20" /><path d="M142.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M162.5 51h79.5" /></g><path d="M242.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M262.0 31h10" /><g class="terminal token">
<path d="M272.0 31h0" /><path d="M300.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="272" y="20"></rect><text x="286.25" y="35">,</text></g></g><path d="M300.5 31h20" /><path d="M122.5 31a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M142.5 70h0" /><path d="M222.0 70h78.5" /><g class="non-terminal ">
<path d="M142.5 70h0" /><path d="M222.0 70h0.0" /><rect height="22" width="79.5" x="142.5" y="59"></rect><text x="182.25" y="74">default</text></g></g><path d="M300.5 70a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /><path d="M122.5 31a10 10 0 0 1 10 10v38a10 10 0 0 0 10 10" /><g>
<path d="M142.5 89h158.0" /></g><path d="M300.5 89a10 10 0 0 0 10 -10v-38a10 10 0 0 1 10 -10" /></g></g><path d="M320.5 31h10" /><path d="M 330.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>param</b>: NAME annotation?<br> <b>annotation</b>: ':' expression</code></pre><div><div>Used in: param_no_default (1), param_with_default (1), param_maybe_default (1)</div><svg class="railroad-diagram" height="71" viewBox="0 0 357.5 71" width="357.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M307.5 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M104.0 31h0.0" /><rect height="22" width="54" x="50" y="20"></rect><text x="77" y="35">NAME</text></g><path d="M104.0 31h10" /><g>
<path d="M114.0 31h0" /><path d="M307.5 31h0.0" /><path d="M114.0 31h20" /><g>
<path d="M134.0 31h0" /><path d="M287.5 31h0.0" /><g class="terminal token">
<path d="M134.0 31h0" /><path d="M162.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="134" y="20"></rect><text x="148.25" y="35">:</text></g><path d="M162.5 31h10" /><path d="M172.5 31h10" /><g class="non-terminal ">
<path d="M182.5 31h0" /><path d="M287.5 31h0.0" /><rect height="22" width="105" x="182.5" y="20"></rect><text x="235" y="35">expression</text></g></g><path d="M287.5 31h20" /><path d="M114.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M134.0 51h153.5" /></g><path d="M287.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M307.5 31h10" /><path d="M 317.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>default</b>: '=' expression | invalid_default</code></pre><div><div>Used in: param_maybe_default (2), lambda_param_maybe_default (2), param_with_default (1), lambda_param_with_default (1)</div><svg class="railroad-diagram" height="62" viewBox="0 0 253.5 62" width="253.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M203.5 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M78.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="50" y="20"></rect><text x="64.25" y="35">=</text></g><path d="M78.5 31h10" /><path d="M88.5 31h10" /><g class="non-terminal ">
<path d="M98.5 31h0" /><path d="M203.5 31h0.0" /><rect height="22" width="105" x="98.5" y="20"></rect><text x="151" y="35">expression</text></g></g><path d="M203.5 31h10" /><path d="M 213.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>elif_stmt</b>: invalid_elif_stmt | 'elif' named_expression ':' block elif_stmt | 'elif' named_expression ':' block else_block?</code></pre><div><div>Used in: compound_stmt (1), elif_stmt (1)</div><svg class="railroad-diagram" height="100" viewBox="0 0 633.0 100" width="633.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M583.0 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M121.0 31h0.0" /><rect height="22" rx="10" ry="10" width="71" x="50" y="20"></rect><text x="85.5" y="35">'elif'</text></g><path d="M121.0 31h10" /><path d="M131.0 31h10" /><g class="non-terminal ">
<path d="M141.0 31h0" /><path d="M297.0 31h0.0" /><rect height="22" width="156" x="141" y="20"></rect><text x="219" y="35">named_expression</text></g><path d="M297.0 31h10" /><path d="M307.0 31h10" /><g class="terminal token">
<path d="M317.0 31h0" /><path d="M345.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="317" y="20"></rect><text x="331.25" y="35">:</text></g><path d="M345.5 31h10" /><path d="M355.5 31h10" /><g class="non-terminal ">
<path d="M365.5 31h0" /><path d="M428.0 31h0.0" /><rect height="22" width="62.5" x="365.5" y="20"></rect><text x="396.75" y="35">block</text></g><path d="M428.0 31h10" /><g>
<path d="M438.0 31h0" /><path d="M583.0 31h0.0" /><path d="M438.0 31h20" /><g>
<path d="M458.0 31h0" /><path d="M554.5 31h8.5" /><g class="non-terminal ">
<path d="M458.0 31h0" /><path d="M554.5 31h0.0" /><rect height="22" width="96.5" x="458" y="20"></rect><text x="506.25" y="35">elif_stmt</text></g></g><path d="M563.0 31h20" /><path d="M438.0 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M458.0 61h0" /><path d="M563.0 61h0.0" /><g class="non-terminal ">
<path d="M458.0 61h0" /><path d="M563.0 61h0.0" /><rect height="22" width="105" x="458" y="50"></rect><text x="510.5" y="65">else_block</text></g></g><path d="M563.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M438.0 31a10 10 0 0 1 10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M458.0 80h105.0" /></g><path d="M563.0 80a10 10 0 0 0 10 -10v-29a10 10 0 0 1 10 -10" /></g></g><path d="M583.0 31h10" /><path d="M 593.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>else_block</b>: invalid_else_stmt | 'else' &&':' block</code></pre><div><div>Used in: compound_stmt (4), elif_stmt (1)</div><svg class="railroad-diagram" height="62" viewBox="0 0 302.0 62" width="302.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M252.0 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M121.0 31h0.0" /><rect height="22" rx="10" ry="10" width="71" x="50" y="20"></rect><text x="85.5" y="35">'else'</text></g><path d="M121.0 31h10" /><path d="M131.0 31h10" /><g class="terminal token">
<path d="M141.0 31h0" /><path d="M169.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="141" y="20"></rect><text x="155.25" y="35">:</text></g><path d="M169.5 31h10" /><path d="M179.5 31h10" /><g class="non-terminal ">
<path d="M189.5 31h0" /><path d="M252.0 31h0.0" /><rect height="22" width="62.5" x="189.5" y="20"></rect><text x="220.75" y="35">block</text></g></g><path d="M252.0 31h10" /><path d="M 262.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>with_item</b>: expression 'as' star_target &(',' | ')' | ':') | invalid_with_item | expression</code></pre><div><div>Used in: compound_stmt (2)</div><svg class="railroad-diagram" height="71" viewBox="0 0 442.5 71" width="442.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M392.5 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M155.0 31h0.0" /><rect height="22" width="105" x="50" y="20"></rect><text x="102.5" y="35">expression</text></g><path d="M155.0 31h10" /><g>
<path d="M165.0 31h0" /><path d="M392.5 31h0.0" /><path d="M165.0 31h20" /><g>
<path d="M185.0 31h0" /><path d="M372.5 31h0.0" /><g class="terminal token">
<path d="M185.0 31h0" /><path d="M239.0 31h0.0" /><rect height="22" rx="10" ry="10" width="54" x="185" y="20"></rect><text x="212" y="35">'as'</text></g><path d="M239.0 31h10" /><path d="M249.0 31h10" /><g class="non-terminal ">
<path d="M259.0 31h0" /><path d="M372.5 31h0.0" /><rect height="22" width="113.5" x="259" y="20"></rect><text x="315.75" y="35">star_target</text></g></g><path d="M372.5 31h20" /><path d="M165.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M185.0 51h187.5" /></g><path d="M372.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M392.5 31h10" /><path d="M 402.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>finally_block</b>: invalid_finally_stmt | 'finally' &&':' block</code></pre><div><div>Used in: compound_stmt (2)</div><svg class="railroad-diagram" height="62" viewBox="0 0 327.5 62" width="327.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M277.5 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M146.5 31h0.0" /><rect height="22" rx="10" ry="10" width="96.5" x="50" y="20"></rect><text x="98.25" y="35">'finally'</text></g><path d="M146.5 31h10" /><path d="M156.5 31h10" /><g class="terminal token">
<path d="M166.5 31h0" /><path d="M195.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="166.5" y="20"></rect><text x="180.75" y="35">:</text></g><path d="M195.0 31h10" /><path d="M205.0 31h10" /><g class="non-terminal ">
<path d="M215.0 31h0" /><path d="M277.5 31h0.0" /><rect height="22" width="62.5" x="215" y="20"></rect><text x="246.25" y="35">block</text></g></g><path d="M277.5 31h10" /><path d="M 287.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>pattern</b>: as_pattern | or_pattern<br> <b>as_pattern</b>: or_pattern 'as' pattern_capture_target | invalid_as_pattern<br> <b>or_pattern</b>: '|'.closed_pattern+<br> <b>closed_pattern</b>: literal_pattern | capture_pattern | wildcard_pattern | value_pattern | group_pattern | sequence_pattern | mapping_pattern | class_pattern<br> <b>literal_pattern</b>: signed_number !('+' | '-') | complex_number | strings | 'None' | 'True' | 'False'<br> <b>capture_pattern</b>: pattern_capture_target<br> <b>value_pattern</b>: attr !('.' | '(' | '=')<br> <b>group_pattern</b>: '(' pattern ')'<br> <b>sequence_pattern</b>: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'<br> <b>mapping_pattern</b>: '{' '}' | '{' double_star_pattern ','? '}' | '{' items_pattern ',' double_star_pattern ','? '}' | '{' items_pattern ','? '}'<br> <b>double_star_pattern</b>: '**' pattern_capture_target<br> <b>class_pattern</b>: name_or_attr '(' ')' | name_or_attr '(' positional_patterns ','? ')' | name_or_attr '(' keyword_patterns ','? ')' | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')' | invalid_class_pattern<br> <b>keyword_patterns</b>: ','.keyword_pattern+<br> <b>keyword_pattern</b>: NAME '=' pattern</code></pre><div><div>Used in: pattern (2), compound_stmt (1), maybe_star_pattern (1), items_pattern (1), positional_patterns (1)</div><svg class="railroad-diagram" height="650" viewBox="0 0 1360.5 650" width="1360.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M1310.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M979.5 31h0.0" /><path d="M50 31h10" /><g>
<path d="M60 31h0" /><path d="M969.5 31h0.0" /><path d="M60 31h20" /><g>
<path d="M80 31h0" /><path d="M210.5 31h739.0" /><g class="non-terminal ">
<path d="M80 31h0" /><path d="M210.5 31h0.0" /><rect height="22" width="130.5" x="80" y="20"></rect><text x="145.25" y="35">signed_number</text></g></g><path d="M949.5 31h20" /><path d="M60 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M80 61h0" /><path d="M219.0 61h730.5" /><g class="non-terminal ">
<path d="M80 61h0" /><path d="M219.0 61h0.0" /><rect height="22" width="139" x="80" y="50"></rect><text x="149.5" y="65">complex_number</text></g></g><path d="M949.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M80 91h0" /><path d="M159.5 91h790.0" /><g class="non-terminal ">
<path d="M80 91h0" /><path d="M159.5 91h0.0" /><rect height="22" width="79.5" x="80" y="80"></rect><text x="119.75" y="95">strings</text></g></g><path d="M949.5 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M80 121h0" /><path d="M151.0 121h798.5" /><g class="terminal token">
<path d="M80 121h0" /><path d="M151.0 121h0.0" /><rect height="22" rx="10" ry="10" width="71" x="80" y="110"></rect><text x="115.5" y="125">'None'</text></g></g><path d="M949.5 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v100a10 10 0 0 0 10 10" /><g>
<path d="M80 151h0" /><path d="M151.0 151h798.5" /><g class="terminal token">
<path d="M80 151h0" /><path d="M151.0 151h0.0" /><rect height="22" rx="10" ry="10" width="71" x="80" y="140"></rect><text x="115.5" y="155">'True'</text></g></g><path d="M949.5 151a10 10 0 0 0 10 -10v-100a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v130a10 10 0 0 0 10 10" /><g>
<path d="M80 181h0" /><path d="M159.5 181h790.0" /><g class="terminal token">
<path d="M80 181h0" /><path d="M159.5 181h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="80" y="170"></rect><text x="119.75" y="185">'False'</text></g></g><path d="M949.5 181a10 10 0 0 0 10 -10v-130a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v160a10 10 0 0 0 10 10" /><g>
<path d="M80 211h0" /><path d="M287.0 211h662.5" /><g class="non-terminal ">
<path d="M80 211h0" /><path d="M287.0 211h0.0" /><rect height="22" width="207" x="80" y="200"></rect><text x="183.5" y="215">pattern_capture_target</text></g></g><path d="M949.5 211a10 10 0 0 0 10 -10v-160a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v190a10 10 0 0 0 10 10" /><g>
<path d="M80 241h0" /><path d="M236.0 241h713.5" /><g class="non-terminal ">
<path d="M80 241h0" /><path d="M236.0 241h0.0" /><rect height="22" width="156" x="80" y="230"></rect><text x="158" y="245">wildcard_pattern</text></g></g><path d="M949.5 241a10 10 0 0 0 10 -10v-190a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v220a10 10 0 0 0 10 10" /><g>
<path d="M80 271h0" /><path d="M134.0 271h815.5" /><g class="non-terminal ">
<path d="M80 271h0" /><path d="M134.0 271h0.0" /><rect height="22" width="54" x="80" y="260"></rect><text x="107" y="275">attr</text></g></g><path d="M949.5 271a10 10 0 0 0 10 -10v-220a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v250a10 10 0 0 0 10 10" /><g>
<path d="M80 301h0" /><path d="M256.5 301h693.0" /><g class="terminal token">
<path d="M80 301h0" /><path d="M108.5 301h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="290"></rect><text x="94.25" y="305">(</text></g><path d="M108.5 301h10" /><path d="M118.5 301h10" /><g class="non-terminal ">
<path d="M128.5 301h0" /><path d="M208.0 301h0.0" /><rect height="22" width="79.5" x="128.5" y="290"></rect><text x="168.25" y="305">pattern</text></g><path d="M208.0 301h10" /><path d="M218.0 301h10" /><g class="terminal token">
<path d="M228.0 301h0" /><path d="M256.5 301h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="228" y="290"></rect><text x="242.25" y="305">)</text></g></g><path d="M949.5 301a10 10 0 0 0 10 -10v-250a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v280a10 10 0 0 0 10 10" /><g>
<path d="M80 331h0" /><path d="M404.0 331h545.5" /><g class="terminal token">
<path d="M80 331h0" /><path d="M108.5 331h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="320"></rect><text x="94.25" y="335">[</text></g><path d="M108.5 331h10" /><g>
<path d="M118.5 331h0" /><path d="M365.5 331h0.0" /><path d="M118.5 331h20" /><g>
<path d="M138.5 331h0" /><path d="M345.5 331h0.0" /><g class="non-terminal ">
<path d="M138.5 331h0" /><path d="M345.5 331h0.0" /><rect height="22" width="207" x="138.5" y="320"></rect><text x="242" y="335">maybe_sequence_pattern</text></g></g><path d="M345.5 331h20" /><path d="M118.5 331a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M138.5 351h207.0" /></g><path d="M345.5 351a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M365.5 331h10" /><g class="terminal token">
<path d="M375.5 331h0" /><path d="M404.0 331h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="375.5" y="320"></rect><text x="389.75" y="335">]</text></g></g><path d="M949.5 331a10 10 0 0 0 10 -10v-280a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v319a10 10 0 0 0 10 10" /><g>
<path d="M80 370h0" /><path d="M395.5 370h554.0" /><g class="terminal token">
<path d="M80 370h0" /><path d="M108.5 370h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="359"></rect><text x="94.25" y="374">(</text></g><path d="M108.5 370h10" /><g>
<path d="M118.5 370h0" /><path d="M357.0 370h0.0" /><path d="M118.5 370h20" /><g>
<path d="M138.5 370h0" /><path d="M337.0 370h0.0" /><g class="non-terminal ">
<path d="M138.5 370h0" /><path d="M337.0 370h0.0" /><rect height="22" width="198.5" x="138.5" y="359"></rect><text x="237.75" y="374">open_sequence_pattern</text></g></g><path d="M337.0 370h20" /><path d="M118.5 370a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M138.5 390h198.5" /></g><path d="M337.0 390a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M357.0 370h10" /><g class="terminal token">
<path d="M367.0 370h0" /><path d="M395.5 370h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="367" y="359"></rect><text x="381.25" y="374">)</text></g></g><path d="M949.5 370a10 10 0 0 0 10 -10v-319a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v358a10 10 0 0 0 10 10" /><g>
<path d="M80 409h0" /><path d="M798.5 409h151.0" /><g class="terminal token">
<path d="M80 409h0" /><path d="M108.5 409h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="398"></rect><text x="94.25" y="413">{</text></g><path d="M108.5 409h10" /><g>
<path d="M118.5 409h0" /><path d="M760.0 409h0.0" /><path d="M118.5 409h20" /><g>
<path d="M138.5 409h601.5" /></g><path d="M740.0 409h20" /><path d="M118.5 409a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M138.5 429h0" /><path d="M740.0 429h0.0" /><g>
<path d="M138.5 429h0" /><path d="M671.5 429h0.0" /><path d="M138.5 429h20" /><g>
<path d="M158.5 429h0" /><path d="M651.5 429h0.0" /><g>
<path d="M158.5 429h0" /><path d="M377.5 429h0.0" /><path d="M158.5 429h20" /><g>
<path d="M178.5 429h179.0" /></g><path d="M357.5 429h20" /><path d="M158.5 429a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M178.5 449h0" /><path d="M357.5 449h0.0" /><g class="non-terminal ">
<path d="M178.5 449h0" /><path d="M309.0 449h0.0" /><rect height="22" width="130.5" x="178.5" y="438"></rect><text x="243.75" y="453">items_pattern</text></g><path d="M309.0 449h10" /><path d="M319.0 449h10" /><g class="terminal token">
<path d="M329.0 449h0" /><path d="M357.5 449h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="329" y="438"></rect><text x="343.25" y="453">,</text></g></g><path d="M357.5 449a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M377.5 429h10" /><g class="terminal token">
<path d="M387.5 429h0" /><path d="M424.5 429h0.0" /><rect height="22" rx="10" ry="10" width="37" x="387.5" y="418"></rect><text x="406" y="433">**</text></g><path d="M424.5 429h10" /><path d="M434.5 429h10" /><g class="non-terminal ">
<path d="M444.5 429h0" /><path d="M651.5 429h0.0" /><rect height="22" width="207" x="444.5" y="418"></rect><text x="548" y="433">pattern_capture_target</text></g></g><path d="M651.5 429h20" /><path d="M138.5 429a10 10 0 0 1 10 10v30a10 10 0 0 0 10 10" /><g>
<path d="M158.5 479h0" /><path d="M289.0 479h362.5" /><g class="non-terminal ">
<path d="M158.5 479h0" /><path d="M289.0 479h0.0" /><rect height="22" width="130.5" x="158.5" y="468"></rect><text x="223.75" y="483">items_pattern</text></g></g><path d="M651.5 479a10 10 0 0 0 10 -10v-30a10 10 0 0 1 10 -10" /></g><g>
<path d="M671.5 429h0" /><path d="M740.0 429h0.0" /><path d="M671.5 429h20" /><g>
<path d="M691.5 429h0" /><path d="M720.0 429h0.0" /><g class="terminal token">
<path d="M691.5 429h0" /><path d="M720.0 429h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="691.5" y="418"></rect><text x="705.75" y="433">,</text></g></g><path d="M720.0 429h20" /><path d="M671.5 429a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M691.5 449h28.5" /></g><path d="M720.0 449a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M740.0 429a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M760.0 409h10" /><g class="terminal token">
<path d="M770.0 409h0" /><path d="M798.5 409h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="770" y="398"></rect><text x="784.25" y="413">}</text></g></g><path d="M949.5 409a10 10 0 0 0 10 -10v-358a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v458a10 10 0 0 0 10 10" /><g>
<path d="M80 509h0" /><path d="M949.5 509h0.0" /><g class="non-terminal ">
<path d="M80 509h0" /><path d="M202.0 509h0.0" /><rect height="22" width="122" x="80" y="498"></rect><text x="141" y="513">name_or_attr</text></g><path d="M202.0 509h10" /><path d="M212.0 509h10" /><g class="terminal token">
<path d="M222.0 509h0" /><path d="M250.5 509h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="222" y="498"></rect><text x="236.25" y="513">(</text></g><path d="M250.5 509h10" /><g>
<path d="M260.5 509h0" /><path d="M911.0 509h0.0" /><path d="M260.5 509h20" /><g>
<path d="M280.5 509h610.5" /></g><path d="M891.0 509h20" /><path d="M260.5 509a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M280.5 529h0" /><path d="M891.0 529h0.0" /><g>
<path d="M280.5 529h0" /><path d="M822.5 529h0.0" /><path d="M280.5 529h20" /><g>
<path d="M300.5 529h0" /><path d="M482.0 529h320.5" /><g class="non-terminal ">
<path d="M300.5 529h0" /><path d="M482.0 529h0.0" /><rect height="22" width="181.5" x="300.5" y="518"></rect><text x="391.25" y="533">positional_patterns</text></g></g><path d="M802.5 529h20" /><path d="M280.5 529a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M300.5 559h0" /><path d="M802.5 559h0.0" /><g>
<path d="M300.5 559h0" /><path d="M570.5 559h0.0" /><path d="M300.5 559h20" /><g>
<path d="M320.5 559h230.0" /></g><path d="M550.5 559h20" /><path d="M300.5 559a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M320.5 579h0" /><path d="M550.5 579h0.0" /><g class="non-terminal ">
<path d="M320.5 579h0" /><path d="M502.0 579h0.0" /><rect height="22" width="181.5" x="320.5" y="568"></rect><text x="411.25" y="583">positional_patterns</text></g><path d="M502.0 579h10" /><path d="M512.0 579h10" /><g class="terminal token">
<path d="M522.0 579h0" /><path d="M550.5 579h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="522" y="568"></rect><text x="536.25" y="583">,</text></g></g><path d="M550.5 579a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M570.5 559h10" /><g>
<path d="M580.5 559h0" /><path d="M802.5 559h0.0" /><path d="M580.5 559h10" /><g>
<path d="M590.5 559h0" /><path d="M792.5 559h0.0" /><g class="non-terminal ">
<path d="M590.5 559h0" /><path d="M644.5 559h0.0" /><rect height="22" width="54" x="590.5" y="548"></rect><text x="617.5" y="563">NAME</text></g><path d="M644.5 559h10" /><path d="M654.5 559h10" /><g class="terminal token">
<path d="M664.5 559h0" /><path d="M693.0 559h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="664.5" y="548"></rect><text x="678.75" y="563">=</text></g><path d="M693.0 559h10" /><path d="M703.0 559h10" /><g class="non-terminal ">
<path d="M713.0 559h0" /><path d="M792.5 559h0.0" /><rect height="22" width="79.5" x="713" y="548"></rect><text x="752.75" y="563">pattern</text></g></g><path d="M792.5 559h10" /><path d="M590.5 559a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M590.5 589h0" /><path d="M619.0 589h173.5" /><rect height="22" rx="10" ry="10" width="28.5" x="590.5" y="578"></rect><text x="604.75" y="593">,</text></g><path d="M792.5 589a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g></g><path d="M802.5 559a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><g>
<path d="M822.5 529h0" /><path d="M891.0 529h0.0" /><path d="M822.5 529h20" /><g>
<path d="M842.5 529h0" /><path d="M871.0 529h0.0" /><g class="terminal token">
<path d="M842.5 529h0" /><path d="M871.0 529h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="842.5" y="518"></rect><text x="856.75" y="533">,</text></g></g><path d="M871.0 529h20" /><path d="M822.5 529a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M842.5 549h28.5" /></g><path d="M871.0 549a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M891.0 529a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M911.0 509h10" /><g class="terminal token">
<path d="M921.0 509h0" /><path d="M949.5 509h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="921" y="498"></rect><text x="935.25" y="513">)</text></g></g><path d="M949.5 509a10 10 0 0 0 10 -10v-458a10 10 0 0 1 10 -10" /></g><path d="M969.5 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v568a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M60 619h0" /><path d="M88.5 619h881.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="608"></rect><text x="74.25" y="623">|</text></g><path d="M969.5 619a10 10 0 0 0 10 -10v-568a10 10 0 0 0 -10 -10" /></g><path d="M979.5 31h10" /><g>
<path d="M989.5 31h0" /><path d="M1310.5 31h0.0" /><path d="M989.5 31h20" /><g>
<path d="M1009.5 31h0" /><path d="M1290.5 31h0.0" /><g class="terminal token">
<path d="M1009.5 31h0" /><path d="M1063.5 31h0.0" /><rect height="22" rx="10" ry="10" width="54" x="1009.5" y="20"></rect><text x="1036.5" y="35">'as'</text></g><path d="M1063.5 31h10" /><path d="M1073.5 31h10" /><g class="non-terminal ">
<path d="M1083.5 31h0" /><path d="M1290.5 31h0.0" /><rect height="22" width="207" x="1083.5" y="20"></rect><text x="1187" y="35">pattern_capture_target</text></g></g><path d="M1290.5 31h20" /><path d="M989.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M1009.5 51h281.0" /></g><path d="M1290.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M1310.5 31h10" /><path d="M 1320.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>complex_number</b>: signed_real_number '+' imaginary_number | signed_real_number '-' imaginary_number<br> <b>signed_real_number</b>: real_number | '-' real_number<br> <b>imaginary_number</b>: NUMBER<br> <b>real_number</b>: NUMBER</code></pre><div><div>Used in: pattern (1), items_pattern (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 409.0 92" width="409.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M359.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M118.5 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h28.5" /></g><path d="M98.5 31h20" /><path d="M50 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M70 51h0" /><path d="M98.5 51h0.0" /><g class="terminal token">
<path d="M70 51h0" /><path d="M98.5 51h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="70" y="40"></rect><text x="84.25" y="55">-</text></g></g><path d="M98.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M118.5 31h10" /><g class="non-terminal ">
<path d="M128.5 31h0" /><path d="M199.5 31h0.0" /><rect height="22" width="71" x="128.5" y="20"></rect><text x="164" y="35">NUMBER</text></g><path d="M199.5 31h10" /><g>
<path d="M209.5 31h0" /><path d="M278.0 31h0.0" /><path d="M209.5 31h20" /><g>
<path d="M229.5 31h0" /><path d="M258.0 31h0.0" /><g class="terminal token">
<path d="M229.5 31h0" /><path d="M258.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="229.5" y="20"></rect><text x="243.75" y="35">+</text></g></g><path d="M258.0 31h20" /><path d="M209.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M229.5 61h0" /><path d="M258.0 61h0.0" /><g class="terminal token">
<path d="M229.5 61h0" /><path d="M258.0 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="229.5" y="50"></rect><text x="243.75" y="65">-</text></g></g><path d="M258.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M278.0 31h10" /><g class="non-terminal ">
<path d="M288.0 31h0" /><path d="M359.0 31h0.0" /><rect height="22" width="71" x="288" y="20"></rect><text x="323.5" y="35">NUMBER</text></g></g><path d="M359.0 31h10" /><path d="M 369.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>signed_number</b>: NUMBER | '-' NUMBER</code></pre><div><div>Used in: pattern (1), items_pattern (1)</div><svg class="railroad-diagram" height="82" viewBox="0 0 249.5 82" width="249.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M199.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M118.5 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h28.5" /></g><path d="M98.5 31h20" /><path d="M50 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M70 51h0" /><path d="M98.5 51h0.0" /><g class="terminal token">
<path d="M70 51h0" /><path d="M98.5 51h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="70" y="40"></rect><text x="84.25" y="55">-</text></g></g><path d="M98.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M118.5 31h10" /><g class="non-terminal ">
<path d="M128.5 31h0" /><path d="M199.5 31h0.0" /><rect height="22" width="71" x="128.5" y="20"></rect><text x="164" y="35">NUMBER</text></g></g><path d="M199.5 31h10" /><path d="M 209.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>pattern_capture_target</b>: !"_" NAME !('.' | '(' | '=')</code></pre><div><div>Used in: pattern (3), maybe_star_pattern (1)</div><svg class="railroad-diagram" height="62" viewBox="0 0 154.0 62" width="154.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M104.0 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M104.0 31h0.0" /><rect height="22" width="54" x="50" y="20"></rect><text x="77" y="35">NAME</text></g></g><path d="M104.0 31h10" /><path d="M 114.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>wildcard_pattern</b>: "_"</code></pre><div><div>Used in: pattern (1), maybe_star_pattern (1)</div><svg class="railroad-diagram" height="62" viewBox="0 0 145.5 62" width="145.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M95.5 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M95.5 31h0.0" /><rect height="22" rx="10" ry="10" width="45.5" x="50" y="20"></rect><text x="72.75" y="35">"_"</text></g></g><path d="M95.5 31h10" /><path d="M 105.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>attr</b>: name_or_attr '.' NAME</code></pre><div><div>Used in: pattern (1), name_or_attr (1), items_pattern (1)</div><svg class="railroad-diagram" height="62" viewBox="0 0 344.5 62" width="344.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M294.5 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M172.0 31h0.0" /><rect height="22" width="122" x="50" y="20"></rect><text x="111" y="35">name_or_attr</text></g><path d="M172.0 31h10" /><path d="M182.0 31h10" /><g class="terminal token">
<path d="M192.0 31h0" /><path d="M220.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="192" y="20"></rect><text x="206.25" y="35">.</text></g><path d="M220.5 31h10" /><path d="M230.5 31h10" /><g class="non-terminal ">
<path d="M240.5 31h0" /><path d="M294.5 31h0.0" /><rect height="22" width="54" x="240.5" y="20"></rect><text x="267.5" y="35">NAME</text></g></g><path d="M294.5 31h10" /><path d="M 304.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>name_or_attr</b>: attr | NAME</code></pre><div><div>Used in: pattern (1), attr (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 174.0 92" width="174.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M134.0 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M114.0 31h0.0" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M114.0 31h0.0" /><rect height="22" width="54" x="60" y="20"></rect><text x="87" y="35">attr</text></g></g><path d="M114.0 31h20" /><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M60 61h0" /><path d="M114.0 61h0.0" /><g class="non-terminal ">
<path d="M60 61h0" /><path d="M114.0 61h0.0" /><rect height="22" width="54" x="60" y="50"></rect><text x="87" y="65">NAME</text></g></g><path d="M114.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M 134.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>open_sequence_pattern</b>: maybe_star_pattern ',' maybe_sequence_pattern?</code></pre><div><div>Used in: compound_stmt (1), pattern (1)</div><svg class="railroad-diagram" height="71" viewBox="0 0 578.5 71" width="578.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M528.5 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M223.0 31h0.0" /><rect height="22" width="173" x="50" y="20"></rect><text x="136.5" y="35">maybe_star_pattern</text></g><path d="M223.0 31h10" /><path d="M233.0 31h10" /><g class="terminal token">
<path d="M243.0 31h0" /><path d="M271.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="243" y="20"></rect><text x="257.25" y="35">,</text></g><path d="M271.5 31h10" /><g>
<path d="M281.5 31h0" /><path d="M528.5 31h0.0" /><path d="M281.5 31h20" /><g>
<path d="M301.5 31h0" /><path d="M508.5 31h0.0" /><g class="non-terminal ">
<path d="M301.5 31h0" /><path d="M508.5 31h0.0" /><rect height="22" width="207" x="301.5" y="20"></rect><text x="405" y="35">maybe_sequence_pattern</text></g></g><path d="M508.5 31h20" /><path d="M281.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M301.5 51h207.0" /></g><path d="M508.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M528.5 31h10" /><path d="M 538.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>maybe_sequence_pattern</b>: ','.maybe_star_pattern+ ','?</code></pre><div><div>Used in: pattern (1), open_sequence_pattern (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 371.5 92" width="371.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M321.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M243.0 31h0.0" /><path d="M50 31h10" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M233.0 31h0.0" /><rect height="22" width="173" x="60" y="20"></rect><text x="146.5" y="35">maybe_star_pattern</text></g><path d="M233.0 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M60 61h0" /><path d="M88.5 61h144.5" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="50"></rect><text x="74.25" y="65">,</text></g><path d="M233.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g><path d="M243.0 31h10" /><g>
<path d="M253.0 31h0" /><path d="M321.5 31h0.0" /><path d="M253.0 31h20" /><g>
<path d="M273.0 31h0" /><path d="M301.5 31h0.0" /><g class="terminal token">
<path d="M273.0 31h0" /><path d="M301.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="273" y="20"></rect><text x="287.25" y="35">,</text></g></g><path d="M301.5 31h20" /><path d="M253.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M273.0 51h28.5" /></g><path d="M301.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M321.5 31h10" /><path d="M 331.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>maybe_star_pattern</b>: star_pattern | pattern<br> <b>star_pattern</b>: '*' pattern_capture_target | '*' wildcard_pattern</code></pre><div><div>Used in: open_sequence_pattern (1), maybe_sequence_pattern (1)</div><svg class="railroad-diagram" height="122" viewBox="0 0 405.5 122" width="405.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M365.5 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M345.5 31h0.0" /><g class="terminal token">
<path d="M60 31h0" /><path d="M88.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="20"></rect><text x="74.25" y="35">*</text></g><path d="M88.5 31h10" /><g>
<path d="M98.5 31h0" /><path d="M345.5 31h0.0" /><path d="M98.5 31h20" /><g>
<path d="M118.5 31h0" /><path d="M325.5 31h0.0" /><g class="non-terminal ">
<path d="M118.5 31h0" /><path d="M325.5 31h0.0" /><rect height="22" width="207" x="118.5" y="20"></rect><text x="222" y="35">pattern_capture_target</text></g></g><path d="M325.5 31h20" /><path d="M98.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M118.5 61h0" /><path d="M274.5 61h51.0" /><g class="non-terminal ">
<path d="M118.5 61h0" /><path d="M274.5 61h0.0" /><rect height="22" width="156" x="118.5" y="50"></rect><text x="196.5" y="65">wildcard_pattern</text></g></g><path d="M325.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M345.5 31h20" /><path d="M40 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M60 91h0" /><path d="M139.5 91h206.0" /><g class="non-terminal ">
<path d="M60 91h0" /><path d="M139.5 91h0.0" /><rect height="22" width="79.5" x="60" y="80"></rect><text x="99.75" y="95">pattern</text></g></g><path d="M345.5 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /></g><path d="M 365.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>items_pattern</b>: ','.key_value_pattern+<br> <b>key_value_pattern</b>: (literal_expr | attr) ':' pattern<br> <b>literal_expr</b>: signed_number !('+' | '-') | complex_number | strings | 'None' | 'True' | 'False'</code></pre><div><div>Used in: pattern (2)</div><svg class="railroad-diagram" height="272" viewBox="0 0 437.0 272" width="437.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M387.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M387.0 31h0.0" /><path d="M50 31h10" /><g>
<path d="M60 31h0" /><path d="M377.0 31h0.0" /><g>
<path d="M60 31h0" /><path d="M239.0 31h0.0" /><path d="M60 31h20" /><g>
<path d="M80 31h0" /><path d="M210.5 31h8.5" /><g class="non-terminal ">
<path d="M80 31h0" /><path d="M210.5 31h0.0" /><rect height="22" width="130.5" x="80" y="20"></rect><text x="145.25" y="35">signed_number</text></g></g><path d="M219.0 31h20" /><path d="M60 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M80 61h0" /><path d="M219.0 61h0.0" /><g class="non-terminal ">
<path d="M80 61h0" /><path d="M219.0 61h0.0" /><rect height="22" width="139" x="80" y="50"></rect><text x="149.5" y="65">complex_number</text></g></g><path d="M219.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M80 91h0" /><path d="M159.5 91h59.5" /><g class="non-terminal ">
<path d="M80 91h0" /><path d="M159.5 91h0.0" /><rect height="22" width="79.5" x="80" y="80"></rect><text x="119.75" y="95">strings</text></g></g><path d="M219.0 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M80 121h0" /><path d="M151.0 121h68.0" /><g class="terminal token">
<path d="M80 121h0" /><path d="M151.0 121h0.0" /><rect height="22" rx="10" ry="10" width="71" x="80" y="110"></rect><text x="115.5" y="125">'None'</text></g></g><path d="M219.0 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v100a10 10 0 0 0 10 10" /><g>
<path d="M80 151h0" /><path d="M151.0 151h68.0" /><g class="terminal token">
<path d="M80 151h0" /><path d="M151.0 151h0.0" /><rect height="22" rx="10" ry="10" width="71" x="80" y="140"></rect><text x="115.5" y="155">'True'</text></g></g><path d="M219.0 151a10 10 0 0 0 10 -10v-100a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v130a10 10 0 0 0 10 10" /><g>
<path d="M80 181h0" /><path d="M159.5 181h59.5" /><g class="terminal token">
<path d="M80 181h0" /><path d="M159.5 181h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="80" y="170"></rect><text x="119.75" y="185">'False'</text></g></g><path d="M219.0 181a10 10 0 0 0 10 -10v-130a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v160a10 10 0 0 0 10 10" /><g>
<path d="M80 211h0" /><path d="M134.0 211h85.0" /><g class="non-terminal ">
<path d="M80 211h0" /><path d="M134.0 211h0.0" /><rect height="22" width="54" x="80" y="200"></rect><text x="107" y="215">attr</text></g></g><path d="M219.0 211a10 10 0 0 0 10 -10v-160a10 10 0 0 1 10 -10" /></g><path d="M239.0 31h10" /><g class="terminal token">
<path d="M249.0 31h0" /><path d="M277.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="249" y="20"></rect><text x="263.25" y="35">:</text></g><path d="M277.5 31h10" /><path d="M287.5 31h10" /><g class="non-terminal ">
<path d="M297.5 31h0" /><path d="M377.0 31h0.0" /><rect height="22" width="79.5" x="297.5" y="20"></rect><text x="337.25" y="35">pattern</text></g></g><path d="M377.0 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v190a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M60 241h0" /><path d="M88.5 241h288.5" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="230"></rect><text x="74.25" y="245">,</text></g><path d="M377.0 241a10 10 0 0 0 10 -10v-190a10 10 0 0 0 -10 -10" /></g></g><path d="M387.0 31h10" /><path d="M 397.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>positional_patterns</b>: ','.pattern+</code></pre><div><div>Used in: pattern (2)</div><svg class="railroad-diagram" height="92" viewBox="0 0 199.5 92" width="199.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M149.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M149.5 31h0.0" /><path d="M50 31h10" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M139.5 31h0.0" /><rect height="22" width="79.5" x="60" y="20"></rect><text x="99.75" y="35">pattern</text></g><path d="M139.5 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M60 61h0" /><path d="M88.5 61h51.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="50"></rect><text x="74.25" y="65">,</text></g><path d="M139.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g></g><path d="M149.5 31h10" /><path d="M 159.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>type_params</b>: '[' type_param_seq ']'<br> <b>type_param_seq</b>: ','.type_param+ ','?<br> <b>type_param</b>: NAME type_param_bound? | '*' NAME ':' expression | '*' NAME | '**' NAME ':' expression | '**' NAME<br> <b>type_param_bound</b>: ':' expression</code></pre><div><div>Used in: compound_stmt (2), simple_stmt (1)</div><svg class="railroad-diagram" height="142" viewBox="0 0 630.0 142" width="630.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M580.0 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M78.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="50" y="20"></rect><text x="64.25" y="35">[</text></g><path d="M78.5 31h10" /><path d="M88.5 31h10" /><g>
<path d="M98.5 31h0" /><path d="M463.0 31h0.0" /><path d="M98.5 31h10" /><g>
<path d="M108.5 31h0" /><path d="M453.0 31h0.0" /><g>
<path d="M108.5 31h0" /><path d="M185.5 31h0.0" /><path d="M108.5 31h20" /><g>
<path d="M128.5 31h37.0" /></g><path d="M165.5 31h20" /><path d="M108.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M128.5 51h0" /><path d="M157.0 51h8.5" /><g class="terminal token">
<path d="M128.5 51h0" /><path d="M157.0 51h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="128.5" y="40"></rect><text x="142.75" y="55">*</text></g></g><path d="M165.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /><path d="M108.5 31a10 10 0 0 1 10 10v30a10 10 0 0 0 10 10" /><g>
<path d="M128.5 81h0" /><path d="M165.5 81h0.0" /><g class="terminal token">
<path d="M128.5 81h0" /><path d="M165.5 81h0.0" /><rect height="22" rx="10" ry="10" width="37" x="128.5" y="70"></rect><text x="147" y="85">**</text></g></g><path d="M165.5 81a10 10 0 0 0 10 -10v-30a10 10 0 0 1 10 -10" /></g><path d="M185.5 31h10" /><g class="non-terminal ">
<path d="M195.5 31h0" /><path d="M249.5 31h0.0" /><rect height="22" width="54" x="195.5" y="20"></rect><text x="222.5" y="35">NAME</text></g><path d="M249.5 31h10" /><g>
<path d="M259.5 31h0" /><path d="M453.0 31h0.0" /><path d="M259.5 31h20" /><g>
<path d="M279.5 31h0" /><path d="M433.0 31h0.0" /><g class="terminal token">
<path d="M279.5 31h0" /><path d="M308.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="279.5" y="20"></rect><text x="293.75" y="35">:</text></g><path d="M308.0 31h10" /><path d="M318.0 31h10" /><g class="non-terminal ">
<path d="M328.0 31h0" /><path d="M433.0 31h0.0" /><rect height="22" width="105" x="328" y="20"></rect><text x="380.5" y="35">expression</text></g></g><path d="M433.0 31h20" /><path d="M259.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M279.5 51h153.5" /></g><path d="M433.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M453.0 31h10" /><path d="M108.5 31a10 10 0 0 0 -10 10v60a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M108.5 111h0" /><path d="M137.0 111h316.0" /><rect height="22" rx="10" ry="10" width="28.5" x="108.5" y="100"></rect><text x="122.75" y="115">,</text></g><path d="M453.0 111a10 10 0 0 0 10 -10v-60a10 10 0 0 0 -10 -10" /></g><path d="M463.0 31h10" /><g>
<path d="M473.0 31h0" /><path d="M541.5 31h0.0" /><path d="M473.0 31h20" /><g>
<path d="M493.0 31h0" /><path d="M521.5 31h0.0" /><g class="terminal token">
<path d="M493.0 31h0" /><path d="M521.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="493" y="20"></rect><text x="507.25" y="35">,</text></g></g><path d="M521.5 31h20" /><path d="M473.0 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M493.0 51h28.5" /></g><path d="M521.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M541.5 31h10" /><g class="terminal token">
<path d="M551.5 31h0" /><path d="M580.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="551.5" y="20"></rect><text x="565.75" y="35">]</text></g></g><path d="M580.0 31h10" /><path d="M 590.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>expression</b>: invalid_expression | invalid_legacy_expression | disjunction 'if' disjunction 'else' expression | disjunction | lambdef</code></pre><div><div>Used in: func_type (6), simple_stmt (6), compound_stmt (3), slices (3), eval (2), kvpair (2), param (1), default (1), with_item (1), type_params (1), expression (1), yield_expr (1), star_expression (1), assignment_expression (1), named_expression (1), lambdef (1), genexp (1), arguments (1), kwargs (1), starred_expression (1), kwarg_or_double_starred (1), expression_without_invalid (1)</div><svg class="railroad-diagram" height="101" viewBox="0 0 687.0 101" width="687.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M647.0 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M627.0 31h0.0" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M173.5 31h0.0" /><rect height="22" width="113.5" x="60" y="20"></rect><text x="116.75" y="35">disjunction</text></g><path d="M173.5 31h10" /><g>
<path d="M183.5 31h0" /><path d="M627.0 31h0.0" /><path d="M183.5 31h20" /><g>
<path d="M203.5 31h0" /><path d="M607.0 31h0.0" /><g class="terminal token">
<path d="M203.5 31h0" /><path d="M257.5 31h0.0" /><rect height="22" rx="10" ry="10" width="54" x="203.5" y="20"></rect><text x="230.5" y="35">'if'</text></g><path d="M257.5 31h10" /><path d="M267.5 31h10" /><g class="non-terminal ">
<path d="M277.5 31h0" /><path d="M391.0 31h0.0" /><rect height="22" width="113.5" x="277.5" y="20"></rect><text x="334.25" y="35">disjunction</text></g><path d="M391.0 31h10" /><path d="M401.0 31h10" /><g class="terminal token">
<path d="M411.0 31h0" /><path d="M482.0 31h0.0" /><rect height="22" rx="10" ry="10" width="71" x="411" y="20"></rect><text x="446.5" y="35">'else'</text></g><path d="M482.0 31h10" /><path d="M492.0 31h10" /><g class="non-terminal ">
<path d="M502.0 31h0" /><path d="M607.0 31h0.0" /><rect height="22" width="105" x="502" y="20"></rect><text x="554.5" y="35">expression</text></g></g><path d="M607.0 31h20" /><path d="M183.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M203.5 51h403.5" /></g><path d="M607.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M627.0 31h20" /><path d="M40 31a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M60 70h0" /><path d="M139.5 70h487.5" /><g class="non-terminal ">
<path d="M60 70h0" /><path d="M139.5 70h0.0" /><rect height="22" width="79.5" x="60" y="59"></rect><text x="99.75" y="74">lambdef</text></g></g><path d="M627.0 70a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /></g><path d="M 647.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>yield_expr</b>: 'yield' 'from' expression | 'yield' star_expressions?</code></pre><div><div>Used in: simple_stmt (3), atom (1), fstring_replacement_field (1)</div><svg class="railroad-diagram" height="100" viewBox="0 0 425.5 100" width="425.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M375.5 31h0.0" /><g class="terminal token">
<path d="M50 31h0" /><path d="M129.5 31h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="50" y="20"></rect><text x="89.75" y="35">'yield'</text></g><path d="M129.5 31h10" /><g>
<path d="M139.5 31h0" /><path d="M375.5 31h0.0" /><path d="M139.5 31h20" /><g>
<path d="M159.5 31h0" /><path d="M355.5 31h0.0" /><g class="terminal token">
<path d="M159.5 31h0" /><path d="M230.5 31h0.0" /><rect height="22" rx="10" ry="10" width="71" x="159.5" y="20"></rect><text x="195" y="35">'from'</text></g><path d="M230.5 31h10" /><path d="M240.5 31h10" /><g class="non-terminal ">
<path d="M250.5 31h0" /><path d="M355.5 31h0.0" /><rect height="22" width="105" x="250.5" y="20"></rect><text x="303" y="35">expression</text></g></g><path d="M355.5 31h20" /><path d="M139.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M159.5 61h0" /><path d="M315.5 61h40.0" /><g class="non-terminal ">
<path d="M159.5 61h0" /><path d="M315.5 61h0.0" /><rect height="22" width="156" x="159.5" y="50"></rect><text x="237.5" y="65">star_expressions</text></g></g><path d="M355.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M139.5 31a10 10 0 0 1 10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M159.5 80h196.0" /></g><path d="M355.5 80a10 10 0 0 0 10 -10v-29a10 10 0 0 1 10 -10" /></g></g><path d="M375.5 31h10" /><path d="M 385.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>star_expressions</b>: star_expression ((',' star_expression))+ ','? | star_expression ',' | star_expression</code></pre><div><div>Used in: simple_stmt (4), compound_stmt (1), yield_expr (1), fstring_replacement_field (1)</div><svg class="railroad-diagram" height="109" viewBox="0 0 592.0 109" width="592.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M542.0 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M197.5 31h0.0" /><rect height="22" width="147.5" x="50" y="20"></rect><text x="123.75" y="35">star_expression</text></g><path d="M197.5 31h10" /><g>
<path d="M207.5 31h0" /><path d="M542.0 31h0.0" /><path d="M207.5 31h20" /><g>
<path d="M227.5 31h0" /><path d="M522.0 31h0.0" /><g>
<path d="M227.5 31h0" /><path d="M443.5 31h0.0" /><path d="M227.5 31h10" /><g>
<path d="M237.5 31h0" /><path d="M433.5 31h0.0" /><g class="terminal token">
<path d="M237.5 31h0" /><path d="M266.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="237.5" y="20"></rect><text x="251.75" y="35">,</text></g><path d="M266.0 31h10" /><path d="M276.0 31h10" /><g class="non-terminal ">
<path d="M286.0 31h0" /><path d="M433.5 31h0.0" /><rect height="22" width="147.5" x="286" y="20"></rect><text x="359.75" y="35">star_expression</text></g></g><path d="M433.5 31h10" /><path d="M237.5 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M237.5 51h196.0" /></g><path d="M433.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g><path d="M443.5 31h10" /><g>
<path d="M453.5 31h0" /><path d="M522.0 31h0.0" /><path d="M453.5 31h20" /><g>
<path d="M473.5 31h0" /><path d="M502.0 31h0.0" /><g class="terminal token">
<path d="M473.5 31h0" /><path d="M502.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="473.5" y="20"></rect><text x="487.75" y="35">,</text></g></g><path d="M502.0 31h20" /><path d="M453.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M473.5 51h28.5" /></g><path d="M502.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M522.0 31h20" /><path d="M207.5 31a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10" /><g>
<path d="M227.5 70h0" /><path d="M256.0 70h266.0" /><g class="terminal token">
<path d="M227.5 70h0" /><path d="M256.0 70h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="227.5" y="59"></rect><text x="241.75" y="74">,</text></g></g><path d="M522.0 70a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10" /><path d="M207.5 31a10 10 0 0 1 10 10v38a10 10 0 0 0 10 10" /><g>
<path d="M227.5 89h294.5" /></g><path d="M522.0 89a10 10 0 0 0 10 -10v-38a10 10 0 0 1 10 -10" /></g></g><path d="M542.0 31h10" /><path d="M 552.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>star_expression</b>: '*' bitwise_or | expression</code></pre><div><div>Used in: star_expressions (2), star_etc (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 273.5 92" width="273.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M233.5 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M213.5 31h0.0" /><g class="terminal token">
<path d="M60 31h0" /><path d="M88.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="20"></rect><text x="74.25" y="35">*</text></g><path d="M88.5 31h10" /><path d="M98.5 31h10" /><g class="non-terminal ">
<path d="M108.5 31h0" /><path d="M213.5 31h0.0" /><rect height="22" width="105" x="108.5" y="20"></rect><text x="161" y="35">bitwise_or</text></g></g><path d="M213.5 31h20" /><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M60 61h0" /><path d="M165.0 61h48.5" /><g class="non-terminal ">
<path d="M60 61h0" /><path d="M165.0 61h0.0" /><rect height="22" width="105" x="60" y="50"></rect><text x="112.5" y="65">expression</text></g></g><path d="M213.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M 233.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>star_named_expressions</b>: ','.star_named_expression+ ','?</code></pre><div><div>Used in: atom (3), compound_stmt (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 397.0 92" width="397.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M347.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M268.5 31h0.0" /><path d="M50 31h10" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M258.5 31h0.0" /><rect height="22" width="198.5" x="60" y="20"></rect><text x="159.25" y="35">star_named_expression</text></g><path d="M258.5 31h10" /><path d="M60 31a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10" /><g class="terminal token">
<path d="M60 61h0" /><path d="M88.5 61h170.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="50"></rect><text x="74.25" y="65">,</text></g><path d="M258.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10" /></g><path d="M268.5 31h10" /><g>
<path d="M278.5 31h0" /><path d="M347.0 31h0.0" /><path d="M278.5 31h20" /><g>
<path d="M298.5 31h0" /><path d="M327.0 31h0.0" /><g class="terminal token">
<path d="M298.5 31h0" /><path d="M327.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="298.5" y="20"></rect><text x="312.75" y="35">,</text></g></g><path d="M327.0 31h20" /><path d="M278.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M298.5 51h28.5" /></g><path d="M327.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M347.0 31h10" /><path d="M 357.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>star_named_expression</b>: '*' bitwise_or | named_expression</code></pre><div><div>Used in: compound_stmt (1), star_named_expressions (1), atom (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 276.0 92" width="276.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M236.0 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M213.5 31h2.5" /><g class="terminal token">
<path d="M60 31h0" /><path d="M88.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="60" y="20"></rect><text x="74.25" y="35">*</text></g><path d="M88.5 31h10" /><path d="M98.5 31h10" /><g class="non-terminal ">
<path d="M108.5 31h0" /><path d="M213.5 31h0.0" /><rect height="22" width="105" x="108.5" y="20"></rect><text x="161" y="35">bitwise_or</text></g></g><path d="M216.0 31h20" /><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M60 61h0" /><path d="M216.0 61h0.0" /><g class="non-terminal ">
<path d="M60 61h0" /><path d="M216.0 61h0.0" /><rect height="22" width="156" x="60" y="50"></rect><text x="138" y="65">named_expression</text></g></g><path d="M216.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M 236.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>assignment_expression</b>: NAME ':=' ~ expression</code></pre><div><div>Used in: named_expression (1), genexp (1), arguments (1)</div><svg class="railroad-diagram" height="62" viewBox="0 0 336.0 62" width="336.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M286.0 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M104.0 31h0.0" /><rect height="22" width="54" x="50" y="20"></rect><text x="77" y="35">NAME</text></g><path d="M104.0 31h10" /><path d="M114.0 31h10" /><g class="terminal token">
<path d="M124.0 31h0" /><path d="M161.0 31h0.0" /><rect height="22" rx="10" ry="10" width="37" x="124" y="20"></rect><text x="142.5" y="35">:=</text></g><path d="M161.0 31h10" /><path d="M171.0 31h10" /><g class="non-terminal ">
<path d="M181.0 31h0" /><path d="M286.0 31h0.0" /><rect height="22" width="105" x="181" y="20"></rect><text x="233.5" y="35">expression</text></g></g><path d="M286.0 31h10" /><path d="M 296.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>named_expression</b>: assignment_expression | invalid_named_expression | expression !':='</code></pre><div><div>Used in: compound_stmt (4), atom (3), decorators (1), elif_stmt (1), star_named_expression (1), slices (1)</div><svg class="railroad-diagram" height="92" viewBox="0 0 318.5 92" width="318.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M278.5 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M258.5 31h0.0" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M258.5 31h0.0" /><rect height="22" width="198.5" x="60" y="20"></rect><text x="159.25" y="35">assignment_expression</text></g></g><path d="M258.5 31h20" /><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M60 61h0" /><path d="M165.0 61h93.5" /><g class="non-terminal ">
<path d="M60 61h0" /><path d="M165.0 61h0.0" /><rect height="22" width="105" x="60" y="50"></rect><text x="112.5" y="65">expression</text></g></g><path d="M258.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M 278.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>disjunction</b>: conjunction (('or' conjunction))+ | conjunction</code></pre><div><div>Used in: expression (2), for_if_clauses (2), expression_without_invalid (2)</div><svg class="railroad-diagram" height="79" viewBox="0 0 471.0 79" width="471.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M421.0 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M163.5 31h0.0" /><rect height="22" width="113.5" x="50" y="20"></rect><text x="106.75" y="35">conjunction</text></g><path d="M163.5 31h10" /><g>
<path d="M173.5 31h0" /><path d="M421.0 31h0.0" /><path d="M173.5 31h20" /><g>
<path d="M193.5 31h0" /><path d="M401.0 31h0.0" /><g>
<path d="M193.5 31h0" /><path d="M401.0 31h0.0" /><path d="M193.5 31h10" /><g>
<path d="M203.5 31h0" /><path d="M391.0 31h0.0" /><g class="terminal token">
<path d="M203.5 31h0" /><path d="M257.5 31h0.0" /><rect height="22" rx="10" ry="10" width="54" x="203.5" y="20"></rect><text x="230.5" y="35">'or'</text></g><path d="M257.5 31h10" /><path d="M267.5 31h10" /><g class="non-terminal ">
<path d="M277.5 31h0" /><path d="M391.0 31h0.0" /><rect height="22" width="113.5" x="277.5" y="20"></rect><text x="334.25" y="35">conjunction</text></g></g><path d="M391.0 31h10" /><path d="M203.5 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M203.5 51h187.5" /></g><path d="M391.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M401.0 31h20" /><path d="M173.5 31a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M193.5 59h207.5" /></g><path d="M401.0 59a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g></g><path d="M421.0 31h10" /><path d="M 431.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>conjunction</b>: inversion (('and' inversion))+ | inversion</code></pre><div><div>Used in: disjunction (2)</div><svg class="railroad-diagram" height="79" viewBox="0 0 445.5 79" width="445.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M395.5 31h0.0" /><g class="non-terminal ">
<path d="M50 31h0" /><path d="M146.5 31h0.0" /><rect height="22" width="96.5" x="50" y="20"></rect><text x="98.25" y="35">inversion</text></g><path d="M146.5 31h10" /><g>
<path d="M156.5 31h0" /><path d="M395.5 31h0.0" /><path d="M156.5 31h20" /><g>
<path d="M176.5 31h0" /><path d="M375.5 31h0.0" /><g>
<path d="M176.5 31h0" /><path d="M375.5 31h0.0" /><path d="M176.5 31h10" /><g>
<path d="M186.5 31h0" /><path d="M365.5 31h0.0" /><g class="terminal token">
<path d="M186.5 31h0" /><path d="M249.0 31h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="186.5" y="20"></rect><text x="217.75" y="35">'and'</text></g><path d="M249.0 31h10" /><path d="M259.0 31h10" /><g class="non-terminal ">
<path d="M269.0 31h0" /><path d="M365.5 31h0.0" /><rect height="22" width="96.5" x="269" y="20"></rect><text x="317.25" y="35">inversion</text></g></g><path d="M365.5 31h10" /><path d="M186.5 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M186.5 51h179.0" /></g><path d="M365.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10" /></g></g><path d="M375.5 31h20" /><path d="M156.5 31a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10" /><g>
<path d="M176.5 59h199.0" /></g><path d="M375.5 59a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10" /></g></g><path d="M395.5 31h10" /><path d="M 405.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>inversion</b>: 'not' inversion | comparison<br> <b>comparison</b>: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or<br> <b>compare_op_bitwise_or_pair</b>: eq_bitwise_or | noteq_bitwise_or | lte_bitwise_or | lt_bitwise_or | gte_bitwise_or | gt_bitwise_or | notin_bitwise_or | in_bitwise_or | isnot_bitwise_or | is_bitwise_or<br> <b>eq_bitwise_or</b>: '==' bitwise_or<br> <b>noteq_bitwise_or</b>: ('!=') bitwise_or<br> <b>lte_bitwise_or</b>: '<=' bitwise_or<br> <b>lt_bitwise_or</b>: '<' bitwise_or<br> <b>gte_bitwise_or</b>: '>=' bitwise_or<br> <b>gt_bitwise_or</b>: '>' bitwise_or<br> <b>notin_bitwise_or</b>: 'not' 'in' bitwise_or<br> <b>in_bitwise_or</b>: 'in' bitwise_or<br> <b>isnot_bitwise_or</b>: 'is' 'not' bitwise_or<br> <b>is_bitwise_or</b>: 'is' bitwise_or</code></pre><div><div>Used in: conjunction (2), inversion (1)</div><svg class="railroad-diagram" height="336" viewBox="0 0 616.5 336" width="616.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M576.5 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M239.0 31h317.5" /><g class="terminal token">
<path d="M60 31h0" /><path d="M122.5 31h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="60" y="20"></rect><text x="91.25" y="35">'not'</text></g><path d="M122.5 31h10" /><path d="M132.5 31h10" /><g class="non-terminal ">
<path d="M142.5 31h0" /><path d="M239.0 31h0.0" /><rect height="22" width="96.5" x="142.5" y="20"></rect><text x="190.75" y="35">inversion</text></g></g><path d="M556.5 31h20" /><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M60 61h0" /><path d="M556.5 61h0.0" /><g class="non-terminal ">
<path d="M60 61h0" /><path d="M165.0 61h0.0" /><rect height="22" width="105" x="60" y="50"></rect><text x="112.5" y="65">bitwise_or</text></g><path d="M165.0 61h10" /><g>
<path d="M175.0 61h0" /><path d="M556.5 61h0.0" /><path d="M175.0 61h20" /><g>
<path d="M195.0 61h0" /><path d="M536.5 61h0.0" /><g>
<path d="M195.0 61h0" /><path d="M536.5 61h0.0" /><path d="M195.0 61h10" /><g>
<path d="M205.0 61h0" /><path d="M526.5 61h0.0" /><g>
<path d="M205.0 61h0" /><path d="M411.5 61h0.0" /><path d="M205.0 61h20" /><g>
<path d="M225.0 61h0" /><path d="M262.0 61h129.5" /><g class="terminal token">
<path d="M225.0 61h0" /><path d="M262.0 61h0.0" /><rect height="22" rx="10" ry="10" width="37" x="225" y="50"></rect><text x="243.5" y="65">==</text></g></g><path d="M391.5 61h20" /><path d="M205.0 61a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M225.0 91h0" /><path d="M262.0 91h129.5" /><g class="terminal token">
<path d="M225.0 91h0" /><path d="M262.0 91h0.0" /><rect height="22" rx="10" ry="10" width="37" x="225" y="80"></rect><text x="243.5" y="95">!=</text></g></g><path d="M391.5 91a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M205.0 61a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M225.0 121h0" /><path d="M262.0 121h129.5" /><g class="terminal token">
<path d="M225.0 121h0" /><path d="M262.0 121h0.0" /><rect height="22" rx="10" ry="10" width="37" x="225" y="110"></rect><text x="243.5" y="125"><=</text></g></g><path d="M391.5 121a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /><path d="M205.0 61a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M225.0 151h0" /><path d="M253.5 151h138.0" /><g class="terminal token">
<path d="M225.0 151h0" /><path d="M253.5 151h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="225" y="140"></rect><text x="239.25" y="155"><</text></g></g><path d="M391.5 151a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /><path d="M205.0 61a10 10 0 0 1 10 10v100a10 10 0 0 0 10 10" /><g>
<path d="M225.0 181h0" /><path d="M262.0 181h129.5" /><g class="terminal token">
<path d="M225.0 181h0" /><path d="M262.0 181h0.0" /><rect height="22" rx="10" ry="10" width="37" x="225" y="170"></rect><text x="243.5" y="185">>=</text></g></g><path d="M391.5 181a10 10 0 0 0 10 -10v-100a10 10 0 0 1 10 -10" /><path d="M205.0 61a10 10 0 0 1 10 10v130a10 10 0 0 0 10 10" /><g>
<path d="M225.0 211h0" /><path d="M253.5 211h138.0" /><g class="terminal token">
<path d="M225.0 211h0" /><path d="M253.5 211h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="225" y="200"></rect><text x="239.25" y="215">></text></g></g><path d="M391.5 211a10 10 0 0 0 10 -10v-130a10 10 0 0 1 10 -10" /><path d="M205.0 61a10 10 0 0 1 10 10v160a10 10 0 0 0 10 10" /><g>
<path d="M225.0 241h0" /><path d="M391.5 241h0.0" /><g>
<path d="M225.0 241h0" /><path d="M327.5 241h0.0" /><path d="M225.0 241h20" /><g>
<path d="M245.0 241h0" /><path d="M307.5 241h0.0" /><g class="terminal token">
<path d="M245.0 241h0" /><path d="M307.5 241h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="245" y="230"></rect><text x="276.25" y="245">'not'</text></g></g><path d="M307.5 241h20" /><path d="M225.0 241a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M245.0 261h62.5" /></g><path d="M307.5 261a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M327.5 241h10" /><g class="terminal token">
<path d="M337.5 241h0" /><path d="M391.5 241h0.0" /><rect height="22" rx="10" ry="10" width="54" x="337.5" y="230"></rect><text x="364.5" y="245">'in'</text></g></g><path d="M391.5 241a10 10 0 0 0 10 -10v-160a10 10 0 0 1 10 -10" /><path d="M205.0 61a10 10 0 0 1 10 10v199a10 10 0 0 0 10 10" /><g>
<path d="M225.0 280h0" /><path d="M391.5 280h0.0" /><g class="terminal token">
<path d="M225.0 280h0" /><path d="M279.0 280h0.0" /><rect height="22" rx="10" ry="10" width="54" x="225" y="269"></rect><text x="252" y="284">'is'</text></g><path d="M279.0 280h10" /><g>
<path d="M289.0 280h0" /><path d="M391.5 280h0.0" /><path d="M289.0 280h20" /><g>
<path d="M309.0 280h0" /><path d="M371.5 280h0.0" /><g class="terminal token">
<path d="M309.0 280h0" /><path d="M371.5 280h0.0" /><rect height="22" rx="10" ry="10" width="62.5" x="309" y="269"></rect><text x="340.25" y="284">'not'</text></g></g><path d="M371.5 280h20" /><path d="M289.0 280a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M309.0 300h62.5" /></g><path d="M371.5 300a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M391.5 280a10 10 0 0 0 10 -10v-199a10 10 0 0 1 10 -10" /></g><path d="M411.5 61h10" /><g class="non-terminal ">
<path d="M421.5 61h0" /><path d="M526.5 61h0.0" /><rect height="22" width="105" x="421.5" y="50"></rect><text x="474" y="65">bitwise_or</text></g></g><path d="M526.5 61h10" /><path d="M205.0 61a10 10 0 0 0 -10 10v227a10 10 0 0 0 10 10" /><g>
<path d="M205.0 308h321.5" /></g><path d="M526.5 308a10 10 0 0 0 10 -10v-227a10 10 0 0 0 -10 -10" /></g></g><path d="M536.5 61h20" /><path d="M175.0 61a10 10 0 0 1 10 10v235a10 10 0 0 0 10 10" /><g>
<path d="M195.0 316h341.5" /></g><path d="M536.5 316a10 10 0 0 0 10 -10v-235a10 10 0 0 1 10 -10" /></g></g><path d="M556.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g><path d="M 576.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>bitwise_or</b>: bitwise_or '|' bitwise_xor | bitwise_xor</code></pre><div><div>Used in: inversion (2), star_expression (1), star_named_expression (1), bitwise_or (1), atom (1)</div><svg class="railroad-diagram" height="71" viewBox="0 0 417.0 71" width="417.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M367.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M243.5 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M223.5 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M175.0 31h0.0" /><rect height="22" width="105" x="70" y="20"></rect><text x="122.5" y="35">bitwise_or</text></g><path d="M175.0 31h10" /><path d="M185.0 31h10" /><g class="terminal token">
<path d="M195.0 31h0" /><path d="M223.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="195" y="20"></rect><text x="209.25" y="35">|</text></g></g><path d="M223.5 31h20" /><path d="M50 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M70 51h153.5" /></g><path d="M223.5 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M243.5 31h10" /><g class="non-terminal ">
<path d="M253.5 31h0" /><path d="M367.0 31h0.0" /><rect height="22" width="113.5" x="253.5" y="20"></rect><text x="310.25" y="35">bitwise_xor</text></g></g><path d="M367.0 31h10" /><path d="M 377.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>bitwise_xor</b>: bitwise_xor '^' bitwise_and | bitwise_and</code></pre><div><div>Used in: bitwise_or (1), bitwise_xor (1)</div><svg class="railroad-diagram" height="71" viewBox="0 0 425.5 71" width="425.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M375.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M252.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M232.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M183.5 31h0.0" /><rect height="22" width="113.5" x="70" y="20"></rect><text x="126.75" y="35">bitwise_xor</text></g><path d="M183.5 31h10" /><path d="M193.5 31h10" /><g class="terminal token">
<path d="M203.5 31h0" /><path d="M232.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="203.5" y="20"></rect><text x="217.75" y="35">^</text></g></g><path d="M232.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M70 51h162.0" /></g><path d="M232.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M252.0 31h10" /><g class="non-terminal ">
<path d="M262.0 31h0" /><path d="M375.5 31h0.0" /><rect height="22" width="113.5" x="262" y="20"></rect><text x="318.75" y="35">bitwise_and</text></g></g><path d="M375.5 31h10" /><path d="M 385.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>bitwise_and</b>: bitwise_and '&' shift_expr | shift_expr</code></pre><div><div>Used in: bitwise_xor (1), bitwise_and (1)</div><svg class="railroad-diagram" height="71" viewBox="0 0 417.0 71" width="417.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M367.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M252.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M232.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M183.5 31h0.0" /><rect height="22" width="113.5" x="70" y="20"></rect><text x="126.75" y="35">bitwise_and</text></g><path d="M183.5 31h10" /><path d="M193.5 31h10" /><g class="terminal token">
<path d="M203.5 31h0" /><path d="M232.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="203.5" y="20"></rect><text x="217.75" y="35">&</text></g></g><path d="M232.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M70 51h162.0" /></g><path d="M232.0 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M252.0 31h10" /><g class="non-terminal ">
<path d="M262.0 31h0" /><path d="M367.0 31h0.0" /><rect height="22" width="105" x="262" y="20"></rect><text x="314.5" y="35">shift_expr</text></g></g><path d="M367.0 31h10" /><path d="M 377.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>shift_expr</b>: shift_expr '<<' sum | shift_expr '>>' sum | sum</code></pre><div><div>Used in: bitwise_and (1), shift_expr (1)</div><svg class="railroad-diagram" height="100" viewBox="0 0 387.5 100" width="387.5">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M337.5 31h0.0" /><g>
<path d="M50 31h0" /><path d="M282.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M262.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M175.0 31h0.0" /><rect height="22" width="105" x="70" y="20"></rect><text x="122.5" y="35">shift_expr</text></g><path d="M175.0 31h10" /><g>
<path d="M185.0 31h0" /><path d="M262.0 31h0.0" /><path d="M185.0 31h20" /><g>
<path d="M205.0 31h0" /><path d="M242.0 31h0.0" /><g class="terminal token">
<path d="M205.0 31h0" /><path d="M242.0 31h0.0" /><rect height="22" rx="10" ry="10" width="37" x="205" y="20"></rect><text x="223.5" y="35"><<</text></g></g><path d="M242.0 31h20" /><path d="M185.0 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M205.0 61h0" /><path d="M242.0 61h0.0" /><g class="terminal token">
<path d="M205.0 61h0" /><path d="M242.0 61h0.0" /><rect height="22" rx="10" ry="10" width="37" x="205" y="50"></rect><text x="223.5" y="65">>></text></g></g><path d="M242.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M262.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M70 80h192.0" /></g><path d="M262.0 80a10 10 0 0 0 10 -10v-29a10 10 0 0 1 10 -10" /></g><path d="M282.0 31h10" /><g class="non-terminal ">
<path d="M292.0 31h0" /><path d="M337.5 31h0.0" /><rect height="22" width="45.5" x="292" y="20"></rect><text x="314.75" y="35">sum</text></g></g><path d="M337.5 31h10" /><path d="M 347.5 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>sum</b>: sum '+' term | sum '-' term | term</code></pre><div><div>Used in: shift_expr (1), sum (1)</div><svg class="railroad-diagram" height="100" viewBox="0 0 328.0 100" width="328.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M278.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M214.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M194.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M115.5 31h0.0" /><rect height="22" width="45.5" x="70" y="20"></rect><text x="92.75" y="35">sum</text></g><path d="M115.5 31h10" /><g>
<path d="M125.5 31h0" /><path d="M194.0 31h0.0" /><path d="M125.5 31h20" /><g>
<path d="M145.5 31h0" /><path d="M174.0 31h0.0" /><g class="terminal token">
<path d="M145.5 31h0" /><path d="M174.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="145.5" y="20"></rect><text x="159.75" y="35">+</text></g></g><path d="M174.0 31h20" /><path d="M125.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M145.5 61h0" /><path d="M174.0 61h0.0" /><g class="terminal token">
<path d="M145.5 61h0" /><path d="M174.0 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="145.5" y="50"></rect><text x="159.75" y="65">-</text></g></g><path d="M174.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /></g></g><path d="M194.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v29a10 10 0 0 0 10 10" /><g>
<path d="M70 80h124.0" /></g><path d="M194.0 80a10 10 0 0 0 10 -10v-29a10 10 0 0 1 10 -10" /></g><path d="M214.0 31h10" /><g class="non-terminal ">
<path d="M224.0 31h0" /><path d="M278.0 31h0.0" /><rect height="22" width="54" x="224" y="20"></rect><text x="251" y="35">term</text></g></g><path d="M278.0 31h10" /><path d="M 288.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>term</b>: term '*' factor | term '/' factor | term '//' factor | term '%' factor | term '@' factor | factor</code></pre><div><div>Used in: sum (1), term (1)</div><svg class="railroad-diagram" height="190" viewBox="0 0 362.0 190" width="362.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><path d="M40 31h10" /><g>
<path d="M50 31h0" /><path d="M312.0 31h0.0" /><g>
<path d="M50 31h0" /><path d="M231.0 31h0.0" /><path d="M50 31h20" /><g>
<path d="M70 31h0" /><path d="M211.0 31h0.0" /><g class="non-terminal ">
<path d="M70 31h0" /><path d="M124.0 31h0.0" /><rect height="22" width="54" x="70" y="20"></rect><text x="97" y="35">term</text></g><path d="M124.0 31h10" /><g>
<path d="M134.0 31h0" /><path d="M211.0 31h0.0" /><path d="M134.0 31h20" /><g>
<path d="M154.0 31h0" /><path d="M182.5 31h8.5" /><g class="terminal token">
<path d="M154.0 31h0" /><path d="M182.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="154" y="20"></rect><text x="168.25" y="35">*</text></g></g><path d="M191.0 31h20" /><path d="M134.0 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M154.0 61h0" /><path d="M182.5 61h8.5" /><g class="terminal token">
<path d="M154.0 61h0" /><path d="M182.5 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="154" y="50"></rect><text x="168.25" y="65">/</text></g></g><path d="M191.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M134.0 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M154.0 91h0" /><path d="M191.0 91h0.0" /><g class="terminal token">
<path d="M154.0 91h0" /><path d="M191.0 91h0.0" /><rect height="22" rx="10" ry="10" width="37" x="154" y="80"></rect><text x="172.5" y="95">//</text></g></g><path d="M191.0 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /><path d="M134.0 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M154.0 121h0" /><path d="M182.5 121h8.5" /><g class="terminal token">
<path d="M154.0 121h0" /><path d="M182.5 121h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="154" y="110"></rect><text x="168.25" y="125">%</text></g></g><path d="M191.0 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /><path d="M134.0 31a10 10 0 0 1 10 10v100a10 10 0 0 0 10 10" /><g>
<path d="M154.0 151h0" /><path d="M182.5 151h8.5" /><g class="terminal token">
<path d="M154.0 151h0" /><path d="M182.5 151h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="154" y="140"></rect><text x="168.25" y="155">@</text></g></g><path d="M191.0 151a10 10 0 0 0 10 -10v-100a10 10 0 0 1 10 -10" /></g></g><path d="M211.0 31h20" /><path d="M50 31a10 10 0 0 1 10 10v119a10 10 0 0 0 10 10" /><g>
<path d="M70 170h141.0" /></g><path d="M211.0 170a10 10 0 0 0 10 -10v-119a10 10 0 0 1 10 -10" /></g><path d="M231.0 31h10" /><g class="non-terminal ">
<path d="M241.0 31h0" /><path d="M312.0 31h0.0" /><rect height="22" width="71" x="241" y="20"></rect><text x="276.5" y="35">factor</text></g></g><path d="M312.0 31h10" /><path d="M 322.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>factor</b>: '+' factor | '-' factor | '~' factor | power<br> <b>power</b>: await_primary '**' factor | await_primary<br> <b>await_primary</b>: 'await' primary | primary</code></pre><div><div>Used in: factor (2), term (1)</div><svg class="railroad-diagram" height="161" viewBox="0 0 507.0 161" width="507.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M467.0 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M209.5 31h237.5" /><g>
<path d="M60 31h0" /><path d="M128.5 31h0.0" /><path d="M60 31h20" /><g>
<path d="M80 31h0" /><path d="M108.5 31h0.0" /><g class="terminal token">
<path d="M80 31h0" /><path d="M108.5 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="20"></rect><text x="94.25" y="35">+</text></g></g><path d="M108.5 31h20" /><path d="M60 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M80 61h0" /><path d="M108.5 61h0.0" /><g class="terminal token">
<path d="M80 61h0" /><path d="M108.5 61h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="50"></rect><text x="94.25" y="65">-</text></g></g><path d="M108.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M60 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M80 91h0" /><path d="M108.5 91h0.0" /><g class="terminal token">
<path d="M80 91h0" /><path d="M108.5 91h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="80" y="80"></rect><text x="94.25" y="95">~</text></g></g><path d="M108.5 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /></g><path d="M128.5 31h10" /><g class="non-terminal ">
<path d="M138.5 31h0" /><path d="M209.5 31h0.0" /><rect height="22" width="71" x="138.5" y="20"></rect><text x="174" y="35">factor</text></g></g><path d="M447.0 31h20" /><path d="M40 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10" /><g>
<path d="M60 121h0" /><path d="M447.0 121h0.0" /><g>
<path d="M60 121h0" /><path d="M179.5 121h0.0" /><path d="M60 121h20" /><g>
<path d="M80 121h0" /><path d="M159.5 121h0.0" /><g class="terminal token">
<path d="M80 121h0" /><path d="M159.5 121h0.0" /><rect height="22" rx="10" ry="10" width="79.5" x="80" y="110"></rect><text x="119.75" y="125">'await'</text></g></g><path d="M159.5 121h20" /><path d="M60 121a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M80 141h79.5" /></g><path d="M159.5 141a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M179.5 121h10" /><g class="non-terminal ">
<path d="M189.5 121h0" /><path d="M269.0 121h0.0" /><rect height="22" width="79.5" x="189.5" y="110"></rect><text x="229.25" y="125">primary</text></g><path d="M269.0 121h10" /><g>
<path d="M279.0 121h0" /><path d="M447.0 121h0.0" /><path d="M279.0 121h20" /><g>
<path d="M299.0 121h0" /><path d="M427.0 121h0.0" /><g class="terminal token">
<path d="M299.0 121h0" /><path d="M336.0 121h0.0" /><rect height="22" rx="10" ry="10" width="37" x="299" y="110"></rect><text x="317.5" y="125">**</text></g><path d="M336.0 121h10" /><path d="M346.0 121h10" /><g class="non-terminal ">
<path d="M356.0 121h0" /><path d="M427.0 121h0.0" /><rect height="22" width="71" x="356" y="110"></rect><text x="391.5" y="125">factor</text></g></g><path d="M427.0 121h20" /><path d="M279.0 121a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M299.0 141h128.0" /></g><path d="M427.0 141a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g></g><path d="M447.0 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10" /></g><path d="M 467.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg><div><pre><code><b>primary</b>: primary '.' NAME | primary genexp | primary '(' arguments? ')' | primary '[' slices ']' | atom</code></pre><div><div>Used in: factor (1), primary (1)</div><svg class="railroad-diagram" height="191" viewBox="0 0 463.0 191" width="463.0">
<g transform="translate(.5 .5)">
<g>
<path d="M20 21v20m10 -20v20m-10 -10h20" /></g><g>
<path d="M40 31h0" /><path d="M423.0 31h0.0" /><path d="M40 31h20" /><g>
<path d="M60 31h0" /><path d="M403.0 31h0.0" /><g class="non-terminal ">
<path d="M60 31h0" /><path d="M139.5 31h0.0" /><rect height="22" width="79.5" x="60" y="20"></rect><text x="99.75" y="35">primary</text></g><path d="M139.5 31h10" /><g>
<path d="M149.5 31h0" /><path d="M403.0 31h0.0" /><path d="M149.5 31h20" /><g>
<path d="M169.5 31h0" /><path d="M272.0 31h111.0" /><g class="terminal token">
<path d="M169.5 31h0" /><path d="M198.0 31h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="169.5" y="20"></rect><text x="183.75" y="35">.</text></g><path d="M198.0 31h10" /><path d="M208.0 31h10" /><g class="non-terminal ">
<path d="M218.0 31h0" /><path d="M272.0 31h0.0" /><rect height="22" width="54" x="218" y="20"></rect><text x="245" y="35">NAME</text></g></g><path d="M383.0 31h20" /><path d="M149.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10" /><g>
<path d="M169.5 61h0" /><path d="M240.5 61h142.5" /><g class="non-terminal ">
<path d="M169.5 61h0" /><path d="M240.5 61h0.0" /><rect height="22" width="71" x="169.5" y="50"></rect><text x="205" y="65">genexp</text></g></g><path d="M383.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10" /><path d="M149.5 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10" /><g>
<path d="M169.5 91h0" /><path d="M383.0 91h0.0" /><g class="terminal token">
<path d="M169.5 91h0" /><path d="M198.0 91h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="169.5" y="80"></rect><text x="183.75" y="95">(</text></g><path d="M198.0 91h10" /><g>
<path d="M208.0 91h0" /><path d="M344.5 91h0.0" /><path d="M208.0 91h20" /><g>
<path d="M228.0 91h0" /><path d="M324.5 91h0.0" /><g class="non-terminal ">
<path d="M228.0 91h0" /><path d="M324.5 91h0.0" /><rect height="22" width="96.5" x="228" y="80"></rect><text x="276.25" y="95">arguments</text></g></g><path d="M324.5 91h20" /><path d="M208.0 91a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10" /><g>
<path d="M228.0 111h96.5" /></g><path d="M324.5 111a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10" /></g><path d="M344.5 91h10" /><g class="terminal token">
<path d="M354.5 91h0" /><path d="M383.0 91h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="354.5" y="80"></rect><text x="368.75" y="95">)</text></g></g><path d="M383.0 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10" /><path d="M149.5 31a10 10 0 0 1 10 10v79a10 10 0 0 0 10 10" /><g>
<path d="M169.5 130h0" /><path d="M337.5 130h45.5" /><g class="terminal token">
<path d="M169.5 130h0" /><path d="M198.0 130h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="169.5" y="119"></rect><text x="183.75" y="134">[</text></g><path d="M198.0 130h10" /><path d="M208.0 130h10" /><g class="non-terminal ">
<path d="M218.0 130h0" /><path d="M289.0 130h0.0" /><rect height="22" width="71" x="218" y="119"></rect><text x="253.5" y="134">slices</text></g><path d="M289.0 130h10" /><path d="M299.0 130h10" /><g class="terminal token">
<path d="M309.0 130h0" /><path d="M337.5 130h0.0" /><rect height="22" rx="10" ry="10" width="28.5" x="309" y="119"></rect><text x="323.25" y="134">]</text></g></g><path d="M383.0 130a10 10 0 0 0 10 -10v-79a10 10 0 0 1 10 -10" /></g></g><path d="M403.0 31h20" /><path d="M40 31a10 10 0 0 1 10 10v109a10 10 0 0 0 10 10" /><g>
<path d="M60 160h0" /><path d="M114.0 160h289.0" /><g class="non-terminal ">
<path d="M60 160h0" /><path d="M114.0 160h0.0" /><rect height="22" width="54" x="60" y="149"></rect><text x="87" y="164">atom</text></g></g><path d="M403.0 160a10 10 0 0 0 10 -10v-109a10 10 0 0 1 10 -10" /></g><path d="M 423.0 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg>
... and so on (ran into HackMD size limit)