Man page for beta


NAME

     beta - BETA Compiler (version 5.2)


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.