This article is from the FAQ, by with numerous contributions by others.
The BETA compiler is a native code generation compiler.
The fragment system is used for splitting BETA programs into smaller
pieces (fragments). The fragment system is responsible for the
dependencies between different fragment files, defining a given library
or program. Due to the generality of the fragment system, a BETA
program can be divided into smaller pieces in many different ways.
The different tools in the Mjolner System uses the same source browser.
This source browser gives easy access to the file system, and gives
facilities for browsing in the entire set of source files, belonging to
a given program (the dependency graph of the program).
A source-level debugger for the BETA language is available on all
platform (except Macintosh and HP-PA). It contains facilities for
specifying break-points, single stepping, inspection of object states,
inspecting the run-time organization, etc. The debugger has a graphical
Hyper Structure Editor
The Mjolner BETA Hyper Structure Editor has the following properties:
Syntax-directed editing makes it possible to construct and edit
programs or other documents without introducing syntax errors.
Syntax-directed editing is especially useful for
application-oriented languages intended for end-users, casual
users and beginners that may have difficulties in remembering the
Abstract Presentation and Browsing
The editor is able to present a program at any level of detail. At
the top-level of a program the user may get an overview of classes
and procedures. It is then possible to browse through modules and
procedures to see more and more details.
The editor includes an adaptive pretty-printing algorithm which
prints the program or document such that it always fits within the
size of the window or paper.
Text Editing and Incremental Parsing
The programmer may freely alternate between syntax-directed
editing and textual editing. Any program part may be textually
edited using keyboard, mouse, and menus in the usual style known
from the Macintosh or the X Window System, respectively. Any
program part that has been textually edited is immediately parsed.
Fragment Manipulation and Browsing
The editor provides an interface to the fragment system. It is
possible to browse through the fragment structure and to create
and combine fragments.
Integration of Program and Documentation
The user may add a comment at any place in a program. The user
decides whether or not to display a comment. Also the user decides
whether to display a comment as part of the program or in another
window; in the latter case a comment is indicated by means of (*).
Using abstract presentation it is possible to obtain a
pretty-print of a program which includes just the classes and
procedure headings and corresponding comments. This makes it
possible to extract a functional specification from the program.
The editor includes hypertext facilities. The facility for
handling comments is an example of a hyperlink between a program
and a text document. Another type of hyperlink is a link from the
use of a name to the declaration of the name (this is only
implemented for BETA).
Object-oriented CASE Tool
The Mjolner BETA CASE Tool provides
o graphical structure editing of design diagrams
o textual structure editing of programs
o automatic program generation from design diagrams
o reverse engineering from programs to design diagrams
o simultaneous editing of design diagrams and programs
No CASE gap:
o A single abstract language is used throughout analysis, design,
o Different concrete syntaxes are used to present the different
+ graphical syntax for design
+ textual syntax for programs
User Interface Editor
The graphical user interface editor gives a direct manipulation editor
for the user interface of an application. The user interface editor is
integrated with the structure editor, enabling both graphical,
structured and textual editing of the user interface of the program.
Supplementing the metaprogramming libraries, there is a number of
grammar-based tools as part of the metaprogramming system, such as
compiler-compiler, parser, pretty-printer, and the hyper structure
editor. Being grammar-based, it is possible to customize them all
towards specific grammars.