[mod.std.c] mod.std.c Digest V16#2

osd@hou2d.UUCP (Orlando Sotomayor-Diaz) (05/11/86)

From: Orlando Sotomayor-Diaz (The Moderator) <cbosgd!std-c>


mod.std.c Digest            Sat, 10 May 86       Volume 16 : Issue   2

Today's Topics:
Differences from April 1985 to February 1986 Draft Standard, Explanation
 Differences from April 1985 to February 1986 Draft Standard, Part 1
----------------------------------------------------------------------

Date: Sun, 27 Apr 86 01:17:06 est
From: <ihnp4!utcsri!lsuc!msb%utcsri>
Subject: Differences from April 1985 to February 1986 Draft Standard, Explanation
To: cbosgd!std-c%utcsri

The preliminary draft proposed ANSI C Standard of April 30, 1985,
has  been  generally available for some time.  However, the X3J11
committee has produced since produced further drafts,  dated  Au-
gust  11,  1985;  November  11, 1985; and February 14, 1986.  The
last I heard another draft was going to be printed shortly.

This posting is intended for readers who  have  some  familiarity
with  the  April 1985 draft, to bring them up to date on what has
happened since then up to the February 1986 version.   It  exists
because I sent mail to Larry Rosler suggesting that it would be a
good idea, and he replied that he didn't have time to do  it  and
offered to send me all the versions if I did.

That mail exchange, incidentally, happened about Christmas  time,
and  referred  to changes up to the November draft only.  Much of
the delay since then  is  attributable  to  some  combination  of
AT&T's  mailroom in Summit, NJ; the US Postal Service; and Canada
Post.  The rest is attributable to my shortage of spare  time  to
do  this  in; if I'd known how long it was going to take, I would
not have volunteered.

This posting covers parts A-C of the document; that is, there  is
nothing  about  the libraries.  I hope to do another one covering
the rest of the document shortly.


Now, what you see here does not include all  of  the  differences
between  the  versions.  I have generally suppressed changes that
appeared to provide only a clearer wording.  Some  of  these  are
fairly substantial in extent, with sentences and paragraphs being
rearranged.  On the other hand, I have included  all  changes  to
the language and to the terminology for talking about it ...  un-
less, of course, I missed some.

The changes are cited in the order of their appearance in the new
version, with a few slight exceptions to group related matter.  I
don't give a lot of context for each one, to keep the  length  of
this  document  manageable.   Never  assume that you are seeing a
complete paragraph.  However, where I have elided important  text
I have placed an ellipsis (...).

For changes that affect a small  part  of  a  paragraph,  I  have
adopted the notation {old text --> new text}, which is simply run
in line.  Each line containing the start of  at  least  one  such
change is starred in the left margin.  The old or new text may be
null: thus, the change to section A.1 consists of the deletion of
the  word  "preliminary".  In such a paragraph, the words not en-
closed in braces may be unchanged from  April  1985  to  February
1986, or they have have changed in a minor way in which case I am
showing the new version.

For larger changes, I give complete paragraphs or blocks of para-
graphs  in  old  and  new forms.  The notation "<--O" in the left
margin means that this paragraph has been  deleted  or  replaced;
"N-->" refers to its replacement or an added paragraph.

Since the typographical changes of the actual  document  are  not
available  here,  I have rendered some of them in punctuation and
omitted others.  (In particular, "quotation marks" in this  arti-
cle  more  often  than  not represent italics in the original and
thus a definition of a term.)

Paragraphs marked Remark are mine.

Mark Brader

------------------------------

Date: Sun, 27 Apr 86 01:17:06 est
From: <ihnp4!utcsri!lsuc!msb%utcsri>
Subject: Differences from April 1985 to February 1986 Draft Standard, Part 1
To: cbosgd!std-c%utcsri

# Title

N-->   Draft Proposed American National Standard for Information Systems
N-->   -- Programming Language C



# A.1 Foreword

  *    This {preliminary -->} draft proposed American National  Standard
       describes the C programming language.



# A.6 Definitions of terms

<--O   Object -- something that has a value.

N-->   Object --  a  region  of  storage,  the  contents  of  which  can
N-->   represent values.



# A.6 Definitions of terms

       It need not be possible to express the address of each individual
  *    bit {--> of an object}.

  *    ...  It {must --> shall} be possible to express  the  address  of
  *    each individual byte {--> of an object} uniquely.

Remark: The word "must" seems to have been banished from the  do-
cument.  Further instances of this substitution will not be indi-
cated, even if the sentence is being cited for another change.



# A.6 Definitions of terms

N-->   Terms explicitly defined in this Standard are not to be  presumed
N-->   to refer implicitly to similar terms defined elsewhere.



# A.7 Compliance

  *    A "comforming freestanding implementation" {must -->  shall}  ...
  *    provide  the  standard  headers  <limits.h>  {-->  and <float.h>}
       specified in Section D (library).

<--O   A conforming implementation may have extensions, which  must  not
<--O   alter  the  behavior  of  a  strictly  conforming program (except
<--O   perhaps by requiring the replacement of identifiers that conflict
<--O   with new keywords or library symbols).

N-->   A conforming implementation may have extensions (including  addi-
N-->   tional  library  functions),  provided  they  do  not  alter  the
N-->   behavior of a strictly conforming program.



# {--> A.8 Future directions}

N-->   With the introduction of new devices and extended character sets,
N-->   new  features  may  be  added  to  the Standard.  Sections in the
N-->   Language and Library parts warn implementors and  programmers  of
N-->   usages  which,  though valid in themselves, may conflict with fu-
N-->   ture additions.

N-->   Certain features are "deprecated", which means that their use  in
N-->   new  programming  is discouraged.  They are retained in the Stan-
N-->   dard because  of  their  widespread  use  in  existing  programs.
N-->   Deprecated  features  may be withdrawn in future revisions of the
N-->   Standard.

Remark: With a new section A.8, the old  A.8  (Difference  marks)
becomes A.9.



# B.1.1.2 Translation phases

Remark: I'm showing the entire section this time.

       The precedence among the syntax rules of translation is specified
       by  the  following  stages.  An implementation is not required to
  *    mimic this separation into phases.  {Each phase requires  a  com-
       plete  parse  at  its level, that is, it may not terminate with a
       partial non-terminal. -->}

       1. Physical source text file characters are mapped to the  source
       character  set  (introducing  new-line characters for end-of-line
       indicators) if necessary.  Trigraph  sequences  are  replaced  by
       corresponding single-character internal representations.

       2. Each instance of  a  new-line  character  and  an  immediately
       preceding  backslash  character  is  deleted,  splicing  physical
  *    source lines to form logical source lines.  {--> A file shall not
       end  in  a backslash character immediately followed by a new-line
       character.}

       3. Character constants, string literals,  and  the  arguments  to
       #include preprocessing directives are tokenized.  Each comment is
  *    replaced by one space character.  {--> A file may not  end  in  a
       partial token.}

       4. The source text is completely tokenized.  New-line  characters
  *    {become  new-line  tokens  -->  are retained}.  {Each sequence of
       other white-space characters becomes a single white-space  token;
       alternatively,  each other white-space character becomes a unique
       token.  --> Whether each sequence of other white-space characters
       is  retained or is replaced by one space character is implementa-
       tion defined.}

  *    5. {The source text is preprocessed. --> Preprocessing directives
       are  executed.}  A  #include  preprocessing  directive causes the
  *    named file to be processed from phase 1,  recursively.   {Prepro-
       cessing  interprets  new-line  tokens  as --> New-line characters
       are} syntactically significant; "left-parenthesis not preceded by
       white-space" is syntactically significant to the #define grammar.

<--O   6. The preprocessing concatenation operation is applied, and  the
<--O   full  source  is  retokenized.  Adjacent string literals are con-
<--O   catenated.  New-line characters are treated  the  same  as  other
<--O   white-space characters.

N-->   6. White-space characters separating tokens are no longer  signi-
N-->   ficant.   The preprocessing concatenation operator ## is applied.
N-->   Adjacent string literals are concatenated.

       7. The  remaining  tokens  are  syntactically  and   semantically
       analyzed and translated.

  *    8. All external {data --> object}  and  function  references  are
       resolved.   Library  components may be linked to satisfy external
       references to functions and objects not defined  in  the  current
       translation.  All such translator output is collected into a pro-
       gram image which contains information needed for execution in its
       execution environment.

Remark: "Data" is another word that seems to have  been  banished
throughout the document.

------------------------------

End of mod.std.c Digest - Sat, 10 May 86 18:09:59 EDT
******************************
USENET -> posting only through cbosgd!std-c.
ARPA -> ... through cbosgd!std-c@BERKELEY.ARPA (NOT to INFO-C)
In all cases, you may also reply to the author(s) above.