Python-devs,<br><br>I&#39;m writing to you for some help in understanding the
Python grammar.  As an excuse to deep dive into Python&#39;s tokenizer /
grammar, I decided (as a hideous, hideous joke) to want to allow braces where
colons are allowed (as flow control).  <br>
<br>Starting from PEP 306 (and branch r311), I hacked on Grammar/Grammer<br><br>As a first example:<br><br>funcdef: (&#39;def&#39; NAME parameters [&#39;-&gt;&#39; test] &#39;:&#39; suite |<br>          &#39;def&#39; NAME parameters [&#39;-&gt;&#39; test] &#39;{&#39; suite &#39;}&#39; )<br>
<br>
I reran Parser/pgen and the dfa changes, but python (3.1) when recompiled, throws errors on things like:<br><br>def a() { None }<br><br>Strangely enough:<br><br>lambdef: ( &#39;lambda&#39; [varargslist] &#39;:&#39; test  | <br>

               &#39;lambda&#39; [varargslist] &#39;{&#39; test &#39;}&#39; )<br><br>works fine!  I this simplely some difference between &quot;test&quot; and &quot;suite&quot;.  <br><br>I have tried tackling this with gdb, looking at err_input clearly isn&#39;t enough.<br>
<br>    (gdb) break err_input<br>    (gdb) break PyParser_ASTFromString<br>    import sys<br>    b = compile(&quot;def a() {pass}&quot;,&quot;sys.stdout&quot;,&quot;single&quot;)<br>    # yet a simple grammar fix is enough for this!<br>
    c = compile(&quot;lambda x {None}&quot;,&quot;sys.stdout&quot;,&quot;single&quot;)<br><br>I&#39;m in over my head!<br><br>Any insights / help would be appreciated.  Full-on flaming is also appropriate, but would be less appreciated.<br>
<br>Specific questions<br><br>1.)  I assume the Grammar/grammar is read top to bottom.  Confirm?<br>2.)  More help figuring out how to debug what python *thinks* it&#39;s seeing when it see &quot;def a() {pass}&quot;.  It&#39;s not getting to the ast construction stage, as near as I can tell.  What additional breakpoints can I set to see where it&#39;s failing.  <br>
<br>Gregg L.<br><br>