FunLog++ - History - Cooperation - Frontend - Interpreter - Semantic List - Target Code
FunLog++ Interpreter
compiler + executer

This document is helpful for people who want to implement a new FunLog++ code generator or who want to maintain the original FunLog++ system software. This document might be helpful to some minor extent for system programmers who want to integrate the FunLog++ interpreter into a new environment or who want to understand the architecture of the FunLog++ interpreter.

The FunLog++ interpreter was developed as part of the Pro.M.D. system. It cooperates with a frontend program for user interaction and a SQL database system in order to store permanent results.
 
 
interpreter

 
compiler
syntactic analyser
syntax tree
semantic analyser
semantic list
code generator

 

code file

 
executer
deductor  (reads SQL)
result list
effector   (writes SQL)

 

The FunLog++ interpreter consists of two main parts:



FunLog++ compiler

The FunLog++-compiler serves two alternative functions, generating target language code and generating source file listings.
 

Generating target language code

This compiler function needs three consecutive steps:

The source file may be of one of three different types: The target file may be of one of three different types: Generating source file listings

The FunLog++ compiler can output source listing files for the three different types of input:

In future syntactic analysis and listing output will be enhanced in order to also read and write HTML/XML files.



The FunLog++ compiler is called as a side effect of the root(FILE) message if there is no appropriate code file accessible for FILE. This is true for the main message like fun.exe MainMessage as well as for root/1 messages in FunLog++ source files, e.g. or

FunLog++ executer

The FunLog++ executer consists of two consecutive subprograms, the deductor and the effector:


FunLog++ deductor

The FunLog++ deductor typically consists of three main parts:

The deductor may have no side effects. But its result usually is a list of read and write commands which determines which data objects should be stored in which file or database or should be displayed in which window.
 

FunLog++ effector

The FunLog++-effector is not yet implemented. In future its task will be to execute those list of store- and display commands which was returned as the result from the deductor. The effector is responsible for correct multiuser access and transaction control.

The effector has to be run immediately after the deductor. Additionally to the list of store- and display commands the effector receives the list of all external read access from the deductor in order to re-check the proper input-output relation before results are stored.

The overall task of the executer is then to be performed in usually steps:

  1. Call the FunLog++ deductor and obtain the read-list and the write-list
  2. Lock all locations and check-read all data from the deductor's read list and write list.
  3. If check-read differs from primary-read then unlock all locations of the read- and write-list and repeat from step 1.
  4. If check-read is identical to primary-read then store all result text in the wanted locations and unlock all.
  5. Executer is ready.
FunLog++ - History - Cooperation - Frontend - Interpreter - Semantic List - Target Code
Last modification: B. Pohl 14.October 1998 / 24.Oktober 2000