summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-08-17 16:14:46 +0200
committerEmmanuele Bassi <ebassi@gnome.org>2022-09-21 13:26:40 +0100
commit0358eaa6245d9003f0f5b44cd4ed6d0282853c51 (patch)
tree7f010b2d91c8bd779202789659594ad41207a718
parent1122952c381424351c0350f7acf0af419d653440 (diff)
downloadgobject-introspection-0358eaa6245d9003f0f5b44cd4ed6d0282853c51.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. */