In the section on Functions, we presented a driver program as a helper to the editor, supplying keys to carry out complicated editing task and saving the user from work. An alternative perspective sees
ivi as a helper to a driver program.
In an earlier version of the project, we made use of two versions of the
- an alphanumeric version which runs inside a terminal window and provides the layout facilities we have seen; this is called by the command
- a standalone version which communicates directly with processes either from the command line or in a graphical user interface; for historical reasons, it is called
As is often the case in life, the shape of tools helps to define their functions. So, we typically use
ivi as an editing environment to write grammars, edit dictionaries, and so on. In conjunction with the
vinci commands we will see below, the result is an integrated development environment to allow linguists to build and test grammars.
On the other hand, we use
xvivi to 'talk' to web pages, notably in the VinciLingua environment. In a nutshell, the process works like this:
- some external process, like the PHP inside a webpage, using some 'glue' language like GNU Expect, starts up
xviviis asked to load a grammar using a PRocedure, to generate some output, and to EMit the result
- in the simplest case, this is handed back to the calling environment and
- in a more complicated case,
xviviis started within a multiplexing environment like GNU Screen, which allows sessions to be detached and reattached.
xivigenerates a question, like in the previous case, and hands the result to a webpage where it is seen by a learner, but then suspends itself waiting for the learner's response, produced by typing, clicking or performing some other operation on the webpage. This response is then handed back to
xviviwhich performs an error analysis (see above) and hands the result back to the webpage. This is the essence of the VinciLingua environment.