The shell


A running shell of the Logix system receives a stream of Requests and a stream of Ground Goals from its controlling computation which it combines and transforms into Commands to create and control sub-computations and its controlling computation. The Command streams are transformed by user_macros and system_macros into internal directives for the sub-computations which are interpreted and forwarded as a stream of Commands to the shell's controlling computation.

shell input process

The Ground Goals are edited, compiled and merged with Requests. The merged Commands are passed to a user_macros processes (series) which expands them and returns the expanded Commands for further processing by system_macros.

user_macros series

The shell selects a user_macros process from the current directory, or some earlier (containing) directory; when the current directory does not contain a user_macros, the nearest earlier user_macros is preferred. A user_macros process performs appropriate transformations and forwards the expanded Commands to the nearest earlier user_macros process for further processing. The series of user_macros processes ends in the user_macros process in the system directory which passes them as segments of a difference list back to the shell's system_macros process. This behavior is encouraged by arranging the standard sub-computations in nested directories – system, logix (Logix_Users), spifcp (SpiFcp_Users), biospi (BioSpi_Users) – and by arranging the access address of the user's home page as a sub-directory of the directory named at system startup (e.g. system#Logix_Users#SpiFcp_Users#Bill#circadian).

Common macros

Each user_macros process may expand a macro whose functor agrees with its own name (e.g.s logix, biospi) by processing the argument of the macro as a Command (see also system_macros forward(Command)). A Command which is not recognized by a user_macros process is passed verbatim to the next user_macros process in the series.

All of the Commands which are recognised by later user_macros processes in the series are common to earlier processes which do not recognise them. Similarly, any user_macros process can override later processes (including system_macros), by recognising (and transforming) their macros. That method is often used to enhance <Service>#<Process> Commands when additional initialization is required.

A list of Logix_Users macros is here.


This document is licensed under Gnu General Public License - Version 3

http://www.nongnu.org/efcp/gnu-gpl3.html