IQ Command Examples


Wiki Pages (this site)

Be sure to read section 5 on "DOCUMENT Mark-Ups" on the Home page.

As the first User Interface is the Command Line, we are going to use it, in Windows its called "Command Prompt"
Download the IQ.zip file and Unpack the file with an archive program (i.e.7-zip)

The Command Prompt should be this:
C:\IQ>

Entering "bin\iq" will run IQ and output some help.
C:\IQ> bin\iq

Now enter the following (or copy/paste.)

This will list the keys in the knmvic.iq file (the Example document.)
It may look like a "table of content," but shows "unique keys" only. Keys may be being used elsewhere as well.
In the following command line the two "." are space-separated. The "." is a pattern matching wildcards and matches everything. So one in the "word" and one in "sub" positions.
C:\IQ> bin\iq -k knmvic.iq . .

From the above we can see what is marked up as a "word-indicator or word-key" and "sub-indicator or key" and with this enter the word "The" and sub "7" (Note Case Sensitivity.)
C:\IQ> bin\iq knmvic.iq The 7

In the above, we see the contents of the matching "word-key" and "subkey" were output but we also see the content of the empty "sub-indicator" was also output.
As mentioned, there are some rules making the "markups", the "indicators" versatile.
When IQ processes a file it reads the file one line at a time, top to bottom, and if it finds a "word-key" it checks to see if it matches the word given on the command line, and if it matches then its content is output but only as far as the "subkey(s)" match that the subkeys content is also output.

The RULES:
- An empty "word-indicator" or "sub-indicator" mark up will pass its content if the markup is reached.
- When a "word-indicator or key" or "sub-indicator or key" markup is reached. the previous indicator or key markup content ends.
- Typically "subs" are within the content of a "word", but they do not have to be.
- "sub" cannot be within a "sub" as "subs" are equal, nor are "words" within "words" as they are equal.
- "words are never within "subs" as "words" are the first level, "subs" are the second level inward.
- For "subs" within a "word" to be reached, the "word" has to match its command line value.
- For "subs" to output, they must match their command line values
- The third mark up "filename-indicator or key" can be placed anywhere, and if reached then the processing continues into that file.
- Reaching a "filename-indicator or key" markup does NOT end the contents of the previous markup reached.

So what all do we Know now?
C:\IQ> bin\iq knmvic.iq Know .

And what Knowledge and Mapping do we Know now? Applying constraints!
C:\IQ> bin\iq knmvic.iq Know Kno Map

Let's take a look at what keys are in another file that is a dictionary of user-accessible functionality for an application.
Note: this document file is for an application on the Amiga Computer platform. A platform which has a standard side door port for applications and other functionality. The Amiga platform has all three Primary User Interfaces. Unfortunately, that platform was suppressed from the mass market. However, the Amiga platform proves all three Interfaces are possible in a user-friendly manner. Fortunately, there is the AROS Open Source Software project.
C:\IQ> bin\iq -k thor-arexx.iq . .

In the above we can see there are "subkeys" but we don't see which "word-keys" have these. We can check.
C:\IQ> bin\iq -k thor-arexx.iq STARTEDITOR .

Assuming all you want of this definition is the "Example subkey" content.
C:\IQ> bin\iq thor-arexx.iq STARTEDITOR EXAMPLE

But as you see we get more than just the content we want, so we apply the "-s" command line option (see: help output above.)
C:\IQ> bin\iq -s thor-arexx.iq STARTEDITOR EXAMPLE

And there it is, just the content of what is found in this application dictionary at the "word key" STARTEDITOR and "subkey" of EXAMPLE.
Now, this seems like a lot of work just to get a piece of "code" and many will argue there are other tools much easier to do the same thing, and there are. However, there is another command line option "-e" making it possible to run the example (if the example is compatible on your computer setup. i.e. application(s) needed for the example to run and available.) More important, this is only just one of the Action Constants. Worth noting is the IQ command does contain the "essence" of the others and as such, its useful for developing an initial understanding of the Action Constants. And together, there is a lot the Action Constants can do to allow the user to create their own automatons that can be simple or quite complex.

Imagine if executing the contents of a definition it ran the same command line that got to it. You'd have a loop running.

In the IQ directory there is a file with the name "lnswitch.off" but if you rename it to "lnswitch.on" and run any of the examples it will output its processing too, that you can see how it works.
To turn lnswitch on:
C:\IQ> rename lnswitch.off lnswitch.on
To turn lnswitch off:
C:\IQ> rename lnswitch.on lnswitch.off

Try the following with the lnswitch.off and lnswitch.on (don't forget the two wildcards "."):
C:\IQ> bin\iq test.iq . .


Copyright (C) 2014, 2017 Timothy Rue
This work is licensed under the Creative Commons Attribution 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/