X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/a42893dda5f4dd2b89fbfe4e497da261159225ca..12949379840101e2d65883f29c5e8f0f6de49e9c:/src/sod-module.5 diff --git a/src/sod-module.5 b/src/sod-module.5 index 86c29f8..8e21b5d 100644 --- a/src/sod-module.5 +++ b/src/sod-module.5 @@ -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,8 @@ class-definition .| .I initializer-item .| +.I initarg-item +.| .I fragment-item .| .I message-item @@ -570,13 +572,21 @@ 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 @@ -673,6 +683,10 @@ class-definition | .I identifier .| +.B < +.I plain-type +.B > +.| .B ? .I s-expression .| @@ -725,15 +739,53 @@ class-definition .B _Complex .| .I qualifier +.| +.I storage-specifier +.| +.I atomic-type .br .I qualifier ::= +.I atomic +| .B const | .B volatile | .B restrict .br +.I plain-type +::= +.IR declaration-specifier \*+ +.I abstract-declarator +.br +.I atomic-type +::= +.I +atomic +.B ( +.I plain-type +.B ) +.br +.I atomic +::= +.B atomic +| +.B _Atomic +.br +.I storage-specifier +::= +.I alignas +.B ( +.I c-fragment +.B ) +.br +.I alignas +::= +.B alignas +| +.B _Alignas +.br .I type-name ::= .I identifier @@ -755,6 +807,8 @@ However, not all combinations are permitted. A declaration specifier must consist of zero or more .IR qualifier s, +zero or more +.IR storage-specifier s, and one of the following, up to reordering. .hP \*o .I type-name @@ -867,6 +921,10 @@ and one of the following, up to reordering. .IR declaration-specifier \*+ .I argument-declarator .br +.I abstract-declarator +::= +.IR declarator "[\*e, " argument-list ] +.br .I argument-declarator ::= .IR declarator [ identifier " | \*e, " argument-list ]