Abstract

Research in formal description of programming languages over the past four decades has led to some significant achievements. These include formal syntax and semantics for complete major programming languages, and theoretical foundations for novel features that might be included in future languages. Nevertheless, to give a completely formal, validated description of any significant programming language using the conventional frameworks remains an immense effort, disproportionate to its perceived benefits. Our diagnosis of the causes of this disappointing situation highlights two major deficiencies in the pragmatic aspects of formal language descriptions in conventional frameworks: lack of reusable components, and poor tool support. Part of the proposed remedy is a radical shift to a novel component-based paradigm for the development of complete language descriptions, based on simple interfaces between descriptions of syntactic and semantic aspects, and employing frameworks that allow independent description of individual programming constructs. The introduction of a language-independent notation for common programming constructs maximises the reusability of components. Tool support for component-based language description is being developed using the ASF+SDF Meta-Environment; the aim is to provide an efficient component-based workbench for use in design and implementation of future programming languages, accompanied by an online repository for validated formal descriptions of programming constructs and languages.

Highlights

  • Research in formal description of programming languages over the past four decades has led to some significant achievements

  • The syntax of a language determines the set of well-formed programs and their hierarchical structure; static semantics involves checking that programs are well-typed; and dynamic semantics specifies the observable effect of running a program

  • The static semantics is applied to the abstract syntax tree of the program, and determines whether the program is statically correct; if so, the dynamic semantics is applied to the same tree

Read more

Summary

INTRODUCTION

Research in formal description of programming languages over the past four decades has led to some significant achievements. Part of the proposed remedy involves a radical shift to a novel component-based paradigm for the development of complete language descriptions [25] This paradigm is based on simple interfaces between descriptions of syntactic and semantic aspects, and employs frameworks that allow independent description of individual programming constructs, such as Modular SOS [24, 27] and action semantics [23]. We are developing tool support for component-based language descriptions using the ASF+SDF Meta-Environment [2]; our aims are to provide an efficient component-based workbench for use in design and implementation of future programming languages, and to establish an online repository for validated formal descriptions of programming constructs and languages.

BACKGROUND
Concrete Syntax
Abstract Syntax
Static Semantics
Dynamic Semantics
Structural Operational Semantics
Denotational Semantics
Complete Language Descriptions
REUSABILITY
Modular SOS
Implicitly-Modular SOS
Monadic Semantics
Action Semantics
Basic Abstract Constructs
LANGUAGE DESCRIPTIONS
CONCLUSION
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call