XE(ID:2744/xe:001)Expert Systems CLUVariant on CLU for embedded Expert Systems, part of the ExBed project Helsinki University of Technology Evolution away from the embedding of XC in C++ and incorporating extra features designed to output LISP code for ExBed Related languages
References: Background The XE language [Arkk89] and its programming environment have been developed within the ExBed project, which was established to develop software tools for construction of embedded expert systems. The project needed a general purpose programming language with added facilities for rule-based programming. High level abstraction mechanisms and the possibility for efficient static semantic analysis were considered crucial for the language. The main reason for this was the wish to perform as much verification and optimization as possible at compile time to satisfy the stringent requirements of embedded systems. There existed no programming language that satisfied our needs and therefore we decided to design a new programming language. Our first result, XC [Nuut87], was based on C++ [Stro86], and it was implemented using preprosessor techniques. We found out that the C++ approach had several major drawbacks [Arkk88]. Also the preprocessor techniques could not give enough support for building a satisfactory programming environment. The CLU language, designed and implemented at MIT [Lisk81], was close to our needs. So, we selected CLU as a basis for the design of XE. Because of the licence policies of CLU and our need for an integrated software development environment we decided to write a proper compiler for the language, not a preprocessor for CLU. We found out that the built-in library of CLU did not fit our needs and that the rule-based expression mechanism of our choice required very basic new facilities. Therefore XE was not designed as a direct extension of CLU. The structure of this paper is as follows. Chapter 2 describes the rule abstraction of XE and some language constructs closely related to it. In chapter 3 we discuss the parameterization (generic modules). The type system and built-in types are described in chapter 4. There exists quite a number of other differences between CLU and XE. Some of these features are discussed in chapter 5. The reader is assumed to be familiar with the CLU language. in SIGPLAN Notices 24(09) September 1989 view details |