Thanks for the clarification :)<p>(And sorry for not having replied earlier, i seems HN doesn&#x27;t notify about replies any more.)<p>The point i was trying to make was mostly about the difficulty of <i>understanding</i> the syntax (i.e. &quot;parsing&quot; for humans), not so much about syntax ambiguity or having to use a more sophisticated parsing strategy. The comments on the code represent the &quot;rules&quot; that a human might follow to try and make sense of that syntax. They are not as simple as they could be had Ruby only allows blocks to be denoted with do&#x2F;end.<p>However, about the complexity on the parser itself, doesn&#x27;t this case of block syntax need at least some dedicated logic to take care of ´foo {}´ not parsing the {} part as a hash literal expression but rather as a block? (e.g., maybe adding some explicit priories to the parser rules, or making the lexer add hidden parentheses so that the parser sees ´foo() {}´ and doesn&#x27;t have to make that distinction).