I6: double at-sign escapes versus single at-sign with curlys

While brushing up my rendition of Uninvited, particularly the ABOUT information, I noticed that expressing an at-sign didn’t work entirely as I intended. There are two email addresses I give out: davidgriffith@acm.org. So in the ABOUT info, I wrote this: print “… dave@@64661.org … davidgriffith@@64acm.org…”;. The Inform6 compiler appears to be “greedy” in that once this double-at ZSCII escape is triggered, it keeps parsing more digits until it gets to a non-digit. On pages 29 and 30 of the DM4 are details about this sort of escaping. On page 30 are examples of specifying a Unicode glyph like this: @{1234}. I quickly discovered that I could generate an at-sign next to digits by specifying the ASCII code for an at-sign: @{40}. This works because 0x00 to 0x7F in Unicode is the ASCII character set (0x00 to 0xFF is LATIN-1).

My questions: is there any way to restrict Inform6 from being “greedy” with regard to processing ZSCII escapes? If I specify an at-sign by using the @{1234}, will I risk weird behavior when trying to run my game on terps running on, say, something using PETSCII? There seems to be problems when I compile a test game to Glulx while using these escapes. More to come later.

Upon closer examination, I think I’ve identified a bug in the Inform6 compiler’s Glulx-generation code. Trying to print @{40} works compiling to Z-machine, but when compiling to Glulx, I get compiler errors. No such errors seem to occur when putting any other number in the curly-brackets.

I’ve filed a bug report on the Glulx problem at inform7.com/mantis/view.php?id=1933