diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-01-24 12:29:17 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-01-24 12:32:39 +0900 |
| commit | a5bff442c1f09792ff7291652103048688c3a128 (patch) | |
| tree | d30d94201236471591b2af495f8ad41ae6a4cef5 /docs/c_grammar.md | |
| parent | c780cbb6acd0e0526f2d305138190392bdc8cdd7 (diff) | |
| download | ducc-a5bff442c1f09792ff7291652103048688c3a128.tar.gz ducc-a5bff442c1f09792ff7291652103048688c3a128.tar.zst ducc-a5bff442c1f09792ff7291652103048688c3a128.zip | |
feat: implement array initializer
Diffstat (limited to 'docs/c_grammar.md')
| -rw-r--r-- | docs/c_grammar.md | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/docs/c_grammar.md b/docs/c_grammar.md index 6529b2b..3bde591 100644 --- a/docs/c_grammar.md +++ b/docs/c_grammar.md @@ -9,8 +9,14 @@ * `A?`: Optional A * `{ A }+`: 1 or more repetitions of A * `{ A }*`: 0 or more repetitions of A -* `{ A | S }`: Repetition of A separated by S - * Note that trailing S is not allowed. +* `{ A | S }+`: 1 or more repetitions of A separated by S + * Equivalent to `A { S A }*` +* `{ A | S }*`: 0 or more repetitions of A separated by S + * Equivalent to `{ A | S }+?` +* `{ A |? S }+`: 1 or more repetitions of A separated by S, allowing optional trailing S + * Equivalent to `A { S A }* S?` +* `{ A |? S }*`: 1 or more repetitions of A separated by S, allowing optional trailing S + * Equivalent to `{ A |? S }+?` * `( A )`: Grouping * `# ...`: Additional constraints @@ -222,11 +228,11 @@ member-declarator: declarator? ':' constant-expr enum-specifier: - 'enum' attribute-specifier-sequence? identifier? enum-type-specifier? '{' enumerator-list ','? '}' + 'enum' attribute-specifier-sequence? identifier? enum-type-specifier? '{' enumerator-list '}' 'enum' identifier enum-type-specifier? enumerator-list: - { enumerator | ',' }+ + { enumerator |? ',' }+ enumerator: enumeration-constant attribute-specifier-sequence? ( '=' constant-expr )? @@ -317,15 +323,12 @@ typedef-name: identifier braced-initializer: - '{' ( initializer-list ','? )? '}' + '{' { designation? initializer |? ',' }* '}' initializer: assignment-expr braced-initializer -initializer-list: - { designation? initializer | ',' }+ - designation: designator-list '=' |
