CDL3(ID:5988/cdl009)

Version 3Compiler Description Language 





Related languages
CDL2 => CDL3   Evolution of

References:
  • Koster, Jones, Beney "CDL3 manual" 1998 view details Abstract: This is the working version of an manual for the Systems Implementation Language CDL3 and its development system. This language represents the third step in an evolution process
    which included the CDL1 language with its compiler--compiler and the CDL2 language with its CDL2 LAB.

    In the computing community the term implementation stands for a major part of the software development cycle, starting after the design phase and ending with the first delivery of the product. Implementing large software systems is the honourable battlefield of the professional informatician, the serious side of programming.
    Implementing has the same relationship to freshman programming as war to manoeuvers: professionalism replaces enthusiasm, collaboration is more important than individual ac-complishment, harsh exigencies come in the place of academic leisure. Even though it is a peaceful and constructive activity, implementation projects have been known to end in disaster, in the brutal suppression of promise and in slavery.
    Implementation is the technical side of software engineering. It is a human activity and therefore formal questions are often completely overshadowed by pragmatic considerations. In implementation it is not important what is possible, but what is feasible with the given human and material resources and in the time allowed. It has long been realised that one of the important contributions to the success or
    failure of an implementation project comes from the choice of the programming language used and its support on the development hardware. By itself, the choice of a suitable implementation language cannot guarantee success but an unsuitable language can lead to a long and costly implementation, resulting in an unstable product, which is expensive to maintain and has a short economic life.
    The implementation language is not an panacea but an important tool, that should be chosen with care. In this manual we will deal with one particular implementation language, CDL3, with the philosophy behind it, and the programming supports based on it. We will motivate its
    concepts and particularities both from the programming language point of view and from the viewpoint of software engineering. CDL3 is an implementation language based on affix grammars. It rides the borderline between syntactic formalism and programming language, and tries to combine the good properties of both.
    The control structure and data structures have been choosen such that it is extremely easy to write deterministic parsers and transducers in CDL3. In this sense, CDL3 is a Com-piler Description Language (hence the acronym). Its applicability is, however, not limited
    to compiler construction. The language is wellsuited, more in general, for all applications that can be characterized as syntax-directed: communication between processes (human and machine) adhering to well--established protocols, or interpreter--like systems, interac-tively obeying a set of commands.

    In this manual, we introduce CDL3 as a programming language and show by small examples how to use it as a Software Engineering tool. Due to its powerful data-structures, strong typing and helpful development tools, it provides a fast and secure approach to the
    development of large C programs.
    The manual is also a textbook on the basic concepts of programming and programming languages. As such it is hoped to have a usefulness not limited to the implementation of compilers in CDL3.