|
Mini Component Pascal is a series of four languages that represent increasingly complex
extended subsets of Component Pascal. Each language definition consists of abstract syntax,
formal type rules, and additional prose descriptions of the type system. Two compilers,
targetting the .NET CLR, have been developed that collectively support all four of these
languages.
The pseudo-Venn diagram above illustrates the interrelationships between the Mini Component
Pascal languages and full Component Pascal, represented by the transparent oval.
Evolution and Goals of Mini Component Pascal
The goal of the Mini Component Pascal series of languages is to present a sequence of
'snapshots' of a language at various stages in its development. We have chosen to define
increments at the stages in this process where substantial new features are added.
The foundations of the series of languages are established in
Functional Mini Component Pascal (FMCP). FMCP takes an
'ultra-minimalist' approach and models only a few language features. (It is also not
a proper subset of Component Pascal). Its purposes are to introduce important concepts
that are used in the subsequent languages, and to serve as a possible basis for further
formalisation work where the modeling of imperative constructs is not important.
The next language in the series is Imperative Mini Component Pascal (IMCP).
IMCP models a substantial proper subset of Component Pascal and removes many restrictions imposed
by FMCP.
Interfaces are a non-trivial extension to the official Component Pascal specification and
are modelled in Imperative Mini Component Pascal with Interfaces (IMCPI).
The lack of support for defining and implementing interfaces can be seen as a major deficiency
of the original Component Pascal specification (although they are unofficially supported by the
GPCP compiler). The purposes of IMCPI are to solidify the semantics of the extension, and to
provide a basis for the generics extension.
The final and most complex language in the series is Imperative Mini Component
Pascal with Generics (IMCPG). IMCPG builds on IMCPI to add support for type parameterisation
(i.e. parametric polymorphism).
|