This was surprisingly easy from a parsing standpoint and surprisingly difficult to restructure execution to get useful parse errors. E.g., with ignorebraces, current-shell constructs must be written with a final semicolon or newline separator like { ... ;} but if anything follows the closing brace the parse error will be reported in that following part rather than where you want it at the point of the missing separator. I think (hope?) that this is the last bit of the nofork stuff, at least until a complete rewrite of the tempfile hack, and I will commit and push it in the next couple of days if no one finds anything broken or objectionable. Opinions on whether I should squash the patches and make one commit vs. exposing the sausage-making by doing each of the seven patches separately? (I would list all the X-Seq numbers in the changelog either way.)