changed font 5 references to font CW references

This commit is contained in:
ceriel 1988-04-18 13:56:01 +00:00
parent defbe00b6a
commit 88d11eaf44
2 changed files with 118 additions and 118 deletions

View file

@ -32,42 +32,42 @@ programs.
.SH .SH
2.3 Keywords 2.3 Keywords
.SH .SH
\f5asm\fP \f(CWasm\fP
.PP .PP
The keyword \f5asm\fP The keyword \f(CWasm\fP
is recognized. is recognized.
However, the statement However, the statement
.DS .DS
.ft 5 .ft CW
asm(string); asm(string);
.ft R .ft R
.DE .DE
is skipped, while a warning is given. is skipped, while a warning is given.
.SH .SH
\f5enum\fP \f(CWenum\fP
.PP .PP
The \f5enum\fP keyword is recognized and interpreted. The \f(CWenum\fP keyword is recognized and interpreted.
.SH .SH
\f5entry\fP, \f5fortran\fP \f(CWentry\fP, \f(CWfortran\fP
.PP .PP
The words \f5entry\fP and \f5fortran\fP The words \f(CWentry\fP and \f(CWfortran\fP
are reserved under the restricted option. are reserved under the restricted option.
The words are not interpreted by the compiler. The words are not interpreted by the compiler.
.SH .SH
2.4.1 Integer Constants 2.4.1 Integer Constants
.PP .PP
The type of an integer constant is the first of the corresponding list The type of an integer constant is the first of the corresponding list
in which its value can be represented. Decimal: \f5int, long, unsigned long\fP; in which its value can be represented. Decimal: \f(CWint, long, unsigned long\fP;
octal or hexadecimal: \f5int, unsigned, long, unsigned long\fP; suffixed by octal or hexadecimal: \f(CWint, unsigned, long, unsigned long\fP; suffixed by
the letter L or l: \f5long, unsigned long\fP. the letter L or l: \f(CWlong, unsigned long\fP.
.SH .SH
2.4.3 Character Constants 2.4.3 Character Constants
.PP .PP
A character constant is a sequence of 1 up to \f5sizeof(int)\fP characters A character constant is a sequence of 1 up to \f(CWsizeof(int)\fP characters
enclosed in single quotes. enclosed in single quotes.
The value of a character constant '$c sub 1 c sub 2 ... c sub n$' The value of a character constant '$c sub 1 c sub 2 ... c sub n$'
is $d sub n + M \(mu d sub {n - 1} + ... + M sup {n - 1} \(mu d sub 2 + M sup n \(mu d sub 1$, is $d sub n + M \(mu d sub {n - 1} + ... + M sup {n - 1} \(mu d sub 2 + M sup n \(mu d sub 1$,
where M is 1 + maximum unsigned number representable in an \f5unsigned char\fP, where M is 1 + maximum unsigned number representable in an \f(CWunsigned char\fP,
and $d sub i$ is the signed value (ASCII) and $d sub i$ is the signed value (ASCII)
of character $c sub i$. of character $c sub i$.
.SH .SH
@ -80,46 +80,46 @@ The compiler does not support compile-time floating point arithmetic.
The compiler is capable of producing EM code for machines with the following The compiler is capable of producing EM code for machines with the following
properties properties
.IP \(bu .IP \(bu
a \f5char\fP is 8 bits a \f(CWchar\fP is 8 bits
.IP \(bu .IP \(bu
the size of \f5int\fP is equal to the word size the size of \f(CWint\fP is equal to the word size
.IP \(bu .IP \(bu
the size of \f5short\fP may not exceed the size of \f5int\fP the size of \f(CWshort\fP may not exceed the size of \f(CWint\fP
.IP \(bu .IP \(bu
the size of \f5int\fP may not exceed the size of \f5long\fP the size of \f(CWint\fP may not exceed the size of \f(CWlong\fP
.IP \(bu .IP \(bu
the size of pointers is equal to the size of either \f5short\fP, \f5int\fP the size of pointers is equal to the size of either \f(CWshort\fP, \f(CWint\fP
or \f5long\fP or \f(CWlong\fP
.LP .LP
.SH .SH
4 What's in a name? 4 What's in a name?
.SH .SH
\f5char\fP \f(CWchar\fP
.PP .PP
Objects of type \f5char\fP are taken to be signed. Objects of type \f(CWchar\fP are taken to be signed.
The combination \f5unsigned char\fP is legal. The combination \f(CWunsigned char\fP is legal.
.SH .SH
\f5unsigned\fP \f(CWunsigned\fP
.PP .PP
The type combinations \f5unsigned char\fP, \f5unsigned short\fP and The type combinations \f(CWunsigned char\fP, \f(CWunsigned short\fP and
\f5unsigned long\fP are supported. \f(CWunsigned long\fP are supported.
.SH .SH
\f5enum\fP \f(CWenum\fP
.PP .PP
The data type \f5enum\fP is implemented as described The data type \f(CWenum\fP is implemented as described
in \fIRecent Changes to C\fP (see appendix A). in \fIRecent Changes to C\fP (see appendix A).
.I Cem .I Cem
treats enumeration variables as if they were \f5int\fP. treats enumeration variables as if they were \f(CWint\fP.
.SH .SH
\f5void\fP \f(CWvoid\fP
.PP .PP
Type \f5void\fP is implemented. Type \f(CWvoid\fP is implemented.
The type specifies an empty set of values, which takes no storage space. The type specifies an empty set of values, which takes no storage space.
.SH .SH
\fRFundamental types\fP \fRFundamental types\fP
.PP .PP
The names of the fundamental types can be redefined by the user, using The names of the fundamental types can be redefined by the user, using
\f5typedef\fP. \f(CWtypedef\fP.
.SH .SH
7 Expressions 7 Expressions
.PP .PP
@ -131,7 +131,7 @@ Parameter lists are evaluated from right to left.
.SH .SH
7.2 Unary operators 7.2 Unary operators
.PP .PP
The type of a \f5sizeof\fP expression is \f5unsigned int\fP. The type of a \f(CWsizeof\fP expression is \f(CWunsigned int\fP.
.SH .SH
7.13 Conditional operator 7.13 Conditional operator
.PP .PP
@ -147,8 +147,8 @@ The types of operands taking part must be the same.
.SH .SH
8.2 Type specifiers 8.2 Type specifiers
.PP .PP
The combinations \f5unsigned char\fP, \f5unsigned short\fP The combinations \f(CWunsigned char\fP, \f(CWunsigned short\fP
and \f5unsigned long\fP are implemented. and \f(CWunsigned long\fP are implemented.
.SH .SH
8.5 Structure and union declarations 8.5 Structure and union declarations
.PP .PP
@ -157,7 +157,7 @@ are supported, as long as the type fits in a word on the target machine.
.PP .PP
Fields are left adjusted by default; the first field is put into the left Fields are left adjusted by default; the first field is put into the left
part of a word, the next one on the right side of the first one, etc. part of a word, the next one on the right side of the first one, etc.
The \f5-Vr\fP option in the call of the compiler The \f(CW-Vr\fP option in the call of the compiler
causes fields to be right adjusted within a machine word. causes fields to be right adjusted within a machine word.
.PP .PP
The tags of structs and unions occupy a different name space from that of The tags of structs and unions occupy a different name space from that of
@ -167,12 +167,12 @@ variables and that of member names.
.PP .PP
The type of \fIexpression\fP in The type of \fIexpression\fP in
.DS .DS
.ft 5 .ft CW
\f5switch (\fP\fIexpression\fP\f5)\fP \fIstatement\fP \f(CWswitch (\fP\fIexpression\fP\f(CW)\fP \fIstatement\fP
.ft .ft
.DE .DE
must be integral. must be integral.
A warning is given under the restricted option if the type is \f5long\fP. A warning is given under the restricted option if the type is \f(CWlong\fP.
.SH .SH
10 External definitions 10 External definitions
.PP .PP
@ -190,21 +190,21 @@ in \(sc11.1 is walked correctly.
.SH .SH
12 Compiler control lines 12 Compiler control lines
.PP .PP
Lines which do not occur within comment, and with \f5#\fP as first Lines which do not occur within comment, and with \f(CW#\fP as first
character, are interpreted as compiler control line. character, are interpreted as compiler control line.
There may be an arbitrary number of spaces, tabs and comments (collectively There may be an arbitrary number of spaces, tabs and comments (collectively
referred as \fIwhite space\fP) following the \f5#\fP. referred as \fIwhite space\fP) following the \f(CW#\fP.
Comments may contain newline characters. Comments may contain newline characters.
Control lines with only white space between the \f5#\fP and the line separator Control lines with only white space between the \f(CW#\fP and the line separator
are skipped. are skipped.
.PP .PP
The #\f5include\fP, #\f5ifdef\fP, #\f5ifndef\fP, #\f5undef\fP, #\f5else\fP and The #\f(CWinclude\fP, #\f(CWifdef\fP, #\f(CWifndef\fP, #\f(CWundef\fP, #\f(CWelse\fP and
#\f5endif\fP control lines and line directives consist of a fixed number of #\f(CWendif\fP control lines and line directives consist of a fixed number of
arguments. arguments.
The list of arguments may be followed an arbitrary sequence of characters, The list of arguments may be followed an arbitrary sequence of characters,
in which comment is interpreted as such. in which comment is interpreted as such.
(I.e., the text between \f5/*\fP and \f5*/\fP is skipped, regardless of (I.e., the text between \f(CW/*\fP and \f(CW*/\fP is skipped, regardless of
newlines; note that commented-out lines beginning with \f5#\fP are not newlines; note that commented-out lines beginning with \f(CW#\fP are not
considered to be control lines.) considered to be control lines.)
.SH .SH
12.1 Token replacement 12.1 Token replacement
@ -216,10 +216,10 @@ Comments and newline characters, preceeded by a backslash, in the replacement
text are replaced by a space character. text are replaced by a space character.
.PP .PP
The actual parameters of a macro are considered tokens and are The actual parameters of a macro are considered tokens and are
balanced with regard to \f5()\fP, \f5{}\fP and \f5[]\fP. balanced with regard to \f(CW()\fP, \f(CW{}\fP and \f(CW[]\fP.
This prevents the use of macros like This prevents the use of macros like
.DS .DS
.ft 5 .ft CW
CTL([) CTL([)
.ft .ft
.DE .DE
@ -228,22 +228,22 @@ Formal parameters of a macro must have unique names within the formal-parameter
list of that macro. list of that macro.
.PP .PP
A message is given at the definition of a macro if the macro has A message is given at the definition of a macro if the macro has
already been #\f5defined\fP, while the number of formal parameters differ or already been #\f(CWdefined\fP, while the number of formal parameters differ or
the replacement texts are not equal (apart from leading and trailing the replacement texts are not equal (apart from leading and trailing
white space). white space).
.PP .PP
Recursive use of macros is detected by the compiler. Recursive use of macros is detected by the compiler.
.PP .PP
Standard #\f5defined\fP macros are Standard #\f(CWdefined\fP macros are
.DS .DS
\f5__FILE__\fP name of current input file as string constant \f(CW__FILE__\fP name of current input file as string constant
\f5__DATE__\fP curent date as string constant; e.g. \f5"Tue Wed 2 14:45:23 1986"\fP \f(CW__DATE__\fP curent date as string constant; e.g. \f(CW"Tue Wed 2 14:45:23 1986"\fP
\f5__LINE__\fP current line number as an integer \f(CW__LINE__\fP current line number as an integer
.DE .DE
.PP .PP
No message is given if \fIidentifier\fP is not known in No message is given if \fIidentifier\fP is not known in
.DS .DS
.ft 5 .ft CW
#undef \fIidentifier\fP #undef \fIidentifier\fP
.ft .ft
.DE .DE
@ -254,18 +254,18 @@ A newline character is appended to each file which is included.
.SH .SH
12.3 Conditional compilation 12.3 Conditional compilation
.PP .PP
The #\f5if\fP, #\f5ifdef\fP and #\f5ifndef\fP control lines may be followed The #\f(CWif\fP, #\f(CWifdef\fP and #\f(CWifndef\fP control lines may be followed
by an arbitrary number of by an arbitrary number of
.DS .DS
.ft 5 .ft CW
#elif \fIconstant-expression\fP #elif \fIconstant-expression\fP
.ft .ft
.DE .DE
control lines, before the corresponding #\f5else\fP or #\f5endif\fP control lines, before the corresponding #\f(CWelse\fP or #\f(CWendif\fP
is encountered. is encountered.
The construct The construct
.DS .DS
.ft 5 .ft CW
#elif \fIconstant-expression\fP #elif \fIconstant-expression\fP
some text some text
#endif /* corresponding to #elif */ #endif /* corresponding to #elif */
@ -273,7 +273,7 @@ some text
.DE .DE
is equivalent to is equivalent to
.DS .DS
.ft 5 .ft CW
#else #else
#if \fIconstant-expression\fP #if \fIconstant-expression\fP
some text some text
@ -282,15 +282,15 @@ some text
.ft .ft
.DE .DE
.PP .PP
The \fIconstant-expression\fP in #\f5if\fP and #\f5elif\fP control lines The \fIconstant-expression\fP in #\f(CWif\fP and #\f(CWelif\fP control lines
may contain the construction may contain the construction
.DS .DS
.ft 5 .ft CW
defined(\fIidentifier\fP) defined(\fIidentifier\fP)
.ft .ft
.DE .DE
which is replaced by \f51\fP, if \fIidentifier\fP has been #\f5defined\fP, which is replaced by \f(CW1\fP, if \fIidentifier\fP has been #\f(CWdefined\fP,
and by \f50\fP, if not. and by \f(CW0\fP, if not.
.PP .PP
Comments in skipped lines are interpreted as such. Comments in skipped lines are interpreted as such.
.SH .SH
@ -298,7 +298,7 @@ Comments in skipped lines are interpreted as such.
.PP .PP
Line directives may occur in the following forms: Line directives may occur in the following forms:
.DS .DS
.ft 5 .ft CW
#line \fIconstant\fP #line \fIconstant\fP
#line \fIconstant\fP "\fIfilename\fP" #line \fIconstant\fP "\fIfilename\fP"
#\fIconstant\fP #\fIconstant\fP
@ -326,7 +326,7 @@ global variable initialization value
.IP \(bu .IP \(bu
enum-value specifier enum-value specifier
.IP \(bu .IP \(bu
truth value in \f5#if\fP control line truth value in \f(CW#if\fP control line
.LP .LP
.PP .PP
Constant integral expressions are compile-time evaluated while an effort Constant integral expressions are compile-time evaluated while an effort
@ -354,12 +354,12 @@ Prepend \fIpath\fR to the list of include directories.
To put the directories "include", "sys/h" and "util/h" into the To put the directories "include", "sys/h" and "util/h" into the
include directory list in that order, the user has to specify include directory list in that order, the user has to specify
.DS .DS
.ft 5 .ft CW
-Iinclude -Isys/h -Iutil/h -Iinclude -Isys/h -Iutil/h
.ft R .ft R
.DE .DE
An empty \fIpath\fP causes the standard include An empty \fIpath\fP causes the standard include
directory (usually \f5/usr/include\fP) to be forgotten. directory (usually \f(CW/usr/include\fP) to be forgotten.
.IP \fB\-M\fP\fIn\fP .IP \fB\-M\fP\fIn\fP
.br .br
Set maximum significant identifier length to \fIn\fP. Set maximum significant identifier length to \fIn\fP.
@ -383,7 +383,7 @@ Create temporary files, if necessary, in directory \fIpath\fP.
Get rid of the compiler-predefined macro \fIname\fP, i.e., Get rid of the compiler-predefined macro \fIname\fP, i.e.,
consider consider
.DS .DS
.ft 5 .ft CW
#undef \fIname\fP #undef \fIname\fP
.ft R .ft R
.DE .DE
@ -416,7 +416,7 @@ Some particular flags may be recognized, others may have surprising effects.
Generate a dependency graph, reflecting the calling structure of functions. Generate a dependency graph, reflecting the calling structure of functions.
Lines of the form Lines of the form
.DS .DS
.ft 5 .ft CW
DFA: \fIcalling-function\fP: \fIcalled-function\fP DFA: \fIcalling-function\fP: \fIcalled-function\fP
.ft .ft
.DE .DE
@ -474,11 +474,11 @@ The syntax is
.RS .RS
.I enum-specifier : .I enum-specifier :
.RS .RS
\&\f5enum\fP { \fIenum-list\fP } \&\f(CWenum\fP { \fIenum-list\fP }
.br .br
\&\f5enum\fP \fIidentifier\fP { \fIenum-list\fP } \&\f(CWenum\fP \fIidentifier\fP { \fIenum-list\fP }
.br .br
\&\f5enum\fP \fIidentifier\fP \&\f(CWenum\fP \fIidentifier\fP
.RE .RE
.sp .sp
\&\fIenum-list\fP : \&\fIenum-list\fP :

View file

@ -39,35 +39,35 @@ Only one compilation unit per file is accepted.
.NH 2 .NH 2
Vocabulary and Representation (section 3) Vocabulary and Representation (section 3)
.PP .PP
The input "\f510..\fP" is parsed as two tokens: "\f510\fP" and "\f5..\fP". The input "\f(CW10..\fP" is parsed as two tokens: "\f(CW10\fP" and "\f(CW..\fP".
.PP .PP
The empty string \f5""\fP has type The empty string \f(CW""\fP has type
.DS .DS
.ft 5 .ft CW
ARRAY [0 .. 0] OF CHAR ARRAY [0 .. 0] OF CHAR
.ft P .ft P
.DE .DE
and contains one character: \f50C\fP. and contains one character: \f(CW0C\fP.
.PP .PP
When the text of a comment starts with a '\f5$\fP', it may be a pragma. When the text of a comment starts with a '\f(CW$\fP', it may be a pragma.
Currently, the following pragmas exist: Currently, the following pragmas exist:
.DS .DS
.ft 5 .ft CW
(*$F (F stands for Foreign) *) (*$F (F stands for Foreign) *)
(*$R[+|-] (Runtime checks, on or off, default on) *) (*$R[+|-] (Runtime checks, on or off, default on) *)
(*$A[+|-] (Array bound checks, on or off, default off) *) (*$A[+|-] (Array bound checks, on or off, default off) *)
(*$U (Allow for underscores within identifiers) *) (*$U (Allow for underscores within identifiers) *)
.ft P .ft P
.DE .DE
The Foreign pragma is only meaningful in a \f5DEFINITION MODULE\fP, The Foreign pragma is only meaningful in a \f(CWDEFINITION MODULE\fP,
and indicates that this and indicates that this
\f5DEFINITION MODULE\fP describes an interface to a module written in another \f(CWDEFINITION MODULE\fP describes an interface to a module written in another
language (for instance C, Pascal, or EM). language (for instance C, Pascal, or EM).
Runtime checks that can be disabled are: Runtime checks that can be disabled are:
range checks, range checks,
\f5CARDINAL\fP overflow checks, \f(CWCARDINAL\fP overflow checks,
checks when assigning a \f5CARDINAL\fP to an \f5INTEGER\fP and vice versa, checks when assigning a \f(CWCARDINAL\fP to an \f(CWINTEGER\fP and vice versa,
and checks that \f5FOR\fP-loop control-variables are not changed and checks that \f(CWFOR\fP-loop control-variables are not changed
in the body of the loop. in the body of the loop.
Array bound checks can be enabled, because many EM implementations do not Array bound checks can be enabled, because many EM implementations do not
implement the array bound checking of the EM array instructions. implement the array bound checking of the EM array instructions.
@ -75,11 +75,11 @@ When enabled, the compiler generates a check before generating an
EM array instruction. EM array instruction.
Even when underscores are enabled, they still may not start an identifier. Even when underscores are enabled, they still may not start an identifier.
.PP .PP
Constants of type \f5LONGINT\fP are integers with a suffix letter \f5D\fP Constants of type \f(CWLONGINT\fP are integers with a suffix letter \f(CWD\fP
(for instance \f51987D\fP). (for instance \f(CW1987D\fP).
Constants of type \f5LONGREAL\fP have suffix \f5D\fP if a scale factor is missing, Constants of type \f(CWLONGREAL\fP have suffix \f(CWD\fP if a scale factor is missing,
or have \f5D\fP in place of \f5E\fP in the scale factor (f.i. \f51.0D\fP, or have \f(CWD\fP in place of \f(CWE\fP in the scale factor (f.i. \f(CW1.0D\fP,
\f50.314D1\fP). \f(CW0.314D1\fP).
This addition was made, because there was no way to indicate long constants, This addition was made, because there was no way to indicate long constants,
and also because the addition was made in Wirth's newest Modula-2 compiler. and also because the addition was made in Wirth's newest Modula-2 compiler.
.NH 2 .NH 2
@ -99,28 +99,28 @@ Each operand of a constant expression must be a constant:
a string, a number, a set, an enumeration literal, a qualifier denoting a a string, a number, a set, an enumeration literal, a qualifier denoting a
constant expression, a typetransfer with a constant argument, or constant expression, a typetransfer with a constant argument, or
one of the standard procedures one of the standard procedures
\f5ABS\fP, \f5CAP\fP, \f5CHR\fP, \f5LONG\fP, \f5MAX\fP, \f5MIN\fP, \f(CWABS\fP, \f(CWCAP\fP, \f(CWCHR\fP, \f(CWLONG\fP, \f(CWMAX\fP, \f(CWMIN\fP,
\f5ODD\fP, \f5ORD\fP, \f(CWODD\fP, \f(CWORD\fP,
\f5SIZE\fP, \f5SHORT\fP, \f5TSIZE\fP, or \f5VAL\fP, with constant argument(s); \f(CWSIZE\fP, \f(CWSHORT\fP, \f(CWTSIZE\fP, or \f(CWVAL\fP, with constant argument(s);
\f5TSIZE\fP and \f5SIZE\fP may also have a variable as argument. \f(CWTSIZE\fP and \f(CWSIZE\fP may also have a variable as argument.
.PP .PP
Floating point expressions are never evaluated compile time, because Floating point expressions are never evaluated compile time, because
the compiler basically functions as a cross-compiler, and thus cannot the compiler basically functions as a cross-compiler, and thus cannot
use the floating point instructions of the machine on which it runs. use the floating point instructions of the machine on which it runs.
Also, \f5MAX(REAL)\fP and \f5MIN(REAL)\fP are not allowed. Also, \f(CWMAX(REAL)\fP and \f(CWMIN(REAL)\fP are not allowed.
.NH 2 .NH 2
Type declarations (section 6) Type declarations (section 6)
.NH 3 .NH 3
Basic types (section 6.1) Basic types (section 6.1)
.PP .PP
The type \f5CHAR\fP includes the ASCII character set as a subset. The type \f(CWCHAR\fP includes the ASCII character set as a subset.
Values range from Values range from
\f50C\fP to \f5377C\fP, not from \f50C\fP to \f5177C\fP. \f(CW0C\fP to \f(CW377C\fP, not from \f(CW0C\fP to \f(CW177C\fP.
.NH 3 .NH 3
Enumerations (section 6.2) Enumerations (section 6.2)
.PP .PP
The maximum number of enumeration literals in any one enumeration type The maximum number of enumeration literals in any one enumeration type
is \f5MAX(INTEGER)\fP. is \f(CWMAX(INTEGER)\fP.
.NH 3 .NH 3
Record types (section 6.5) Record types (section 6.5)
.PP .PP
@ -131,16 +131,16 @@ However, see section 3.
Set types (section 6.6) Set types (section 6.6)
.PP .PP
The only limitation imposed by the compiler is that the base type of the The only limitation imposed by the compiler is that the base type of the
set must be a subrange type, an enumeration type, \f5CHAR\fP, or set must be a subrange type, an enumeration type, \f(CWCHAR\fP, or
\f5BOOLEAN\fP. \f(CWBOOLEAN\fP.
So, the lower bound may be negative. So, the lower bound may be negative.
However, if a negative lower bound is used, However, if a negative lower bound is used,
the compiler gives a warning of the \fIrestricted\fP class (see the manual the compiler gives a warning of the \fIrestricted\fP class (see the manual
page of the compiler). page of the compiler).
.PP .PP
The standard type \f5BITSET\fP is defined as The standard type \f(CWBITSET\fP is defined as
.DS .DS
.ft 5 .ft CW
TYPE BITSET = SET OF [0 .. 8*SIZE(INTEGER)-1]; TYPE BITSET = SET OF [0 .. 8*SIZE(INTEGER)-1];
.ft P .ft P
.DE .DE
@ -152,22 +152,22 @@ Operators (section 8.2)
Arithmetic operators (section 8.2.1) Arithmetic operators (section 8.2.1)
.PP .PP
The Report does not specify the priority of the unary The Report does not specify the priority of the unary
operators \f5+\fP or \f5-\fP: operators \f(CW+\fP or \f(CW-\fP:
It does not specify whether It does not specify whether
.DS .DS
.ft 5 .ft CW
- 1 + 1 - 1 + 1
.ft P .ft P
.DE .DE
means means
.DS .DS
.ft 5 .ft CW
- (1 + 1) - (1 + 1)
.ft P .ft P
.DE .DE
or or
.DS .DS
.ft 5 .ft CW
(-1) + 1 (-1) + 1
.ft P .ft P
.DE .DE
@ -189,8 +189,8 @@ Our compiler certainly chooses an evaluation order, but it is explicitly
left undefined. Therefore, programs that depend on it, may cease to left undefined. Therefore, programs that depend on it, may cease to
work later. work later.
.PP .PP
The types \f5INTEGER\fP and \f5CARDINAL\fP are assignment-compatible with The types \f(CWINTEGER\fP and \f(CWCARDINAL\fP are assignment-compatible with
\f5LONGINT\fP, and \f5REAL\fP is assignment-compatible with \f5LONGREAL\fP. \f(CWLONGINT\fP, and \f(CWREAL\fP is assignment-compatible with \f(CWLONGREAL\fP.
.NH 3 .NH 3
Case statements (section 9.5) Case statements (section 9.5)
.PP .PP
@ -198,13 +198,13 @@ The size of the type of the case-expression must be less than or equal to
the word-size. the word-size.
.PP .PP
The Report does not specify what happens if the value of the case-expression The Report does not specify what happens if the value of the case-expression
does not occur as a label of any case, and there is no \f5ELSE\fP-part. does not occur as a label of any case, and there is no \f(CWELSE\fP-part.
In our implementation, this results in a runtime error. In our implementation, this results in a runtime error.
.NH 3 .NH 3
For statements (section 9.8) For statements (section 9.8)
.PP .PP
The Report does not specify the legal types for a control variable. The Report does not specify the legal types for a control variable.
Our implementation allows the basic types (except \f5REAL\fP), Our implementation allows the basic types (except \f(CWREAL\fP),
enumeration types, and subranges. enumeration types, and subranges.
A runtime warning is generated when the value of the control variable A runtime warning is generated when the value of the control variable
is changed by the statement sequence that forms the body of the loop, is changed by the statement sequence that forms the body of the loop,
@ -222,33 +222,33 @@ occurs.
.NH 3 .NH 3
Standard procedures (section 10.2) Standard procedures (section 10.2)
.PP .PP
Our implementation supports \f5NEW\fP and \f5DISPOSE\fP Our implementation supports \f(CWNEW\fP and \f(CWDISPOSE\fP
for backwards compatibility, for backwards compatibility,
but issues warnings for their use. However, see section 3. but issues warnings for their use. However, see section 3.
.PP .PP
Also, some new standard procedures were added, similar to the new standard Also, some new standard procedures were added, similar to the new standard
procedures in Wirth's newest compiler: procedures in Wirth's newest compiler:
.IP \- .IP \-
\f5LONG\fP converts an argument of type \f5INTEGER\fP or \f5REAL\fP to the \f(CWLONG\fP converts an argument of type \f(CWINTEGER\fP or \f(CWREAL\fP to the
types \f5LONGINT\fP or \f5LONGREAL\fP. types \f(CWLONGINT\fP or \f(CWLONGREAL\fP.
.IP \- .IP \-
\f5SHORT\fP performs the inverse transformation, without range checks. \f(CWSHORT\fP performs the inverse transformation, without range checks.
.IP \- .IP \-
\f5FLOATD\fP is analogous to \f5FLOAT\fP, but yields a result of type \f(CWFLOATD\fP is analogous to \f(CWFLOAT\fP, but yields a result of type
\f5LONGREAL\fP. \f(CWLONGREAL\fP.
.IP \- .IP \-
\f5TRUNCD\fP is analogous to \f5TRUNC\fP, but yields a result of type \f(CWTRUNCD\fP is analogous to \f(CWTRUNC\fP, but yields a result of type
\f5LONGINT\fP. \f(CWLONGINT\fP.
.NH 2 .NH 2
System-dependent facilities (section 12) System-dependent facilities (section 12)
.PP .PP
The type \f5BYTE\fP is added to the \f5SYSTEM\fP module. The type \f(CWBYTE\fP is added to the \f(CWSYSTEM\fP module.
It occupies a storage unit of 8 bits. It occupies a storage unit of 8 bits.
\f5ARRAY OF BYTE\fP has a similar effect to \f5ARRAY OF WORD\fP, but is \f(CWARRAY OF BYTE\fP has a similar effect to \f(CWARRAY OF WORD\fP, but is
safer. In some obscure cases the \f5ARRAY OF WORD\fP mechanism does not quite safer. In some obscure cases the \f(CWARRAY OF WORD\fP mechanism does not quite
work properly. work properly.
.PP .PP
The procedure \f5IOTRANSFER\fP is not implemented. The procedure \f(CWIOTRANSFER\fP is not implemented.
.NH 1 .NH 1
Backwards compatibility Backwards compatibility
.PP .PP