Icon is a high-level, general-purpose programming language that offers a broad range of string- and list-processing facilities. It also has a novel expression evaluation mechanism and allows an unusual degree of run-time flexibility. Because of these features, implementing Icon presents problems considerably different from those involved with implementing more traditional languages like Pascal or C.
This book is a study of an implementation of Icon. It differs from the usual books on compilers in emphasizing the implementation of run-time facilities and handling of sophisticated language features.
Icon has been implemented for a wide range of computers, from those run-ning UNIX and VAX/VMS to personal computers running MS-DOS. This is a description of a real implementation in wide use; it is not a toy. The code that appears in the book is real code, as it appears in the source.
Readers of this book should have a general familiarity with programming languages and a general idea of what is involved in implementing a complex software system. icon is written in C; a reader who has experience with that language will find the extensive examples written in C helpful. A reader who has no C experience, however, can skip the C examples and still grasp the general discussion.
Several groups of readers will find this book especially useful. One is the community of individual designers and experimental implementors who want to implement a language like Icon or to extend an existing implementation of Icon. Another group includes the growing number of sophisticated personal computer users who wish to explore languages like Icon. A third group is the academic community concerned with programming-language implementation techniques. In this context, the book is useful for personal research as well as for courses in programming-language implementation issues and techniques, advanced com-piler design, and in-depth studies of high-level programming languages and their implementations.
This book does not attempt to cover all aspects of the implementation of Icon. Instead, it concentrates on central issues and on the more interesting and novel portions of the implementation. Persons who are interested in the details of the implementation, and especially those who want to modify the implementa-tion, will find the source code to be a valuable adjunct to this book. This source code is in the public domain and is readily available. It is important to have the correct version, 6.2, for use with this book, since there are other versions that are considerably different.