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 ivi
editor:
- an alphanumeric version which runs inside a terminal window and provides the layout facilities we have seen; this is called by the command
ivi
- 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
xvivi
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
xvivi
xvivi
is 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
xvivi
turns itself off. We use this, for example, to produce generative web pages, where learner manipulations are based on JavaScript within the page, and new examples are called as desired. This enables us to surpass typical learning environments by creating new questions on the fly. - in a more complicated case,
xvivi
is started within a multiplexing environment like GNU Screen, which allows sessions to be detached and reattached.xivi
generates 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 toxvivi
which performs an error analysis (see above) and hands the result back to the webpage. This is the essence of the VinciLingua environment.