chiark / gitweb /
src/: Abolish the distinction between different kinds of initializers.
[sod] / src / sod-module.5
index 2a1123f6cca4f603babc94064c9eecbc10147682..bdb13e5ee52302c635f6542b202a1590c920bbe5 100644 (file)
@@ -480,7 +480,7 @@ any character other than newline
 .B code
 .I identifier
 .B
-.I identifier
+.I item-name
 .RI [ constraints ]
 .B {
 .I c-fragment
@@ -494,7 +494,15 @@ any character other than newline
 .br
 .I constraint
 ::=
+.IR item-name \*+
+.br
+.I item-name
+::=
+.I identifier
+|
+.B (
 .IR identifier \*+
+.B )
 .
 .SS Class definitions
 .I
@@ -565,24 +573,22 @@ class-definition
 .br
 .I initializer
 ::=
-.B {
-.I c-fragment
-.B }
-|
 .I c-fragment
 .br
 .I message-item
 ::=
 .<
 .IR declaration-specifier \*+
-.I simple-declarator
+.IR keyword-declarator [ identifier ]
+.<
 .RI [ method-body ]
 .br
 .I method-item
 ::=
 .<
 .IR declaration-specifier \*+
-.IR declarator [ dotted-name ]
+.IR keyword-declarator [ dotted-name ]
+.<
 .I method-body
 .br
 .I method-body
@@ -691,6 +697,18 @@ class-definition
 |
 .B unsigned
 .|
+.B bool
+|
+.B _Bool
+.|
+.B imaginary
+|
+.B _Imaginary
+|
+.B complex
+|
+.B _Complex
+.|
 .I qualifier
 .br
 .I qualifier
@@ -705,10 +723,23 @@ class-definition
 ::=
 .I identifier
 .PP
+The following
+.IR type-name s
+are defined in the built-in module.
+.hP \*o
+.B va_list
+.hP \*o
+.B size_t
+.hP \*o
+.B ptrdiff_t
+.hP \*o
+.B wchar_t
+.PP
 Declaration specifiers may appear in any order.
 However, not all combinations are permitted.
 A declaration specifier must consist of 
-zero or more qualifiers,
+zero or more
+.IR qualifier s,
 and one of the following, up to reordering.
 .hP \*o
 .I type-name
@@ -759,36 +790,52 @@ and one of the following, up to reordering.
 .BR float ,
 .BR double ,
 .B long double
+.hP \*o
+.BR "float _Imaginary" ,
+.BR "double _Imaginary" ,
+.B "long double _Imaginary"
+.hP \*o
+.BR "float imaginary" ,
+.BR "double imaginary" ,
+.B "long double imaginary"
+.hP \*o
+.BR "float _Complex" ,
+.BR "double _Complex" ,
+.B "long double _Complex"
+.hP \*o
+.BR "float complex" ,
+.BR "double complex" ,
+.B "long double complex"
 .PP
-.IR declarator [ k ]
+.IR declarator [ k ", " a ]
 ::=
 .IR pointer \**
-.IR primary-declarator [ k ]
+.IR primary-declarator [ k ", " a ]
 .br
-.IR primary-declarator [ k ]
+.IR primary-declarator [ k ", " a ]
 ::=
 .I k
 .|
 .B (
-.IR primary-declarator [ k ]
+.IR primary-declarator [ k ", " a ]
 .B )
 .|
-.IR primary-declarator [ k ]
-.IR declarator-suffix
+.IR primary-declarator [ k ", " a ]
+.IR declarator-suffix [ a ]
 .br
 .I pointer
 ::=
 .B *
 .IR qualifier \**
 .br
-.I declarator-suffix
+.IR declarator-suffix [ a ]
 ::=
 .B [
 .I c-fragment
 .B ]
 .|
 .B (
-.I argument-list
+.I a
 .B )
 .br
 .I argument-list
@@ -807,17 +854,39 @@ and one of the following, up to reordering.
 .br
 .I argument-declarator
 ::=
-.IR declarator [ identifier " | \*e]"
+.IR declarator [ identifier " | \*e, " argument-list ]
 .br
 .I simple-declarator
 ::=
-.IR declarator [ identifier ]
+.IR declarator [ identifier ", " argument-list ]
+.br
+.I keyword-argument
+::=
+.I argument
+.RB [ =
+.IR c-fragment ]
+.br
+.I keyword-argument-list
+::=
+.I argument-list
+.B ?\&
+.I keyword-argument-list
+.br
+.I method-argument-list
+::=
+.I argument-list
+|
+.I keyword-argument-list
 .br
 .I dotted-name
 ::=
 .I identifier
 .B .\&
 .I identifier
+.br
+.IR keyword-declarator [ k ]
+::=
+.IR declarator [ k ", " method-argument-list ]
 .
 .\"--------------------------------------------------------------------------
 .SH SEE ALSO