Skip to main content

Posts

ISHML: API for Parser IF (JavaScript)

Version 1 of ISHML has been released! ISHML stands for Interactive Story grapH Management Library, but call it “Ishmael.” Its intent is to facilitate the creation of interactive fiction in JavaScript and is intended for client-side applications running in modern browsers. The ISHML library is a fluent API with straightforwardly named properties and methods, many of which are chainable. Eventually, ISHML will address all aspects of creating interactive fiction. For now, though, ISHML is just a really flexible and powerful recursive descent parser with backtracking, which is capable of returning multiple interpretations of a given input text. In ISHML, you create a parser by defining a grammar. A grammar is a set of nested rules that describes the syntax tree to be generated during parsing. The structure of the grammar mirrors the structure of the syntax tree. Rules are, in spirit, a JavaScript adaptation of BNF notation. There are many, many ways to configure the rules. If y
Recent posts

NLP Resources

This is a list of resources I am using to learn about natural language processing related to the ISHML project.. Infocom Parser:  http://ifwiki.org/index.php/Infocom-type_parser How to understand natural language processing in 81 easy lectures Glossary of terms:  https://glossary.sil.org/term/grammatical-category Break down of noun phrases: https://linguapress.com/grammar/noun-phrases.htm More on noun phrases:  https://learnenglish.britishcouncil.org/en/english-grammar/noun-phrase Adpositions:  https://en.wikipedia.org/wiki/Preposition_and_postposition#Terminology Adpositions can be used to express a wide range of  semantic  relations between their complement and the rest of the context. The relations expressed may be spatial (denoting location or direction), temporal (denoting position in time), or relations expressing comparison, content, agent, instrument, means, manner, cause, purpose, reference, etc. https://en.wikipedia.org/wiki/Phrasal_verb ...a  phrasal verb  is a p

ISHML Update for June 2018

I'm up to 400 lines of code and very happy with how things are shaping up. I'm a slow coder, but I've got a highly flexible parser now that is completely configurable by the story's author.  If you know how to diagram a sentence, you know how to configure the parser.  I'm now working on speeding up lexeme matching using prefix trees.  They seem like magic. Regarding the acronym, ISHML, I'm only luke warm on the H standing for Hypertext.  While it's accurate, Interactive Story Hypertext Modeling Language doesn't exactly flow.  I'm thinking now that the H stands for Hierarchy, because it really is about modeling the hierarchy of the story elements.

Don't Call Me ISML

Well, it appears that the ISML acronym is already a bit overloaded:  https://acronyms.thefreedictionary.com/ISML .  That's OK. I'll just change it to ISHML, which stands for Interactive Story Hypertext Modeling Language.  You can still call it "Ishmael," though. This is actually more descriptive of what this language is turning out to be: some custom HTML elements that when combined with the ISHML story engine creates an Interactive Fiction experience in you web browser.

On Modeling Languages

Well, I was spending a lot of time wondering how far I could stretch the definition of  modeling language.  It turns out the definition is very stretchy. I was worried that a graphically oriented interface for ISML would cause it to cease to be a modeling language.  Turns out I was wrong. Quoting from Wikipedia :  A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules... A modeling language can be graphical or textual. ISML fits the definition well.  I'm going to stop worrying about my initialism and get back to work.

ISML Still Vaporware

ISML is still very much vaporware.  I've been going down many blind alleys during the brainstorming phase.  I've been throwing away lots of clumsy design concepts.  What remains, though, seems solid and interesting.  I'm not ready to publish these ideas at this time, but I will say that it's starting to look like the 'L' in ISML may stand for Lab rather than Language.

Project ISML

I've started a new project that I'm quite excited about.  I don't have much to show right now, but I hope to have something interesting in about six months.  In the meantime, here's the vision statement for the project: ISML stands for Interactive Story Modeling Language, but you can call it "Ishmael." It is an authoring system for creating interactive web content including Interactive Fiction (IF) aka text adventure games, Choose Your Own Adventure (CYOA) style hypertext stories, quizzes, chat-bots, hidden object games, spelling bees, tile games, or any other multi-media interactive experience you can imagine. The ISML modeling language makes intuitive sense to authors. You can be successful with ISML even if you have no programming skills. Stumbling blocks such as nested logic, loops, recursion, case-sensitivity, pointers, and variable scope are de-emphasized or non-existent. Where these concepts do exist, the language presents them in a way that is nat