EM_M2(6)

NAME
em_m2 - ACK Modula-2 compiler

SYNOPSIS
~em/lib.bin/em_m2 [option] source destination

DESCRIPTION
Em_m2 is a compiler, part of the Amsterdam Compiler Kit, that translates Modula-2 programs into EM code. The input is taken from source, while the EM code is written on destination.

Option is a, possibly empty, sequence of the following combinations:

-Idirname
    append dirname to the list of directories where definition modules are looked for.

When the compiler needs a definition module, it is first searched for in the current directory, and then in the directories given to it by the -I flag in the order given.

-Mn set maximum identifier length to n. The minimum value for n is 14, because the keyword "IMPLEMENTATION" is that long.

-n  do not generate EM register messages. The user-declared variables will not be stored into registers on the target machine.

-L  do not generate the EM fil and lin instructions that enable an interpreter to keep track of the current location in the source code.

-Vcm.n, -Vcm.ncm.n ...
    set the size and alignment requirements. The letter c indicates the simple type, which is one of w(word size), i(INTEGER), l(LONGINT), f(REAL), d(LONGREAL), or p(POINTER). It may also be the letter S, indicating that an initial record alignment follows. The m parameter can be used to specify the length of the type (in bytes) and the n parameter for the alignment of that type. Absence of m or n causes a default value to be retained.

-wclasses
    suppress warning messages whose class is a member of classes. Currently, there are three classes: O, indicating old-flashioned use, W, indicating "ordinary" warnings, and R, indicating restricted Modula-2. If no classes are given, all warnings are suppressed. By default, warnings in class O and W are given.

-Wclasses
    allow for warning messages whose class is a member of classes.

-x  make all procedure names global, so that adb(1) understands them.

-g  produce a DBX-style symbol table.

-l  enable local extensions. Currently, there are two local extensions: procedure constants, and the type LONGCARD.

-s  make INTEGER ranges symmetric, t.i., MIN(INTEGER) = - MAX(INTEGER). This is useful for interpreters that use the "real" MIN(INTEGER) to indicate "undefined".

-R  disable all range checks.

-A  enable extra array bound checks, for machines that do not implement the EM ones.

-U  allow for underscores within identifiers. Identifiers may not start with an underscore, even if this flag is given.

-3  only accept Modula-2 programs that strictly conform to [1].

SEE ALSO
ack(1), modula-2(1)

[1] N. Wirth, Programming in Modula-2, 3rd edition, Springer Verlag.

DIAGNOSTICS
All warning and error messages are written on standard error output.

REMARKS
Debugging and profiling facilities may be present during the development of em_m2.