Part 3: The Three-Noun Problem (ZIL details)
You’ve been warned!
This part gets really ZIL-y, so only if you want to know random stuff about ZIL or just for mindless fun should you read this.
Before I begin: ALL of the below (besides the phenomenal help I got from @AndyG with some stack things in moving from V6 to V5) is purely from tinkering around and making the vaguest logical links I can comprehend. Oh, and a lot of crashing Frotz and nearly my computer.
To start with, I should probably explain the transition to new parser (used in the latest 4 of Infocom’s games, started with Zork Zero). The differences between new parser and not is basically a much more complex source code with more access over doing complex stuff. Also, the new parser already has an EVERYWHERE
syntax parameter built in, so I can do things like ASK [someone] ABOUT [anything]
. I can also attempt more ambitious stuff.
Now here, I built on the new-parser allowance of the grammar files (verb noun preposition noun
(PUT FOOD ON TABLE), also person, do something
and others). And then, after months of editing in a vanilla file (stripped of anything that can be associated with a single game), I managed to get three nouns to be accepted - at least in the ZIL code, that is. I still couldn’t compile it because the ZILF compiler was core coded to only work with two, as syntax definitions appear to be grounded in ZILF, not ZIL.
So. Then came a week or two where I toyed around with the C# which ZILF uses, and came out triumphant, and realising that Tara McGrew knows much more about the new parser than she had let on, but still with no sources of information on what was what.
Who can count how long later, I finished fully. It was exhilarating! I had done three nouns. With only a side effect regarding the fact that now technically ZILF won’t stop me doing something like JUMP OVER OBJECT ON OBJECT WITH OBJECT TO OBJECT IF OBJECT HAS OBJECT IN OBJECT
, but then playing it it will start acting weird.
Thanks to all those who helped me along the way, be it testers or otherwise. You are above and beyond the best