Man page for beta
NAME
beta - BETA Compiler (version 5.3)
SYNOPSIS
beta [--help|-h] [--repeat|-r] [--noRepeat] [--link] [--
noLink|-x] [--static] [--dynamic] [--list] [--noList|-l] [--
debug] [--noDebug|-d] [--code] [--noCode|-c] [--checkQua] [-
-noCheckQua|-Q] [--checkNone] [--noCheckNone|-N] [--
checkIndex] [--noCheckIndex|-I] [--warn] [--noWarn|-w] [--
warnQua] [--noWarnQua|-q] [--verbose] [--quiet] [--mute] [--
traceCheck] [--noTraceCheck] [--traceCode] [--noTraceCode] [
--out file | -o file] [--preserve|-p] [--noPreserve] [--job]
[--noJob|-j] [--switch sw-1...sw-n [0] | -s sw-1...sw-n [0]]
[--linkOpts string] files...
AVAILABILITY
The Mjolner BETA Compiler is available as part of the
Mjolner BETA System from Mjolner Informatics.
DESCRIPTION
beta is an efficient compiler for the object oriented pro-
gramming language BETA. The compiler is using native code
generation, automatic garbage collection, and separate com-
pilation. The compiler also allows for easy interfacing
into code and data structures, originating from sources
written in other languages such as C, Pascal and assembly
language. The Mjolner BETA System includes (besides this
BETA compiler), a persistent store for BETA objects, a
source-level debugger, a hyper structure editor and a wide
variety of libraries and application frameworks (data struc-
tures, window system frameworks, metaprogramming system,
etc.), an object-oriented database for BETA objects
(prerelease), a distributed object system for BETA objects
(experimental), etc.
OPTIONS
-h
--help
Print this help info
-r
--repeat
Run compiler in repeating mode
--noRepeat
Do not run compiler in repeating mode (default)
--link
Link program (default)
-x
--noLink
Do not link program
--static
Use static linking
--dynamic
Use dynamic linking (default)
--list
Generate .lst file, if semantic errors (default)
-l
--noList
Do not generate .lst file, if semantic errors
--debug
Generate debug info to enable debugging (default)
-d
--noDebug
Do not generate debug info
--code
Generate code (default)
-c
--noCode
Do not generate code
--checkQua
Generate qualification runtime checks (default)
-Q
--noCheckQua
Do not generate qualification runtime checks
--checkNone
Generate runtime checks for NONE references (default)
-N
--noCheckNone
Do not generate runtime checks for NONE references
--checkIndex
Generate runtime checks for repetition index out of
range (default)
-I
--noCheckIndex
Do not generate runtime checks for repetition index out
of range
--warn
Generate warnings (default)
-w
--noWarn
Do not generate warnings
--warnQua
Generate warnings about runtime QUA checks (default)
-q
--noWarnQua
Do not generate warnings about runtime QUA checks
--verbose
Verbose compiler info output
--quiet
Only compiler info on parse, check, etc. (default)
--mute
No compiler info output
--traceCheck
Trace the compiler during semantic checking
--noTraceCheck
Do not trace the compiler during semantic checking
--traceCode
Trace the compiler during code generation
--noTraceCode
Do not trace the compiler during code generation (de-
fault)
-o file
--out file
Specify name to use for executable
-p
--preserve
Preserve generated .job and assembly files
--noPreserve
Do not preserve generated .job and assembly files (de-
fault)
--job
Execute the .job file (default)
-j
--noJob
Do not execute the .job file
-s sw-1...sw-n [0]
--switch
sw-1 ... sw-n[0]
Set/unset one or more compiler switches. Please see the
section Compiler switches below for details.
--linkOpts string
Specify text string to be append to the link directive
Note that short options can be combined, e.g. -q -c can be
written as -qc . Long option names are case insensitive,
whereas single character options are case sensitive.
Compiler switches
This section describes the most interesting compiler
switches with respect to parameterization. Please con-
sult the compiler reference manual for details.
12: Force code generation for all fragments in the
dependency graph. Since this switch may force
code generation of standard libraries, it should
only be used by the system administrators and
only in the case of serious problems with the
installation.
21: Continue translation after semantic errors.
191: Print each descriptor just before it is checked.
192: Print each declaration just before it is checked.
193: Print each imperative just before it is checked.
308: Print each declaration just before code is gen-
erated for it.
311: Print each imperative just before code is gen-
erated for it.
Note that switches 191, 192 and 193 are jointly set by
--traceCheck and that switches 308 and 311 are jointly set
by --traceCode .
ENVIRONMENT
The beta compiler recognizes the environment variables list-
ed below. Please note that many of these variables are given
default values in the Bourne Shell script
$BETALIB/configuration/env.sh (see the BETALIB environ-
ment variable below). If the default values for some of
these variables are to be changed for an entire site-
installation, the easiest way to do it is by changing them
directly in this file.
BETALIB
Specifies where ~beta is located. If not set, beta is
assumed to be a username, and ~beta being the home
directory of that user. Is used by many tools in the
Mjolner BETA System.
BETAOPTS
Specifies options that the beta compiler should be in-
voked with by default.
BETALINKOPTIONS
Specifies the linker options to be used by the BETA
compiler when linking (using std. UNIX linker). If
set, it totally overwrites the default link options,
the compiler would have used otherwise.
LD_LIBRARY_PATH
This is a colon separated list of directories to search
for external libraries during linking. Notice that not
all standard UNIX linkers supports this variable
directly, but the ..job files generated by the beta-
compiler will still use this variable.
TMPDIR
Normally, the link-directives in the ..job files will
use /tmp for temporary files. If another directory is
to be used (e.g. because /tmp is full), setting TMPDIR
to the name of a directory, prior to compilation, will
cause the link-directives to place temporary files in
this directory.
MACHINETYPE
Is set automatically by the compiler during the execu-
tion of the ..job files and make files.
BETART
Is used to set various characteristics of the BETA run-
time system. The specification consists of a list of
entries, separated by ':' (colon). Colon in the begin-
ning and at the end of the BETART value is optional.
The specification ignores case except for the case of
the string-entry values.
Entries may appear more than once in BETART. The last
specification will in this case be used. The semantics
of the different BETART entries are given below.
There are three types of entries: boolean-, integer-,
and string-entries:
Boolean-entries:
The default values for all boolean entries are
false. Mentioning the boolean entries in BETART
sets its value to true.
Boolean entries have the form <entry>, where <en-
try> is one of:
Info Print information about heap sizes etc.
at startup.
InfoIOA Print information on garbage collection
in the infant object area during execu-
tion.
InfoAOA Print information on garbage collection
in the adult object area during execu-
tion.
InfoLVRA Print Information on garbage collection
in the large value repetition area dur-
ing execution.
InfoCBFA Print information about the callback
function area during execution.
InfoLVRAAlloc
Print information on allocation in the
large value repetition area during exe-
cution.
InfoAll Sets all Info-entries: Info, InfoIOA,
InfoAOA, InfoLVRA, InfoCBFA, and InfoL-
VRAAlloc.
QuaCont Continue execution after runtime detec-
tion of qualification error in reference
assignment.
Integer-entries:
These have the form <entry>=<value>, or
<entry>#<value>, where <entry> is one of the fol-
lowing, and <value> is any positive integer. The
default values are noted in parenthesis below:
IOA The size in Kb of the infant object area
(Default: 512).
IOAPercentage
The minimum free fraction in percent of
the infant object area. (Legal range: 3
to 40, default: 10).
AOA The size in Kb of one block in the adult
object area (Default: 512).
AOAMinFree
The minimum free area in Kb in the adult
object area. If less than this size is
free after an AOA garbage collection,
then the next allocation in AOA will
cause a new block to be allocated.
Please note that it is only meaningful
to specify one of AOAMinFree and AOAPer-
centage (below), because they specify
conflicting behaviour for allocation in
AOA. (Default: 100).
AOAPercentage
The minimum free fraction in percent of
the adult object area. If less than this
fraction is free after an AOA garbage
collection, then the next allocation in
AOA will cause a new block to be allo-
cated. Please note that it is only mean-
ingful to specify one of AOAMinFree
(above) and AOAPercentage, because they
specify conflicting behaviour for allo-
cation in AOA. (Legal range: 3 to 97,
default: 0, i.e., AOAMinFree is used).
LVRA The default size in Kb of one block in
the large value repetition area (De-
fault: 512).
LVRAMinFree
The minimum free area in Kb in the large
value repetition area. If less than
this size is free after an LVRA garbage
collection, then the next allocation in
LVRA will cause a new block to be allo-
cated. Please note that it is only mean-
ingful to specify one of LVRAMinFree and
LVRAPercentage (below), because they
specify conflicting behaviour for allo-
cation in LVRA. (Default: 200).
LVRAPercentage
The minimum free fraction in percent of
the large value repetition area. If less
than this fraction is free after an LVRA
garbage collection, then the next allo-
cation in LVRA will cause a new block to
be allocated. Please note that it is
only meaningful to specify one of LVRA-
MinFree (above) and LVRAPercentage, be-
cause they specify conflicting behaviour
for allocation in LVRA. (Legal range: 3
to 97, default: 0, i.e., LVRAMinFree is
used).
CBFA The size in Kb of one block in the call-
back function area (Default: 1).
String-entries:
These have the form <entry>=<value>, or
<entry>#<value>, where <entry> is one of the fol-
lowing, and <value> is any string. The default
values are noted in parenthesis below:
InfoFile Name of file on which to write all this
information (Default: stderr).
Example:
setenv BETART "InfoIOA:IOA=1024:InfoFile=info.dump"
(using csh)
BETARS
Corresponds to BETART. Is used by valhalla (the
source level debugger) for specifying the BETART
entries for the program being debugged (and thus
not affecting the behavior of the debugger it-
self). Setting BETART is in this case used to
control the entries of the debugger itself.
FILES
file.bet
The file containing the BETA source-code
file.ast
On a big-endian architecture, this file will contain
the abstract syntax tree representation of the compiled
source code. This file is used by many tools in the
Mjolner BETA System. This file used to be called
file.group in previous releases of the Mjolner BETA
System.
file.astL
On a little-endian architecture, this file will contain
the abstract syntax tree representation of the compiled
source code. This file is used by many tools in the
Mjolner BETA System.
file.lst
This file is generated in the case of errors during the
compilation process. It will then contain error-
messages etc. along with the source code if errors are
discovered in the source code (syntax errors and seman-
tic errors).
file.o
This file will contain the object-code for the compiled
source code. file.o files are located in subdirectories
named according to the machine type, to which the
source code have been compiled. Currently, the direc-
tories: sun4, sun4s, hpux8, hpux9pa, hpux9mc, linux,
and mac can be created. These directories are automat-
ically created by the compiler, if not present already.
file.go
Like file.o but with debug info included.
file..job
This file contains commands controlling the assembly
and link process (asm and link instructions, etc.).
This file is generated during the compilation process,
and will normally be removed immediately before the
compilation terminates. Like file.o the job-file is
placed in a subdirectory corresponding to the machine
type, please see file.o for a descriptrion.
file..s
This file will contain the assembly code for the com-
piled source code files. This file is also normally
removed immediately before the compilation terminates.
Like file.o the assembly-file is placed in a subdirec-
tory corresponding to the machine type, please see
file.o for a descriptrion.
file..gs
Like file..s but with debug info included.
file..db
file with debug info used by valhalla(1). Like file.o
the debug-file is placed in a subdirectory correspond-
ing to the machine type, please see file.o for a
descriptrion.
file.dump
If a run-time error occurs during execution of the exe-
cutable, a dump of the current object and the call
chain that activated that object will be written to
this file. Please note, that in some situations, the
program state may be so corrupted that the dump becomes
unprecise, or it may fail completely to produce the
dump. Try using valhalla(1) and reproduce the error if
the dump is not enough to understand the error. Note
that this file was previously named beta.dump for all
applications.
$BETALIB/configuration/env.sh
Bourne Shell script used by the tools in the Mjolner
BETA System. Contains default set-up of environment
variables for the architectures currently supported by
the Mjolner BETA System.
SEE ALSO
valhalla(1) - Mjolner BETA Source-Level Debugger
betatar(1) - BETA tar(1) front-end
betawc(1) - BETA fragment analyser
betafs(1) - Mjolner BETA Fragment Structure Lister
sif(1) - Hyper-Structure Editor
The USENET newsgroup comp.lang.beta is intended for discus-
sions about the BETA language and the programs and systems
written in or supporting BETA. Discussions concerning
object-oriented programming principles based on the concepts
known from BETA will also take place in comp.lang.beta, pos-
sibly cross-posted to comp.object.
The beta-language-faq will be cross-posted to
comp.lang.beta, and the most frequently asked questions from
comp.lang.beta will be included in the subsequent versions
of the FAQ.
The Mjolner BETA System - BETA Compiler: Reference Manual,
Mjolner Informatics Report: MIA 90-2.
The Mjolner BETA System - Using on UNIX Systems, Mjolner In-
formatics Report: MIA 90-4.
The Mjolner BETA System - Basic Libraries, Mjolner Informat-
ics Report: MIA 90-8.
The Mjolner BETA System - Sif: A Hyper Structure Editor -
User's Guide, Mjolner Informatics Report: MIA 90-11.
The Mjolner BETA System - Valhalla: The BETA Source-level
Debugger - User's Guide, Mjolner Informatics Report: MIA
92-12.
The Mjolner BETA System - The Bifrost Graphics System:
Reference Manual, Mjolner Informatics Report: MIA 91-13.
The Mjolner BETA System - X Window System Libraries, Mjolner
Informatics Report: MIA 91-16.
The Mjolner BETA System - The Bifrost Graphics System: Tu-
torial, Mjolner Informatics Report: MIA 91-19.
The Mjolner BETA System - Persistence in BETA, Mjolner In-
formatics Report: MIA 91-20.
The Mjolner BETA System - Container Libraries, Reference
Manual Mjolner Informatics Report: MIA 92-22.
The Mjolner BETA System - The Mjolner BETA System Tutorial,
Mjolner Informatics Report: MIA 94-24.
The Mjolner BETA System - Distribution Mjolner Informatics
Report: MIA 94-25.
The Mjolner BETA System - BETA Language Introduction,
Mjolner Informatics Report: MIA 94-26.
O. Lehrmann Madsen, B. Moller-Pedersen, K. Nygaard:
Object-Oriented Programming in the BETA Programming
Language, Addison-Wesley, 1993, ISBN 0-201-62430-3.
J. L. Knudsen, M. Lofgren, O. L. Madsen, B. Magnusson
(Eds.): Object-Oriented Environments - The Mjolner Approach,
Prentice Hall, 1994, ISBN 0-13-009291-6.
BUGS
The BETA compiler does not currently implement the entire
BETA language. A few constructs are not supported. For a
precise description of the limitations (and additions), see
the compiler reference manual.
AUTHORS
The BETA Compiler is developed by Mjolner Informatics as
part of the Mjolner BETA System.
Questions, bug-reports, etc. may be directed to
support@mjolner.dk if the local support organization cannot
find solutions to the problems.
For more information of the Mjolner BETA System, please con-
tact Mjolner Informatics, Science Park Aarhus, Gustav Wieds
Vej 10, DK-8000 Aarhus C, Denmark, phone: +45 86 20 20 00,
fax: +45 86 20 12 22, e-mail: info@mjolner.dk.