This article was downloaded by: [University of Toronto Libraries]On: 31 October 2014, At: 16:56Publisher: Taylor & FrancisInforma Ltd Registered in England and Wales Registered Number: 1072954 Registered office: Mortimer House,37-41 Mortimer Street, London W1T 3JH, UK
International Journal of Computer MathematicsPublication details, including instructions for authors and subscription information:http://www.tandfonline.com/loi/gcom20
AEPL: An extensible programming languageJacob Katzenelson a & Elie Milgrom aa Technion- Israel Institute of Technology , Haifa, IsraelPublished online: 21 Dec 2010.
To cite this article: Jacob Katzenelson & Elie Milgrom (1975) AEPL: An extensible programming language , InternationalJournal of Computer Mathematics, 5:1-4, 3-35, DOI: 10.1080/00207167508803100
To link to this article: http://dx.doi.org/10.1080/00207167508803100
PLEASE SCROLL DOWN FOR ARTICLE
Taylor & Francis makes every effort to ensure the accuracy of all the information (the Content) containedin the publications on our platform. However, Taylor & Francis, our agents, and our licensors make norepresentations or warranties whatsoever as to the accuracy, completeness, or suitability for any purpose of theContent. Any opinions and views expressed in this publication are the opinions and views of the authors, andare not the views of or endorsed by Taylor & Francis. The accuracy of the Content should not be relied upon andshould be independently verified with primary sources of information. Taylor and Francis shall not be liable forany losses, actions, claims, proceedings, demands, costs, expenses, damages, and other liabilities whatsoeveror howsoever caused arising directly or indirectly in connection with, in relation to or arising out of the use ofthe Content.
This article may be used for research, teaching, and private study purposes. Any substantial or systematicreproduction, redistribution, reselling, loan, sub-licensing, systematic supply, or distribution in anyform to anyone is expressly forbidden. Terms & Conditions of access and use can be found at http://www.tandfonline.com/page/terms-and-conditions
Intern. 3. Computer Maths. 1975, Vol. 5, Section A, pp. 3-35 0 Gordon and Breach Science Publishers Ltd. Printed in Great Britain
AEPL: An Extensible Programming Language? JACOB KATZENELSON and ELlE MILGROMS Technion-Israel Institute of Technology, Haifa, Israel
This paper presents an extensible programming language (AEPL) which has been designed as a tool for the implementation of a large class of languages for specific applications. AEPL includes a powerful data definition facility which enables one to d e b data structures and new types of data elements as well as new operators to manipulate both new and old data elements. A syntax driven parsing scheme derived from the Markov Algorithm makes it possible to control the syntax of the language dynamically, thus allowing one to define new language structures such as expressions and statements. As a result of the method used for syntactic definition, languages obtained by extension of AEPL belong to the general class of phrase structure languages, i.e. they are not restricted to the class of context-free languages.
AEPL was extended to produce a language for the manipulation of linear graphs. Our experience indicates that such extensions are fairly simple and, in many cases, straight- forward.
Computing Reviews Categories: 4.12, 4.13, 4.20, 4.22. Key words and phrases: extensible languages, Markov Algorithms, phase structure
The extensible programming language AEPL has been designed as a tool for the implementation of a large class of problem-oriented languages or languages for specific applications. The reason for such a goal is that we believe that there exist numerous areas of human interest generating problems which can be solved with the aid of a computer. We believe also that to be able to approach these problems using languages which are close to the terminology and the methodology of the respective areas is a significant advantage: it
?Based in part on a thesis submitted by the second author to the Faculty of Electrical Engineering of the TECHNION in partial fulfillment of the requirements for the degree of Doctor of Science in Technology.
$Unit6 d'hformatique, Institut de Mathematique Pure et Appliquk, Universit6 Catholique de Louvain, 2 Chemin du Cyclotron, B-1348 Louvain-La-Neuve, Belgium.
4 J. KATZENELSON AND E. MILGROM
enables a user to think in familiar terms and it liberates him from the burden of extraneous detail. This has been the reason for the uneconomic prolifera- tion of a large number of programming languages, each more or less well adapted to the solution of a particular class of problems (see  for a survey of a number of problem-oriented languages). Extensible languages propose to cover wide areas of application at lesser cost and greater convenience. A detailed description of a large number of current extensible languages and systems can be found in , together with an extensive bibliography of the area. Many of the best known extensible language schemes are described in PI, 131, PI, [51,[71, PI , 1101, [I61 and P11.
At the present time, we do not believe that many of the existing extensible languages can reasonably claim to replace all existing general-purpose and special purpose languages, mainly for reasons of efficiency. We concede there- fore that the usefulness of AEPL will be greatest for application areas which do not warrant the cost of a specially written compiler and where the matter of efficiency is relatively unimportant. Another possible use for AEPL is during the design phase of a new application language: AEPL provides a rapid and cheap way to experiment with different versions of a proposed language.
We believe that the major innovations present in AEPL are the treatment of sets, used to create data structures and to define new data types, and the use of a powerful syntax description mechanism derived from the Markov Algorithm. We think also that most of the power of the system stems from its particular architecture and the concept of a special machine or processor which embodies the semantics of the language.
In this paper, we have described the main concepts underlying the language, rather than to explain its features in detail. The reason for this is that we believe that these concepts are more important than their syntactic implemen- tation which consists of a large number of details which deserve to be known only to someone who is actually writing programs in AEPL. A full description of the language may be found in .
Section 2 of this article presents the general objectives on which the design of AEPL was based. Section 3 describes the overall model of the AEPL system; section 4 introduces the data structure concepts and the semantics of the data definition facility. These three sections have appeared in 1171 in a somewhat different form; they are included here to make the paper a complete overview of the system. Besides, the understanding of these sections is a prerequisite to understanding the rest of the paper.
Section 5 describes the processor and the structure of the programs which drive the processor; section 6 presents the translator, the parsing algorithm and the structure of the grammar rules. Finally, a short example of the use of AEPL is commented in section 7.
AEPL : AN EXTENSIBLE PROGRAMMING LANGUAGE 5
2. GENERAL DESIGN OBJECTIVES.
During the design phase of AEPL, we tried to remain consistent with a number of general concepts and ideas which we discuss in this section.
The three main aspects of extensibility which we set out to provide were the ability to define new types of data items and new operations on old or new data items and the possibility to modify extensively the syntactic frame of the language. The AEPL system was designed so as to present itself to the users as a language, sometimes called core or kernel language, which includes a number of basic data types, a number of operators for these data types and a syntactic frame within which one can describe sequences of operations on data, i.e. programs. The core language includes also the tools which enable one to modify these basic constituents and create "extended languages". Note, however, that the adjective "extended" does not necessarily imply addition of features to the core language : one can use the extension mechan- isms to produce a language which is less rich than the kernel by deletion of undesired features.
In the design of an extensible language, one is tempted to limit the number of primitive language features to the bare minimum and to rely on exten- sibility for the creation of useful languages from the original core language. While the precise definition of a minimum set of features is a problem in itself, it is clear that the emphasis on minimality leads to kernel languages which are so primitive and involuted that