summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-08-17 16:14:46 +0200
committerJan Tojnar <jtojnar@gmail.com>2022-08-17 16:49:40 +0200
commit88049f80867dc6e738bd7837ac2e6885353925da (patch)
tree063708bd0c0ad040c603449824da2e08acff0332
parent0f9327b61fb666a0a6169db8e6ce9387ad887019 (diff)
downloadgobject-introspection-88049f80867dc6e738bd7837ac2e6885353925da.tar.gz
giscanner: Support C99 designated initializers
https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html Based on https://github.com/katef/kgt/blob/c9d8ad246855c6b65e42371be7898f4073c28d18/examples/c99-grammar.iso-ebnf#L247-L252
-rw-r--r--giscanner/scannerparser.y19
1 files changed, 17 insertions, 2 deletions
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y
index e0709cde..52fc1996 100644
--- a/giscanner/scannerparser.y
+++ b/giscanner/scannerparser.y
@@ -1406,8 +1406,23 @@ initializer
;
initializer_list
- : initializer
- | initializer_list ',' initializer
+ : initializer_list_item
+ | initializer_list ',' initializer_list_item
+ ;
+
+initializer_list_item
+ : designator_list '=' initializer
+ | initializer
+ ;
+
+designator_list
+ : designator
+ | designator_list designator
+ ;
+
+designator
+ : '[' constant_expression ']'
+ | '.' identifier
;
/* A.2.3 Statements. */