An Overview of the Mj?lner BETA System

The Mjoner BETA System is an integrated and interactive programming environment with support for industrial object oriented programming. The Mjolner BETA System is a result of the Scandinavian research project Mjolner. The integration of the various tools in the Mjolner BETA System is established by insisting that all tools in the system utilizes one single representation of the program. This representation is abstract syntax trees (ASTs). All manipulations of the ASTs by the various tools are done, utilizing the metaprogramming system, which defines an interface to the AST, and ways to manipulate the AST. The Mjolner BETA System includes an implementation of the BETA programming language. In addition it includes a set of grammar-based tools, which can be used for any formal language that is defined by a contextfree grammar. The grammar-based tools include a hyper structure editor, a metaprogramming system, and a fragment system. Finally, the system includes a system browser, a source level debugger, a graphics system, an user interface system, an application builder, a general interface to the underlying operating system and interface to external routines. The BETA programming language is a block structured, strongly typed object oriented programming language. The language supports procedural, object oriented, concurrent and to some extent functional programming. The hyper structure editor is an integrated text and syntax-directed editor with extensive facilities for abstract presentation, browsing, and hypertext. The fragment system makes it possible to split a program into arbitrary modules called fragments. The fragment system supports separate compilation and separation of interface and implementation fragments. The metaprogramming system defines a unique representation of programs in the form of a set of classes defined by the abstract syntax of the language. This makes it possible to write programs that manipulate other programs. The Mjolner BETA System is grammar-based, implying that most components of the system exists in the form of tool generators, that given a context-free grammar for a language, will generate a language specific tool. All tools in the Mjolner BETA System (including the compiler) are written in BETA (except the run-time system and a few other routines written in C and assembly language).