Numbered Disambiguation Choices (strikes) again (2025)

Sorry for the delay in getting back to this. I looked into this a couple of days back and I found out that I did botch up the 6M62 version of the extension quite badly there! You’re spot on @otistdog. The issue was indeed the off by one of num_lines.

This is due to the way Parser Replacement is implemented. It’s not a complete copy of the parser function. It includes some minor adjustments to the original code.

One of them is that these lines

num_lines = (syntax->0) - 1
for (line=0 : line<=num_lines : line++)

Are replaced with these lines

num_lines = (syntax->0)
for (line=0 : line<num_lines : line++)

Now this works perfectly fine when both of these are replaced, which is why the Inform 10 version doesn’t’ve this issue. However, the 6M62 version modifies Parser Letter D but not Parser Letter E, so I unwittingly ended up with an off by one error. Cue major chaos!

So, apologies to @severedhand and @otistdog for the massive botch up on my part there! I’ve now fixed up the extensions I now no longer modifies Parser Letter D as I managed to do what I needed to do without it, so it no longer needs Parser Replacement now. Here are the updated versions.

(Old buggy version of extensions. Now removed. See below for latest version.)

The top one is for Inform 10 and the bottom one is for Inform 6M62.

Incidentally, as someone who’s interested in the inner workings of the parser, Parser Replacement might be of interest to you. I’m interested in ideas and suggestions as to what other parts of the parser function would be handy to include as a separate function and also what other I6 functions could do with the same treatment, like NounDomain for example.