Upcoming additions to the Inform 6 compiler

Well, here’s a rough draft. Comments welcome, as I’m sure there will be plenty of changes to make.
inform6-debug-file-format-version-1-draft.txt (7.71 KB)

@linearsearch-ing for something between < and > won’t work if you use attributes. You only use them here in the root element, but since you use them at least once, maybe call that out as a message to later additions?

(Er, and distinguish we’re talking about XML attributes, not I6 attributes, which are totally different.)

I think I’ll be okay on that front because left angle brackets aren’t allowed in XML attributes; see the AttValue production in the XML grammar. But I guess right angle brackets are, which I didn’t know.

Edit to add: Actually, because the extensions will scan the angle brackets in order, and CDATA sections start with angle brackets, there’s no reason to disallow CDATA sections; they can be dealt with the same way as comments.

A couple comments on the draft:

  • Are Glulx variables referenced by index or offset within the local frame? (Is it still legal to have different sized locals and/or gaps in the local frame?)
  • Presumably “column” means “character”, without regard to tabs, and counting wide UTF8 characters as one column
  • Might want to support different variable mappings in different regions of a routine, in case a cleverer compiler than Inform uses the same space for more than one variable

I was planning on index, since the end of Section 1.3.1 of the Glulx spec reads:

Yes, I will fix that and clarify.

Also a good point. I will add that.