CVS difference for arm/source/02.mss
--- arm/source/02.mss 2000/05/29 21:33:47 1.17
+++ arm/source/02.mss 2000/08/03 05:37:36 1.18
@@ -1,14 +1,14 @@
@Part(02, Root="ada.mss")
-@Comment{$Date: 2000/05/29 21:33:47 $}
+@Comment{$Date: 2000/08/03 05:37:36 $}
@LabeledSection{Lexical Elements}
@Comment{$Source: e:\\cvsroot/ARM/Source/02.mss,v $}
-@Comment{$Revision: 1.17 $}
+@Comment{$Revision: 1.18 $}
@begin{Intro}
@redundant[The text of a program consists of the texts of one or more
-@nt<compilation>s. The text of a @nt<compilation> is a sequence of
+@nt<compilation>s. The text of a @nt<compilation> is a sequence of
lexical elements, each composed of characters; the rules of
composition are given in this section.
@nt{Pragma}s, which provide certain information for the compiler, are also
@@ -74,7 +74,9 @@
the text of an Ada program is not specified.
@PDefn{unspecified}
-The categories of characters are defined as follows:
+@begin{Leading}
+@keepnext@;The categories of characters are defined as follows:
+@end{Leading}
@begin{Description}
@Defn{identifier_letter}@nt<identifier_letter> @\@nt{upper_case_identifier_letter} | @nt{lower_case_identifier_letter}
@begin{Discussion}
@@ -84,10 +86,10 @@
@end{Discussion}
@Defn{upper_case_identifier_letter}@nt<upper_case_identifier_letter> @\Any character of Row 00 of ISO 10646 BMP whose
-name begins ``Latin Capital Letter''.
+name begins @lquotes@;Latin Capital Letter@rquotes@;.
@Defn{lower_case_identifier_letter}@nt<lower_case_identifier_letter> @\Any character of Row 00 of ISO 10646 BMP whose
-name begins ``Latin Small Letter''.
+name begins @lquotes@;Latin Small Letter@rquotes@;.
@begin{Honest}
The above rules do not include the ligatures
@@ -100,7 +102,7 @@
@Defn{digit}@nt<digit> @\One of the characters 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9.
@Defn{space_character}@nt<space_character> @\The character of ISO
-10646 BMP named ``Space''.
+10646 BMP named @lquotes@;Space@rquotes@;.
@Defn{special_character}@nt<special_character> @\Any character of
the ISO 10646 BMP that is not reserved for a control function, and
@@ -124,6 +126,7 @@
@IndexSeeAlso{Term=[control character],See=(other_control_function)}
@end{Description}
+@begin{Leading}
@Defn{names of @nt{special_character}s}
@Defn2{Term=[special_character],Sec=(names)}
The following names are used when referring to certain
@@ -158,8 +161,9 @@
@Defn{right square bracket}
@Defn{left curly bracket}
@Defn{right curly bracket}
+@end{Leading}
@begin{Discussion}
-These are the ones that play a special role in the syntax of Ada 9X,
+These are the ones that play a special role in the syntax of Ada 95,
or in the syntax rules;
we don't bother to define names for all characters.
The first name given is the name from ISO 10646-1; the subsequent
@@ -210,7 +214,7 @@
@begin{Ramification}
If an implementation supports other character sets,
it defines which characters fall into each category,
-such as ``@nt{identifier_letter},''
+such as @lquotes@;@nt{identifier_letter},@rquotes@;
and what the corresponding rules of this section are,
such as which characters are allowed in the text of a program.
@end{Ramification}
@@ -242,7 +246,7 @@
@end{Notes}
@begin{Extend83}
-Ada 9X allows 8-bit and 16-bit characters,
+Ada 95 allows 8-bit and 16-bit characters,
as well as implementation-specified character sets.
@end{Extend83}
@@ -258,7 +262,7 @@
@nt{Special_character} is expanded to include Ada 83's
@nt{other_special_character}, as well as new 8-bit characters not
present in Ada 83.
-Note that the term ``basic letter'' is used
+Note that the term @lquotes@;basic letter@rquotes@; is used
in @RefSec{Character Handling}
to refer to letters without diacritical marks.
@@ -295,14 +299,16 @@
However, a sequence of one or more @nt<format_effector>s other
than character tabulation (HT) signifies at least one end of line.
+@begin{Leading}
@Defn{separator}
@Redundant[In some cases an explicit @i(separator) is required
to separate adjacent lexical elements.]
A separator is
any of a space character, a format
effector, or the end of a line, as follows:
+@end{Leading}
@begin(Discussion)
-It might be useful to define ``white space'' and use it here.
+It might be useful to define @lquotes@;white space@rquotes@; and use it here.
@end(Discussion)
@begin{Itemize}
A space character is a separator except within a @nt{comment}, a
@@ -340,16 +346,18 @@
@nt{string_literal}, @nt{character_literal}, or
@nt{numeric_literal}.
+@begin{Leading}
The following names are used when referring to compound
delimiters:
+@end{Leading}
@begin{Display}
@TabClear()@TabSet(P11)delimiter @\name
@comment{Blank line}
=> @\arrow
.. @\double dot
** @\double star, exponentiate
- := @\assignment (pronounced: ``becomes'')
- /= @\inequality (pronounced: ``not equal'')
+ := @\assignment (pronounced: @lquotes@;becomes@rquotes@;)
+ /= @\inequality (pronounced: @lquotes@;not equal@rquotes@;)
>= @\greater than or equal
<= @\less than or equal
<< @\left label bracket
@@ -412,7 +420,9 @@
@end{ImplPerm}
@begin{Examples}
-@i{Examples of identifiers:}
+@begin{Leading}
+@keepnext@;@i{Examples of identifiers:}
+@end{Leading}
@begin{Display}
Count X Get_Symbol Ethelyn Marion
@Comment{Blank line}
@@ -500,7 +510,9 @@
@end{StaticSem}
@begin{Examples}
-@i{Examples of decimal literals:}
+@begin{Leading}
+@keepnext@;@i{Examples of decimal literals:}
+@end{Leading}
@begin{Display}
@tabclear()@tabset(P31)
12 0 1E6 123_456 @\--@i{ integer literals}
@@ -572,7 +584,9 @@
@end{StaticSem}
@begin{Examples}
-@i{Examples of based literals:}
+@begin{Leading}
+@keepnext@;@i{Examples of based literals:}
+@end{Leading}
@begin{Display}
@tabclear()@tabset(P16, P45)
2#1111_1111# @\16#FF# 016#0ff# @\--@i{ integer literals of value 255}
@@ -600,13 +614,15 @@
@begin{Notes}
A @nt{character_literal} is an enumeration literal
-of a character type. See @RefSecNum(Character Types).
+of a character type. See @RefSecNum(Character Types).
@end{Notes}
@begin{Examples}
-@i{Examples of character literals:}
+@begin{Leading}
+@keepnext@;@i{Examples of character literals:}
+@end{Leading}
@begin{Display}
-'A'@ @ @ @ @ '*'@ @ @ @ @ '''@ @ @ @ @ '@ '
+'A'@ @ @ @ @ '*'@ @ @ @ @ @rquotes@;'@ @ @ @ @ '@ '
@end{Display}
@end{Examples}
@@ -621,7 +637,7 @@
@begin{Intro}
@redundant[A @nt<string_literal> is formed by a sequence of graphic characters
(possibly none) enclosed between two quotation marks used as
-string brackets. They are used to represent @nt<operator_symbol>s
+string brackets. They are used to represent @nt<operator_symbol>s
(see @RefSecNum(Subprogram Declarations)), values of a string type
(see @RefSecNum(Literals)), and array subaggregates
(see @RefSecNum(Array Aggregates)).
@@ -661,7 +677,9 @@
@end{Notes}
@begin{Examples}
-@i{Examples of string literals:}
+@begin{Leading}
+@keepnext@;@i{Examples of string literals:}
+@end{Leading}
@begin{Display}
@tabclear()@tabset(P16)
"Message of the day:"
@@ -700,12 +718,14 @@
@begin{StaticSem}
The presence or absence of @nt{comment}s has no influence on whether a program
-is legal or illegal. Furthermore, @nt{comment}s do not influence the meaning
+is legal or illegal. Furthermore, @nt{comment}s do not influence the meaning
of a program; their sole purpose is the enlightenment of the human reader.
@end{StaticSem}
@begin{Examples}
-@i{Examples of comments:}
+@begin{Leading}
+@keepnext@;@i{Examples of comments:}
+@end{Leading}
@begin{Display}
--@i{ the last sentence above echoes the Algol 68 report }
@comment{Blank line}
@@ -744,7 +764,9 @@
associations with a
@i{pragma_argument_}@nt<identifier>.
-@nt{Pragma}s are only allowed at the following places in a program:
+@begin{SyntaxTextLeading}
+@keepnext@;@nt{Pragma}s are only allowed at the following places in a program:
+@end{SyntaxTextLeading}
@begin{Itemize}
After a semicolon delimiter, but not within a
@nt{formal_part}
@@ -828,12 +850,12 @@
do inlining.
Obviously, the contradiction needs to be resolved one way or the
-other. The reasons for resolving it this way are: The
+other. The reasons for resolving it this way are: The
implementation is simple @em the compiler can just ignore the
@nt{pragma} altogether.
The interpretation of constructs appearing inside
-implementation-defined @nt{pragma}s is implementation defined. For
-example: ``@key[pragma] Mumble(X);''. If the current implementation has
+implementation-defined @nt{pragma}s is implementation defined. For
+example: @lquotes@;@key[pragma] Mumble(X);@rquotes@;. If the current implementation has
never heard of Mumble, then it doesn't know whether X is a name,
an expression, or an identifier specific to the pragma Mumble.
@end{Ramification}
@@ -883,7 +905,7 @@
implementation defines them to be evaluated in the case of an
implementation-defined @nt{pragma}).
-The ``unless otherwise specified'' part allows us (and
+The @lquotes@;unless otherwise specified@rquotes@; part allows us (and
implementations) to make exceptions, so a @nt{pragma} can contain an
expression that is not evaluated.
Note that @nt{pragma}s in @nt{type_definition}s may contain expressions
@@ -939,7 +961,7 @@
the program should still be legal, and should still have the same
semantics.
@begin{Ramification}
-Note that ``semantics'' is not the same as ``effect;''
+Note that @lquotes@;semantics@rquotes@; is not the same as @lquotes@;effect;@rquotes@;
as explained in
@RefSecNum{Conformity of an Implementation With the Standard},
the semantics defines a set of possible effects.
@@ -953,9 +975,11 @@
this paragraph is merely a recommendation.
@end{Ramification}
+@begin{Leading}
Normally,
an implementation should not define pragmas that can make an illegal
program legal, except as follows:
+@end{Leading}
@begin(Itemize)
A @nt<pragma> used to complete a declaration, such as a @nt{pragma} Import;
@@ -982,8 +1006,8 @@
@end{ImplAdvice}
@begin{Incompatible83}
-In Ada 83, ``bad'' @nt{pragma}s are ignored.
-In Ada 9X, they are illegal,
+In Ada 83, @lquotes@;bad@rquotes@; @nt{pragma}s are ignored.
+In Ada 95, they are illegal,
except in the case where the name of the @nt{pragma} itself
is not recognized by the implementation.
@end{Incompatible83}
@@ -997,13 +1021,13 @@
the program.
This was always true in Ada 83 (since it was not explicitly forbidden by
RM83), but it was not clear, because there was no definition of
-``executing'' or ``elaborating'' a @nt{pragma}.
+@lquotes@;executing@rquotes@; or @lquotes@;elaborating@rquotes@; a @nt{pragma}.
@end{DiffWord83}
@begin{Syntax}
-@begin{SyntaxText}
-The forms of List, Page, and Optimize @nt{pragma}s are as follows:
-@end{SyntaxText}
+@begin{SyntaxTextLeading}
+@keepnext@;The forms of List, Page, and Optimize @nt{pragma}s are as follows:
+@end{SyntaxTextLeading}
@PragmaSyn`@key{pragma} @prag(List)(@Syn2{identifier});'
@@ -1018,7 +1042,7 @@
@begin{Ramification}
The language-defined pragmas
are supported by every implementation,
-although ``supporting'' some of
+although @lquotes@;supporting@rquotes@; some of
them (for example, Inline) requires nothing more than checking the
arguments, since they act only as advice to the implementation.
@end{Ramification}
@@ -1029,22 +1053,22 @@
@begin{StaticSem}
A @nt{pragma} List
takes one of the @nt{identifier}s On or Off as the single
-argument. This pragma is allowed anywhere a
-@nt{pragma} is allowed. It specifies that listing of the
+argument. This pragma is allowed anywhere a
+@nt{pragma} is allowed. It specifies that listing of the
compilation is to be continued or suspended until a List
@nt{pragma} with the opposite argument is given within the
-same compilation. The @nt{pragma} itself is always listed if
+same compilation. The @nt{pragma} itself is always listed if
the compiler is producing a listing.
A @nt{pragma} Page
is allowed anywhere a
-@nt{pragma} is allowed. It specifies that the program text
+@nt{pragma} is allowed. It specifies that the program text
which follows the @nt{pragma} should start on a new page (if
the compiler is currently producing a listing).
A @nt{pragma} Optimize
takes one of the @nt{identifier}s Time, Space, or Off as the
-single argument. This @nt{pragma} is allowed anywhere a @nt<pragma>
+single argument. This @nt{pragma} is allowed anywhere a @nt<pragma>
is allowed, and it applies until the end of the immediately enclosing
declarative region,
or for a @nt{pragma} at the place of a @nt{compilation_unit},
@@ -1061,7 +1085,7 @@
versus a shared-generic-body model.
-We don't define what constitutes an ``optimization''
+We don't define what constitutes an @lquotes@;optimization@rquotes@;
@em in fact, it cannot be formally defined in the context of Ada.
One compiler might call something an optional optimization,
whereas another compiler might consider that same thing
@@ -1073,7 +1097,9 @@
@end{StaticSem}
@begin{Examples}
-@i{Examples of pragmas:}
+@begin{Leading}
+@keepnext@;@i{Examples of pragmas:}
+@end{Leading}
@begin{Example}
@key[pragma] List(Off); --@RI{ turn off listing generation}
@key[pragma] Optimize(Off); --@RI{ turn off optional optimizations}
@@ -1101,20 +1127,20 @@
@begin{Syntax}
@begin{Bundle}
-@begin{SyntaxText}
+@begin{SyntaxTextLeading}
@ChgRef{Version=[1], Kind=[Deleted]}
@Chg[New=<>,Old=<@ @;@comment{Empty paragraph to hang junk paragraph number from original RM}>]
@Defn{reserved word}
The following are the @i{reserved words}
(ignoring upper/lower case distinctions):
-@end{SyntaxText}
+@end{SyntaxTextLeading}
@begin{Discussion}
Reserved words have special meaning in the syntax.
In addition, certain reserved words are used as attribute names.
The syntactic category @nt{identifier}
- no longer allows reserved words. We have added the few reserved
+ no longer allows reserved words. We have added the few reserved
words that are legal explicitly to the syntax for @nt{attribute_reference}.
Allowing identifier to include reserved words has been a source
of confusion for some users, and differs from the way they
@@ -1237,11 +1263,11 @@
@begin{Incompatible83}
The following words are not reserved in Ada 83, but are reserved in Ada
-9X: @key{abstract}, @key{aliased}, @key{protected}, @key{requeue},
+95: @key{abstract}, @key{aliased}, @key{protected}, @key{requeue},
@key{tagged}, @key{until}.
@end{Incompatible83}
@begin{DiffWord83}
-The clause entitled ``Allowed Replacements of Characters'' has been moved
+The clause entitled @lquotes@;Allowed Replacements of Characters@rquotes@; has been moved
to @RefSec(Obsolescent Features).
@end{DiffWord83}
Questions? Ask the ACAA Technical Agent