Go to the first, previous, next, last section, table of contents.


4.2 Comments

Both kinds of C++ comments are allowed in Larch/C++: old C-style comments and new C++-style comments. However, if what looks like a comment starts with the at-sign (@) character, then it is considered to be the start of an annotation by Larch/C++, and not a comment. (See section 4.3 Annotations, for details.) Comments that are not annotations do not affect the meaning of a Larch/C++ specification, and should be included for the benefit of the human reader.

comment ::= C-style-comment | C++-style-comment
C-style-comment ::= /* [ C-style-body ] C-style-end
C-style-body ::= non-at-star [ non-star-slash ] ...
        | stars-non-slash [non-star-slash] ...
non-star-slash ::= non-star
        | stars-non-slash
stars-non-slash ::= * [ * ] ... non-slash
non-at-star ::= any character except @ or *
non-star ::= any character except *
non-slash ::= any character except /
C-style-end ::= [ * ] ... */
C++-style-comment ::= // newline
       | // non-at-newline [ non-newline ] ... newline
non-newline ::= any character except a newline
non-at-newline ::= any character except @ or newline

The character sequences //, //@, /*, */, /*@, and @*/ have no special meaning within a // comment and treated just like other characters. Similarly, the character sequences //, //@, /*@, and /* have no special meaning within a /* comment.

The following are an examples of comments.

// @(#)$Id: comments.lh,v 1.1 1997/01/10 23:33:17 leavens Exp $

/* a C-style comment looks like this
   and may continue for several lines */

// A C++-style comment looks like this.
// (The first line is one too.)

// a /*weird*/ case of a C++-style (//) comment
/* an equally strange // C-style (/*) comment **/
// the following is not an annotation: //@ ok?
/* and /*@ neither is this part */


Go to the first, previous, next, last section, table of contents.