New Parser, anybody?

I am close to the end of my first game, Milliways, which I created using the new parser version of ZIL (used only by the v6 Infocom games - but mine is v5) instead of the ZILF files.

The main reason I did this is because the new-parser allows for a MOBY system (EVERYWHERE works, as in you can do ASK [person] ABOUT [any object in the game] - and not have to have the second object directly visible). However, this also uses a more complex system, where changing things throughout the core files (even deeper into the parser file, if you need to do so) is easy, and you also have a QuestionVERBS (as seen in ShĹŤgun: stuff like I AM THE WALRUS and DOES THE GOVERNMENT TRY TO TAKE MONEY FROM ME? {I know: cool, right?}).

Plus, I would try and create it so you can switch easily from ZILF to NP (you still use zilf but it’s just which one it was made by) - to avoid high amounts of errors if you get them.

The only thing is: I don’t know if it’s worth the time. Not only would I need to make the code fully usable (I’d start with Z0 files and modify those) and clean it up, which takes a long time: I would need to also create documentation for it, which you would definitely need. I could build on top of the Steve Meretzky doc, if you want…

So, I need to know: if I made it, would you use it?

  • Nah, I’m okay
  • No, but I could do with a new documentation
  • Yes. Create a separate documentation file
  • Yes, and use Steve Meretzky’s doc
0 voters
2 Likes

Documentation of the New Parser would be very helpful…

4 Likes

documenting the undocumented is always the right thing to do. So I concur with Henrik.

Best regards from Italy,
dott. Piergiorgio.

3 Likes

I have experimented with Zilf several times. New documentation would be very helpful. Thank you.

2 Likes

Seems like I’ll be documenting it! I first need to make a vanilla version of the Z0 files, then I’ll get onto it.

2 Likes

Alright. I got the Zork Zero code, and squished out all bugs. It’s clean, but right now there are only a few differences between the two versions: and the most obvious one is now a useful EVERYWHERE syntax marker. (I haven’t had much time recently, also with fixing bugs in my own game.) That’s already quite good personally because it just adds that extra nice touch, but there are important things to come in the future - namely, a full working documentation and QVERBS. (Sorry, guys, pictures will wait because that is absolute HELL. :smiling_imp:)

The GitHub link is below, you will need to do a lot of editing to fit your game but you can essentially download the files, remove.the verb, syntax and place files then replace them with your own - stopping to update game.zil and any others you want to. (Look at the README.md first because it is very important .) Later I’ll update the thread with edited files, which you can swap out.

GitHub:

Google Document:
https://docs.google.com/document/d/1WZQtZD3NL-rolsUcvPgBZztLP2UorGRgClwndNptYRI/edit?usp=drivesdk

Please keep watching this thread because I will be updating it!

4 Likes

I’ve added an appendix (appendix D) to the work in progress, Zilf Reference Guide, about the Infocom vocabulary, verbs and syntax tables. There is also some bits and pieces about things I’ve learned about the “new parser”. A Google doc link, or a PDF: ZILF Reference Guide_230919.pdf (839.3 KB).

I’m happy for suggestions of improvements and clarifications or corrections where I’m wrong.

Some outstanding questions:

  1. This is regarding the FIND-byte in the syntax definitions: <MSETG SYN-FIND-NEGATE *200*> ; "If set, try something with this bit off" & <MSETG SYN-FIND-PROP *400*> ;"If set, look for this property" (in find.zil and basedefs.mud). This seeems to suggest that bit 6 and bit 7 controls if the FIND should be done in a negative way or on a property instead of an attribute-flag. None of the current released games use this and I can’t find any syntax for using it in the SYNTAX definition in Zilf. Was this for real but never implemented or used?

  2. Also from basedefs.mud, regarding the actions table as I understand it: ; "An action below 128 is a shift; above 128 is a reduction (subtract 129 to get the (0-based) offset in the reduction table). 128 is done.". Any idea how this is supposed to work?

4 Likes

Regarding this:
Some fixes have been made so now three nouns in the base file should, like, ACTUALLY work, though I will need somebody to test it and also just try it. I haven’t updated it yet, so watch out. (That means it’s NOT PUBLIC YET!)

(Regarding images and QVERBS, they will be years off. Images, well… you can guess, plus is there a way to fix the width and height of the window in ZIL? It doesn’t seem to allow that. QVERBS has some qualms about some parts of the code that allow questions and statements, though I am enabling three nouns, so that’s good, right?)

2 Likes