chiark / gitweb /
doc/concepts.tex: Typeset method rĂ´le names as identifiers.
[sod] / src / sod-module.5
index 18375246943fa78275580323691a2b5c76af1c05..8e21b5d438ded80adebb574086aa32002a03ff52 100644 (file)
@@ -106,7 +106,7 @@ are variables which vary over all nonterminal and terminal symbols,
 and the variables may also appear on the right-hand side
 in place of a nonterminal.
 Such a rule stands for a family of rules,
-in each variable is replaced by
+in which each variable is replaced by
 each possible simple nonterminal or terminal symbol.
 .PP
 The letter \*e denotes the empty nonterminal
@@ -542,6 +542,10 @@ class-definition
 .|
 .I initializer-item
 .|
+.I initarg-item
+.|
+.I fragment-item
+.|
 .I message-item
 .|
 .I method-item
@@ -568,29 +572,48 @@ class-definition
 .I slot-initializer
 ::=
 .I dotted-name
-.B =
-.I initializer
+.RB [ =
+.IR initializer ]
 .br
 .I initializer
 ::=
+.I c-fragment
+.br
+.I initarg-item
+::=
+.<
+.B initarg
+.IR declaration-specifier \*+
+.IR list [ init-declarator ]
+.B ;
+.br
+.I fragment-item
+::=
+.I fragment-kind
 .B {
 .I c-fragment
 .B }
+.br
+.I fragment-kind
+::=
+.B init
 |
-.I c-fragment
+.B teardown
 .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
@@ -660,6 +683,10 @@ class-definition
 |
 .I identifier
 .|
+.B <
+.I plain-type
+.B >
+.|
 .B ?
 .I s-expression
 .|
@@ -727,13 +754,17 @@ class-definition
 |
 .B restrict
 .br
+.I plain-type
+::=
+.IR declaration-specifier \*+
+.I abstract-declarator
+.br
 .I atomic-type
 ::=
 .I
 atomic
 .B (
-.IR declaration-specifier \*+
-.I abstract-declarator
+.I plain-type
 .B )
 .br
 .I atomic
@@ -845,35 +876,35 @@ and one of the following, up to reordering.
 .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
@@ -892,21 +923,43 @@ and one of the following, up to reordering.
 .br
 .I abstract-declarator
 ::=
-.IR declarator [\*e]
+.IR declarator "[\*e, " argument-list ]
 .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