Advisor(s)

Olin Shivers

Contributor(s)

Mitchell Wand, Riccardo Pucella, Alan Bawden

Date of Award

2010

Date Accepted

4-2010

Degree Grantor

Northeastern University

Degree Level

Ph.D.

Degree Name

Doctor of Philosophy

Department or Academic Unit

College of Computer and Information Science. Department of Computer Science.

Keywords

computer science, language design, language theory, macros, metaprogramming, semantics, syntax

Subject Categories

Programming languages (Electronic computers) - Semantics, Programming languages (Electronic computers) - Syntax

Disciplines

Programming Languages and Compilers

Abstract

Designing custom notations is essential to designing advanced systems. Although an electrical engineer could write an English description of a circuit board, explaining which components were used and how each was connected, it is not very effective for him to do so; he would do much better to draw a circuit diagram. This not only streamlines the process of circuit architecture, allowing commonly-used design idioms to be expressed concisely, but it also allows a reasoning engine, such as an automated design tool or the electrical engineer himself, to reason about the circuit, identifying redundancies, determine its behavior and find potential problem points.

In programming, the custom notations we use are programming languages. Languages can target a specific computer architecture, can be intended for general-purpose programming, or can be tailored to a particular problem domain. The pre-testing reasoning power of the language is expressed as its static semantics, and are of vital importance in efficient compilation and in preventing bugs.

I have constructed a design framework that allows a language designer to: * * associate rich static semantics with this notation, design a custom notation for a particular domain, * provide a realization of this notation by translating programs written in it into a ``lower-level'' language, and * link the static semantics of the custom notation with those of the lower-level language. The framework allows this by providing a macro system with two major features: * syntax is represented as a tree of objects with classes, and * methods are dispatched on these objects through a system called lazy delegation.

The thesis of this work is: Object-oriented abstract syntax and lazy delegation allow language designers to build custom notations with rich static semantics, and to link these semantics with those of lower-level languages.

Document Type

Dissertation

Rights Holder

David Fisher



Click button above to open, or right-click to save.

Share

COinS