1{
2  "name": "c",
3  "word": "identifier",
4  "rules": {
5    "translation_unit": {
6      "type": "REPEAT",
7      "content": {
8        "type": "SYMBOL",
9        "name": "_top_level_item"
10      }
11    },
12    "_top_level_item": {
13      "type": "CHOICE",
14      "members": [
15        {
16          "type": "SYMBOL",
17          "name": "function_definition"
18        },
19        {
20          "type": "SYMBOL",
21          "name": "linkage_specification"
22        },
23        {
24          "type": "SYMBOL",
25          "name": "declaration"
26        },
27        {
28          "type": "SYMBOL",
29          "name": "_statement"
30        },
31        {
32          "type": "SYMBOL",
33          "name": "type_definition"
34        },
35        {
36          "type": "SYMBOL",
37          "name": "_empty_declaration"
38        },
39        {
40          "type": "SYMBOL",
41          "name": "preproc_if"
42        },
43        {
44          "type": "SYMBOL",
45          "name": "preproc_ifdef"
46        },
47        {
48          "type": "SYMBOL",
49          "name": "preproc_include"
50        },
51        {
52          "type": "SYMBOL",
53          "name": "preproc_def"
54        },
55        {
56          "type": "SYMBOL",
57          "name": "preproc_function_def"
58        },
59        {
60          "type": "SYMBOL",
61          "name": "preproc_call"
62        }
63      ]
64    },
65    "preproc_include": {
66      "type": "SEQ",
67      "members": [
68        {
69          "type": "ALIAS",
70          "content": {
71            "type": "PATTERN",
72            "value": "#[ \t]*include"
73          },
74          "named": false,
75          "value": "#include"
76        },
77        {
78          "type": "FIELD",
79          "name": "path",
80          "content": {
81            "type": "CHOICE",
82            "members": [
83              {
84                "type": "SYMBOL",
85                "name": "string_literal"
86              },
87              {
88                "type": "SYMBOL",
89                "name": "system_lib_string"
90              },
91              {
92                "type": "SYMBOL",
93                "name": "identifier"
94              },
95              {
96                "type": "ALIAS",
97                "content": {
98                  "type": "SYMBOL",
99                  "name": "preproc_call_expression"
100                },
101                "named": true,
102                "value": "call_expression"
103              }
104            ]
105          }
106        },
107        {
108          "type": "STRING",
109          "value": "\n"
110        }
111      ]
112    },
113    "preproc_def": {
114      "type": "SEQ",
115      "members": [
116        {
117          "type": "ALIAS",
118          "content": {
119            "type": "PATTERN",
120            "value": "#[ \t]*define"
121          },
122          "named": false,
123          "value": "#define"
124        },
125        {
126          "type": "FIELD",
127          "name": "name",
128          "content": {
129            "type": "SYMBOL",
130            "name": "identifier"
131          }
132        },
133        {
134          "type": "FIELD",
135          "name": "value",
136          "content": {
137            "type": "CHOICE",
138            "members": [
139              {
140                "type": "SYMBOL",
141                "name": "preproc_arg"
142              },
143              {
144                "type": "BLANK"
145              }
146            ]
147          }
148        },
149        {
150          "type": "STRING",
151          "value": "\n"
152        }
153      ]
154    },
155    "preproc_function_def": {
156      "type": "SEQ",
157      "members": [
158        {
159          "type": "ALIAS",
160          "content": {
161            "type": "PATTERN",
162            "value": "#[ \t]*define"
163          },
164          "named": false,
165          "value": "#define"
166        },
167        {
168          "type": "FIELD",
169          "name": "name",
170          "content": {
171            "type": "SYMBOL",
172            "name": "identifier"
173          }
174        },
175        {
176          "type": "FIELD",
177          "name": "parameters",
178          "content": {
179            "type": "SYMBOL",
180            "name": "preproc_params"
181          }
182        },
183        {
184          "type": "FIELD",
185          "name": "value",
186          "content": {
187            "type": "CHOICE",
188            "members": [
189              {
190                "type": "SYMBOL",
191                "name": "preproc_arg"
192              },
193              {
194                "type": "BLANK"
195              }
196            ]
197          }
198        },
199        {
200          "type": "STRING",
201          "value": "\n"
202        }
203      ]
204    },
205    "preproc_params": {
206      "type": "SEQ",
207      "members": [
208        {
209          "type": "IMMEDIATE_TOKEN",
210          "content": {
211            "type": "STRING",
212            "value": "("
213          }
214        },
215        {
216          "type": "CHOICE",
217          "members": [
218            {
219              "type": "SEQ",
220              "members": [
221                {
222                  "type": "CHOICE",
223                  "members": [
224                    {
225                      "type": "SYMBOL",
226                      "name": "identifier"
227                    },
228                    {
229                      "type": "STRING",
230                      "value": "..."
231                    }
232                  ]
233                },
234                {
235                  "type": "REPEAT",
236                  "content": {
237                    "type": "SEQ",
238                    "members": [
239                      {
240                        "type": "STRING",
241                        "value": ","
242                      },
243                      {
244                        "type": "CHOICE",
245                        "members": [
246                          {
247                            "type": "SYMBOL",
248                            "name": "identifier"
249                          },
250                          {
251                            "type": "STRING",
252                            "value": "..."
253                          }
254                        ]
255                      }
256                    ]
257                  }
258                }
259              ]
260            },
261            {
262              "type": "BLANK"
263            }
264          ]
265        },
266        {
267          "type": "STRING",
268          "value": ")"
269        }
270      ]
271    },
272    "preproc_call": {
273      "type": "SEQ",
274      "members": [
275        {
276          "type": "FIELD",
277          "name": "directive",
278          "content": {
279            "type": "SYMBOL",
280            "name": "preproc_directive"
281          }
282        },
283        {
284          "type": "FIELD",
285          "name": "argument",
286          "content": {
287            "type": "CHOICE",
288            "members": [
289              {
290                "type": "SYMBOL",
291                "name": "preproc_arg"
292              },
293              {
294                "type": "BLANK"
295              }
296            ]
297          }
298        },
299        {
300          "type": "STRING",
301          "value": "\n"
302        }
303      ]
304    },
305    "preproc_if": {
306      "type": "SEQ",
307      "members": [
308        {
309          "type": "ALIAS",
310          "content": {
311            "type": "PATTERN",
312            "value": "#[ \t]*if"
313          },
314          "named": false,
315          "value": "#if"
316        },
317        {
318          "type": "FIELD",
319          "name": "condition",
320          "content": {
321            "type": "SYMBOL",
322            "name": "_preproc_expression"
323          }
324        },
325        {
326          "type": "STRING",
327          "value": "\n"
328        },
329        {
330          "type": "REPEAT",
331          "content": {
332            "type": "SYMBOL",
333            "name": "_top_level_item"
334          }
335        },
336        {
337          "type": "FIELD",
338          "name": "alternative",
339          "content": {
340            "type": "CHOICE",
341            "members": [
342              {
343                "type": "CHOICE",
344                "members": [
345                  {
346                    "type": "SYMBOL",
347                    "name": "preproc_else"
348                  },
349                  {
350                    "type": "SYMBOL",
351                    "name": "preproc_elif"
352                  }
353                ]
354              },
355              {
356                "type": "BLANK"
357              }
358            ]
359          }
360        },
361        {
362          "type": "ALIAS",
363          "content": {
364            "type": "PATTERN",
365            "value": "#[ \t]*endif"
366          },
367          "named": false,
368          "value": "#endif"
369        }
370      ]
371    },
372    "preproc_ifdef": {
373      "type": "SEQ",
374      "members": [
375        {
376          "type": "CHOICE",
377          "members": [
378            {
379              "type": "ALIAS",
380              "content": {
381                "type": "PATTERN",
382                "value": "#[ \t]*ifdef"
383              },
384              "named": false,
385              "value": "#ifdef"
386            },
387            {
388              "type": "ALIAS",
389              "content": {
390                "type": "PATTERN",
391                "value": "#[ \t]*ifndef"
392              },
393              "named": false,
394              "value": "#ifndef"
395            }
396          ]
397        },
398        {
399          "type": "FIELD",
400          "name": "name",
401          "content": {
402            "type": "SYMBOL",
403            "name": "identifier"
404          }
405        },
406        {
407          "type": "REPEAT",
408          "content": {
409            "type": "SYMBOL",
410            "name": "_top_level_item"
411          }
412        },
413        {
414          "type": "FIELD",
415          "name": "alternative",
416          "content": {
417            "type": "CHOICE",
418            "members": [
419              {
420                "type": "CHOICE",
421                "members": [
422                  {
423                    "type": "SYMBOL",
424                    "name": "preproc_else"
425                  },
426                  {
427                    "type": "SYMBOL",
428                    "name": "preproc_elif"
429                  }
430                ]
431              },
432              {
433                "type": "BLANK"
434              }
435            ]
436          }
437        },
438        {
439          "type": "ALIAS",
440          "content": {
441            "type": "PATTERN",
442            "value": "#[ \t]*endif"
443          },
444          "named": false,
445          "value": "#endif"
446        }
447      ]
448    },
449    "preproc_else": {
450      "type": "SEQ",
451      "members": [
452        {
453          "type": "ALIAS",
454          "content": {
455            "type": "PATTERN",
456            "value": "#[ \t]*else"
457          },
458          "named": false,
459          "value": "#else"
460        },
461        {
462          "type": "REPEAT",
463          "content": {
464            "type": "SYMBOL",
465            "name": "_top_level_item"
466          }
467        }
468      ]
469    },
470    "preproc_elif": {
471      "type": "SEQ",
472      "members": [
473        {
474          "type": "ALIAS",
475          "content": {
476            "type": "PATTERN",
477            "value": "#[ \t]*elif"
478          },
479          "named": false,
480          "value": "#elif"
481        },
482        {
483          "type": "FIELD",
484          "name": "condition",
485          "content": {
486            "type": "SYMBOL",
487            "name": "_preproc_expression"
488          }
489        },
490        {
491          "type": "STRING",
492          "value": "\n"
493        },
494        {
495          "type": "REPEAT",
496          "content": {
497            "type": "SYMBOL",
498            "name": "_top_level_item"
499          }
500        },
501        {
502          "type": "FIELD",
503          "name": "alternative",
504          "content": {
505            "type": "CHOICE",
506            "members": [
507              {
508                "type": "CHOICE",
509                "members": [
510                  {
511                    "type": "SYMBOL",
512                    "name": "preproc_else"
513                  },
514                  {
515                    "type": "SYMBOL",
516                    "name": "preproc_elif"
517                  }
518                ]
519              },
520              {
521                "type": "BLANK"
522              }
523            ]
524          }
525        }
526      ]
527    },
528    "preproc_if_in_field_declaration_list": {
529      "type": "SEQ",
530      "members": [
531        {
532          "type": "ALIAS",
533          "content": {
534            "type": "PATTERN",
535            "value": "#[ \t]*if"
536          },
537          "named": false,
538          "value": "#if"
539        },
540        {
541          "type": "FIELD",
542          "name": "condition",
543          "content": {
544            "type": "SYMBOL",
545            "name": "_preproc_expression"
546          }
547        },
548        {
549          "type": "STRING",
550          "value": "\n"
551        },
552        {
553          "type": "REPEAT",
554          "content": {
555            "type": "SYMBOL",
556            "name": "_field_declaration_list_item"
557          }
558        },
559        {
560          "type": "FIELD",
561          "name": "alternative",
562          "content": {
563            "type": "CHOICE",
564            "members": [
565              {
566                "type": "CHOICE",
567                "members": [
568                  {
569                    "type": "ALIAS",
570                    "content": {
571                      "type": "SYMBOL",
572                      "name": "preproc_else_in_field_declaration_list"
573                    },
574                    "named": true,
575                    "value": "preproc_else"
576                  },
577                  {
578                    "type": "ALIAS",
579                    "content": {
580                      "type": "SYMBOL",
581                      "name": "preproc_elif_in_field_declaration_list"
582                    },
583                    "named": true,
584                    "value": "preproc_elif"
585                  }
586                ]
587              },
588              {
589                "type": "BLANK"
590              }
591            ]
592          }
593        },
594        {
595          "type": "ALIAS",
596          "content": {
597            "type": "PATTERN",
598            "value": "#[ \t]*endif"
599          },
600          "named": false,
601          "value": "#endif"
602        }
603      ]
604    },
605    "preproc_ifdef_in_field_declaration_list": {
606      "type": "SEQ",
607      "members": [
608        {
609          "type": "CHOICE",
610          "members": [
611            {
612              "type": "ALIAS",
613              "content": {
614                "type": "PATTERN",
615                "value": "#[ \t]*ifdef"
616              },
617              "named": false,
618              "value": "#ifdef"
619            },
620            {
621              "type": "ALIAS",
622              "content": {
623                "type": "PATTERN",
624                "value": "#[ \t]*ifndef"
625              },
626              "named": false,
627              "value": "#ifndef"
628            }
629          ]
630        },
631        {
632          "type": "FIELD",
633          "name": "name",
634          "content": {
635            "type": "SYMBOL",
636            "name": "identifier"
637          }
638        },
639        {
640          "type": "REPEAT",
641          "content": {
642            "type": "SYMBOL",
643            "name": "_field_declaration_list_item"
644          }
645        },
646        {
647          "type": "FIELD",
648          "name": "alternative",
649          "content": {
650            "type": "CHOICE",
651            "members": [
652              {
653                "type": "CHOICE",
654                "members": [
655                  {
656                    "type": "ALIAS",
657                    "content": {
658                      "type": "SYMBOL",
659                      "name": "preproc_else_in_field_declaration_list"
660                    },
661                    "named": true,
662                    "value": "preproc_else"
663                  },
664                  {
665                    "type": "ALIAS",
666                    "content": {
667                      "type": "SYMBOL",
668                      "name": "preproc_elif_in_field_declaration_list"
669                    },
670                    "named": true,
671                    "value": "preproc_elif"
672                  }
673                ]
674              },
675              {
676                "type": "BLANK"
677              }
678            ]
679          }
680        },
681        {
682          "type": "ALIAS",
683          "content": {
684            "type": "PATTERN",
685            "value": "#[ \t]*endif"
686          },
687          "named": false,
688          "value": "#endif"
689        }
690      ]
691    },
692    "preproc_else_in_field_declaration_list": {
693      "type": "SEQ",
694      "members": [
695        {
696          "type": "ALIAS",
697          "content": {
698            "type": "PATTERN",
699            "value": "#[ \t]*else"
700          },
701          "named": false,
702          "value": "#else"
703        },
704        {
705          "type": "REPEAT",
706          "content": {
707            "type": "SYMBOL",
708            "name": "_field_declaration_list_item"
709          }
710        }
711      ]
712    },
713    "preproc_elif_in_field_declaration_list": {
714      "type": "SEQ",
715      "members": [
716        {
717          "type": "ALIAS",
718          "content": {
719            "type": "PATTERN",
720            "value": "#[ \t]*elif"
721          },
722          "named": false,
723          "value": "#elif"
724        },
725        {
726          "type": "FIELD",
727          "name": "condition",
728          "content": {
729            "type": "SYMBOL",
730            "name": "_preproc_expression"
731          }
732        },
733        {
734          "type": "STRING",
735          "value": "\n"
736        },
737        {
738          "type": "REPEAT",
739          "content": {
740            "type": "SYMBOL",
741            "name": "_field_declaration_list_item"
742          }
743        },
744        {
745          "type": "FIELD",
746          "name": "alternative",
747          "content": {
748            "type": "CHOICE",
749            "members": [
750              {
751                "type": "CHOICE",
752                "members": [
753                  {
754                    "type": "ALIAS",
755                    "content": {
756                      "type": "SYMBOL",
757                      "name": "preproc_else_in_field_declaration_list"
758                    },
759                    "named": true,
760                    "value": "preproc_else"
761                  },
762                  {
763                    "type": "ALIAS",
764                    "content": {
765                      "type": "SYMBOL",
766                      "name": "preproc_elif_in_field_declaration_list"
767                    },
768                    "named": true,
769                    "value": "preproc_elif"
770                  }
771                ]
772              },
773              {
774                "type": "BLANK"
775              }
776            ]
777          }
778        }
779      ]
780    },
781    "preproc_directive": {
782      "type": "PATTERN",
783      "value": "#[ \\t]*[a-zA-Z]\\w*"
784    },
785    "preproc_arg": {
786      "type": "TOKEN",
787      "content": {
788        "type": "PREC",
789        "value": -1,
790        "content": {
791          "type": "REPEAT1",
792          "content": {
793            "type": "PATTERN",
794            "value": ".|\\\\\\r?\\n"
795          }
796        }
797      }
798    },
799    "_preproc_expression": {
800      "type": "CHOICE",
801      "members": [
802        {
803          "type": "SYMBOL",
804          "name": "identifier"
805        },
806        {
807          "type": "ALIAS",
808          "content": {
809            "type": "SYMBOL",
810            "name": "preproc_call_expression"
811          },
812          "named": true,
813          "value": "call_expression"
814        },
815        {
816          "type": "SYMBOL",
817          "name": "number_literal"
818        },
819        {
820          "type": "SYMBOL",
821          "name": "char_literal"
822        },
823        {
824          "type": "SYMBOL",
825          "name": "preproc_defined"
826        },
827        {
828          "type": "ALIAS",
829          "content": {
830            "type": "SYMBOL",
831            "name": "preproc_unary_expression"
832          },
833          "named": true,
834          "value": "unary_expression"
835        },
836        {
837          "type": "ALIAS",
838          "content": {
839            "type": "SYMBOL",
840            "name": "preproc_binary_expression"
841          },
842          "named": true,
843          "value": "binary_expression"
844        },
845        {
846          "type": "ALIAS",
847          "content": {
848            "type": "SYMBOL",
849            "name": "preproc_parenthesized_expression"
850          },
851          "named": true,
852          "value": "parenthesized_expression"
853        }
854      ]
855    },
856    "preproc_parenthesized_expression": {
857      "type": "SEQ",
858      "members": [
859        {
860          "type": "STRING",
861          "value": "("
862        },
863        {
864          "type": "SYMBOL",
865          "name": "_preproc_expression"
866        },
867        {
868          "type": "STRING",
869          "value": ")"
870        }
871      ]
872    },
873    "preproc_defined": {
874      "type": "CHOICE",
875      "members": [
876        {
877          "type": "PREC",
878          "value": 14,
879          "content": {
880            "type": "SEQ",
881            "members": [
882              {
883                "type": "STRING",
884                "value": "defined"
885              },
886              {
887                "type": "STRING",
888                "value": "("
889              },
890              {
891                "type": "SYMBOL",
892                "name": "identifier"
893              },
894              {
895                "type": "STRING",
896                "value": ")"
897              }
898            ]
899          }
900        },
901        {
902          "type": "SEQ",
903          "members": [
904            {
905              "type": "STRING",
906              "value": "defined"
907            },
908            {
909              "type": "SYMBOL",
910              "name": "identifier"
911            }
912          ]
913        }
914      ]
915    },
916    "preproc_unary_expression": {
917      "type": "PREC_LEFT",
918      "value": 13,
919      "content": {
920        "type": "SEQ",
921        "members": [
922          {
923            "type": "FIELD",
924            "name": "operator",
925            "content": {
926              "type": "CHOICE",
927              "members": [
928                {
929                  "type": "STRING",
930                  "value": "!"
931                },
932                {
933                  "type": "STRING",
934                  "value": "~"
935                },
936                {
937                  "type": "STRING",
938                  "value": "-"
939                },
940                {
941                  "type": "STRING",
942                  "value": "+"
943                }
944              ]
945            }
946          },
947          {
948            "type": "FIELD",
949            "name": "argument",
950            "content": {
951              "type": "SYMBOL",
952              "name": "_preproc_expression"
953            }
954          }
955        ]
956      }
957    },
958    "preproc_call_expression": {
959      "type": "PREC",
960      "value": 14,
961      "content": {
962        "type": "SEQ",
963        "members": [
964          {
965            "type": "FIELD",
966            "name": "function",
967            "content": {
968              "type": "SYMBOL",
969              "name": "identifier"
970            }
971          },
972          {
973            "type": "FIELD",
974            "name": "arguments",
975            "content": {
976              "type": "ALIAS",
977              "content": {
978                "type": "SYMBOL",
979                "name": "preproc_argument_list"
980              },
981              "named": true,
982              "value": "argument_list"
983            }
984          }
985        ]
986      }
987    },
988    "preproc_argument_list": {
989      "type": "SEQ",
990      "members": [
991        {
992          "type": "STRING",
993          "value": "("
994        },
995        {
996          "type": "CHOICE",
997          "members": [
998            {
999              "type": "SEQ",
1000              "members": [
1001                {
1002                  "type": "SYMBOL",
1003                  "name": "_preproc_expression"
1004                },
1005                {
1006                  "type": "REPEAT",
1007                  "content": {
1008                    "type": "SEQ",
1009                    "members": [
1010                      {
1011                        "type": "STRING",
1012                        "value": ","
1013                      },
1014                      {
1015                        "type": "SYMBOL",
1016                        "name": "_preproc_expression"
1017                      }
1018                    ]
1019                  }
1020                }
1021              ]
1022            },
1023            {
1024              "type": "BLANK"
1025            }
1026          ]
1027        },
1028        {
1029          "type": "STRING",
1030          "value": ")"
1031        }
1032      ]
1033    },
1034    "preproc_binary_expression": {
1035      "type": "CHOICE",
1036      "members": [
1037        {
1038          "type": "PREC_LEFT",
1039          "value": 10,
1040          "content": {
1041            "type": "SEQ",
1042            "members": [
1043              {
1044                "type": "FIELD",
1045                "name": "left",
1046                "content": {
1047                  "type": "SYMBOL",
1048                  "name": "_preproc_expression"
1049                }
1050              },
1051              {
1052                "type": "FIELD",
1053                "name": "operator",
1054                "content": {
1055                  "type": "STRING",
1056                  "value": "+"
1057                }
1058              },
1059              {
1060                "type": "FIELD",
1061                "name": "right",
1062                "content": {
1063                  "type": "SYMBOL",
1064                  "name": "_preproc_expression"
1065                }
1066              }
1067            ]
1068          }
1069        },
1070        {
1071          "type": "PREC_LEFT",
1072          "value": 10,
1073          "content": {
1074            "type": "SEQ",
1075            "members": [
1076              {
1077                "type": "FIELD",
1078                "name": "left",
1079                "content": {
1080                  "type": "SYMBOL",
1081                  "name": "_preproc_expression"
1082                }
1083              },
1084              {
1085                "type": "FIELD",
1086                "name": "operator",
1087                "content": {
1088                  "type": "STRING",
1089                  "value": "-"
1090                }
1091              },
1092              {
1093                "type": "FIELD",
1094                "name": "right",
1095                "content": {
1096                  "type": "SYMBOL",
1097                  "name": "_preproc_expression"
1098                }
1099              }
1100            ]
1101          }
1102        },
1103        {
1104          "type": "PREC_LEFT",
1105          "value": 11,
1106          "content": {
1107            "type": "SEQ",
1108            "members": [
1109              {
1110                "type": "FIELD",
1111                "name": "left",
1112                "content": {
1113                  "type": "SYMBOL",
1114                  "name": "_preproc_expression"
1115                }
1116              },
1117              {
1118                "type": "FIELD",
1119                "name": "operator",
1120                "content": {
1121                  "type": "STRING",
1122                  "value": "*"
1123                }
1124              },
1125              {
1126                "type": "FIELD",
1127                "name": "right",
1128                "content": {
1129                  "type": "SYMBOL",
1130                  "name": "_preproc_expression"
1131                }
1132              }
1133            ]
1134          }
1135        },
1136        {
1137          "type": "PREC_LEFT",
1138          "value": 11,
1139          "content": {
1140            "type": "SEQ",
1141            "members": [
1142              {
1143                "type": "FIELD",
1144                "name": "left",
1145                "content": {
1146                  "type": "SYMBOL",
1147                  "name": "_preproc_expression"
1148                }
1149              },
1150              {
1151                "type": "FIELD",
1152                "name": "operator",
1153                "content": {
1154                  "type": "STRING",
1155                  "value": "/"
1156                }
1157              },
1158              {
1159                "type": "FIELD",
1160                "name": "right",
1161                "content": {
1162                  "type": "SYMBOL",
1163                  "name": "_preproc_expression"
1164                }
1165              }
1166            ]
1167          }
1168        },
1169        {
1170          "type": "PREC_LEFT",
1171          "value": 11,
1172          "content": {
1173            "type": "SEQ",
1174            "members": [
1175              {
1176                "type": "FIELD",
1177                "name": "left",
1178                "content": {
1179                  "type": "SYMBOL",
1180                  "name": "_preproc_expression"
1181                }
1182              },
1183              {
1184                "type": "FIELD",
1185                "name": "operator",
1186                "content": {
1187                  "type": "STRING",
1188                  "value": "%"
1189                }
1190              },
1191              {
1192                "type": "FIELD",
1193                "name": "right",
1194                "content": {
1195                  "type": "SYMBOL",
1196                  "name": "_preproc_expression"
1197                }
1198              }
1199            ]
1200          }
1201        },
1202        {
1203          "type": "PREC_LEFT",
1204          "value": 1,
1205          "content": {
1206            "type": "SEQ",
1207            "members": [
1208              {
1209                "type": "FIELD",
1210                "name": "left",
1211                "content": {
1212                  "type": "SYMBOL",
1213                  "name": "_preproc_expression"
1214                }
1215              },
1216              {
1217                "type": "FIELD",
1218                "name": "operator",
1219                "content": {
1220                  "type": "STRING",
1221                  "value": "||"
1222                }
1223              },
1224              {
1225                "type": "FIELD",
1226                "name": "right",
1227                "content": {
1228                  "type": "SYMBOL",
1229                  "name": "_preproc_expression"
1230                }
1231              }
1232            ]
1233          }
1234        },
1235        {
1236          "type": "PREC_LEFT",
1237          "value": 2,
1238          "content": {
1239            "type": "SEQ",
1240            "members": [
1241              {
1242                "type": "FIELD",
1243                "name": "left",
1244                "content": {
1245                  "type": "SYMBOL",
1246                  "name": "_preproc_expression"
1247                }
1248              },
1249              {
1250                "type": "FIELD",
1251                "name": "operator",
1252                "content": {
1253                  "type": "STRING",
1254                  "value": "&&"
1255                }
1256              },
1257              {
1258                "type": "FIELD",
1259                "name": "right",
1260                "content": {
1261                  "type": "SYMBOL",
1262                  "name": "_preproc_expression"
1263                }
1264              }
1265            ]
1266          }
1267        },
1268        {
1269          "type": "PREC_LEFT",
1270          "value": 3,
1271          "content": {
1272            "type": "SEQ",
1273            "members": [
1274              {
1275                "type": "FIELD",
1276                "name": "left",
1277                "content": {
1278                  "type": "SYMBOL",
1279                  "name": "_preproc_expression"
1280                }
1281              },
1282              {
1283                "type": "FIELD",
1284                "name": "operator",
1285                "content": {
1286                  "type": "STRING",
1287                  "value": "|"
1288                }
1289              },
1290              {
1291                "type": "FIELD",
1292                "name": "right",
1293                "content": {
1294                  "type": "SYMBOL",
1295                  "name": "_preproc_expression"
1296                }
1297              }
1298            ]
1299          }
1300        },
1301        {
1302          "type": "PREC_LEFT",
1303          "value": 4,
1304          "content": {
1305            "type": "SEQ",
1306            "members": [
1307              {
1308                "type": "FIELD",
1309                "name": "left",
1310                "content": {
1311                  "type": "SYMBOL",
1312                  "name": "_preproc_expression"
1313                }
1314              },
1315              {
1316                "type": "FIELD",
1317                "name": "operator",
1318                "content": {
1319                  "type": "STRING",
1320                  "value": "^"
1321                }
1322              },
1323              {
1324                "type": "FIELD",
1325                "name": "right",
1326                "content": {
1327                  "type": "SYMBOL",
1328                  "name": "_preproc_expression"
1329                }
1330              }
1331            ]
1332          }
1333        },
1334        {
1335          "type": "PREC_LEFT",
1336          "value": 5,
1337          "content": {
1338            "type": "SEQ",
1339            "members": [
1340              {
1341                "type": "FIELD",
1342                "name": "left",
1343                "content": {
1344                  "type": "SYMBOL",
1345                  "name": "_preproc_expression"
1346                }
1347              },
1348              {
1349                "type": "FIELD",
1350                "name": "operator",
1351                "content": {
1352                  "type": "STRING",
1353                  "value": "&"
1354                }
1355              },
1356              {
1357                "type": "FIELD",
1358                "name": "right",
1359                "content": {
1360                  "type": "SYMBOL",
1361                  "name": "_preproc_expression"
1362                }
1363              }
1364            ]
1365          }
1366        },
1367        {
1368          "type": "PREC_LEFT",
1369          "value": 6,
1370          "content": {
1371            "type": "SEQ",
1372            "members": [
1373              {
1374                "type": "FIELD",
1375                "name": "left",
1376                "content": {
1377                  "type": "SYMBOL",
1378                  "name": "_preproc_expression"
1379                }
1380              },
1381              {
1382                "type": "FIELD",
1383                "name": "operator",
1384                "content": {
1385                  "type": "STRING",
1386                  "value": "=="
1387                }
1388              },
1389              {
1390                "type": "FIELD",
1391                "name": "right",
1392                "content": {
1393                  "type": "SYMBOL",
1394                  "name": "_preproc_expression"
1395                }
1396              }
1397            ]
1398          }
1399        },
1400        {
1401          "type": "PREC_LEFT",
1402          "value": 6,
1403          "content": {
1404            "type": "SEQ",
1405            "members": [
1406              {
1407                "type": "FIELD",
1408                "name": "left",
1409                "content": {
1410                  "type": "SYMBOL",
1411                  "name": "_preproc_expression"
1412                }
1413              },
1414              {
1415                "type": "FIELD",
1416                "name": "operator",
1417                "content": {
1418                  "type": "STRING",
1419                  "value": "!="
1420                }
1421              },
1422              {
1423                "type": "FIELD",
1424                "name": "right",
1425                "content": {
1426                  "type": "SYMBOL",
1427                  "name": "_preproc_expression"
1428                }
1429              }
1430            ]
1431          }
1432        },
1433        {
1434          "type": "PREC_LEFT",
1435          "value": 7,
1436          "content": {
1437            "type": "SEQ",
1438            "members": [
1439              {
1440                "type": "FIELD",
1441                "name": "left",
1442                "content": {
1443                  "type": "SYMBOL",
1444                  "name": "_preproc_expression"
1445                }
1446              },
1447              {
1448                "type": "FIELD",
1449                "name": "operator",
1450                "content": {
1451                  "type": "STRING",
1452                  "value": ">"
1453                }
1454              },
1455              {
1456                "type": "FIELD",
1457                "name": "right",
1458                "content": {
1459                  "type": "SYMBOL",
1460                  "name": "_preproc_expression"
1461                }
1462              }
1463            ]
1464          }
1465        },
1466        {
1467          "type": "PREC_LEFT",
1468          "value": 7,
1469          "content": {
1470            "type": "SEQ",
1471            "members": [
1472              {
1473                "type": "FIELD",
1474                "name": "left",
1475                "content": {
1476                  "type": "SYMBOL",
1477                  "name": "_preproc_expression"
1478                }
1479              },
1480              {
1481                "type": "FIELD",
1482                "name": "operator",
1483                "content": {
1484                  "type": "STRING",
1485                  "value": ">="
1486                }
1487              },
1488              {
1489                "type": "FIELD",
1490                "name": "right",
1491                "content": {
1492                  "type": "SYMBOL",
1493                  "name": "_preproc_expression"
1494                }
1495              }
1496            ]
1497          }
1498        },
1499        {
1500          "type": "PREC_LEFT",
1501          "value": 7,
1502          "content": {
1503            "type": "SEQ",
1504            "members": [
1505              {
1506                "type": "FIELD",
1507                "name": "left",
1508                "content": {
1509                  "type": "SYMBOL",
1510                  "name": "_preproc_expression"
1511                }
1512              },
1513              {
1514                "type": "FIELD",
1515                "name": "operator",
1516                "content": {
1517                  "type": "STRING",
1518                  "value": "<="
1519                }
1520              },
1521              {
1522                "type": "FIELD",
1523                "name": "right",
1524                "content": {
1525                  "type": "SYMBOL",
1526                  "name": "_preproc_expression"
1527                }
1528              }
1529            ]
1530          }
1531        },
1532        {
1533          "type": "PREC_LEFT",
1534          "value": 7,
1535          "content": {
1536            "type": "SEQ",
1537            "members": [
1538              {
1539                "type": "FIELD",
1540                "name": "left",
1541                "content": {
1542                  "type": "SYMBOL",
1543                  "name": "_preproc_expression"
1544                }
1545              },
1546              {
1547                "type": "FIELD",
1548                "name": "operator",
1549                "content": {
1550                  "type": "STRING",
1551                  "value": "<"
1552                }
1553              },
1554              {
1555                "type": "FIELD",
1556                "name": "right",
1557                "content": {
1558                  "type": "SYMBOL",
1559                  "name": "_preproc_expression"
1560                }
1561              }
1562            ]
1563          }
1564        },
1565        {
1566          "type": "PREC_LEFT",
1567          "value": 9,
1568          "content": {
1569            "type": "SEQ",
1570            "members": [
1571              {
1572                "type": "FIELD",
1573                "name": "left",
1574                "content": {
1575                  "type": "SYMBOL",
1576                  "name": "_preproc_expression"
1577                }
1578              },
1579              {
1580                "type": "FIELD",
1581                "name": "operator",
1582                "content": {
1583                  "type": "STRING",
1584                  "value": "<<"
1585                }
1586              },
1587              {
1588                "type": "FIELD",
1589                "name": "right",
1590                "content": {
1591                  "type": "SYMBOL",
1592                  "name": "_preproc_expression"
1593                }
1594              }
1595            ]
1596          }
1597        },
1598        {
1599          "type": "PREC_LEFT",
1600          "value": 9,
1601          "content": {
1602            "type": "SEQ",
1603            "members": [
1604              {
1605                "type": "FIELD",
1606                "name": "left",
1607                "content": {
1608                  "type": "SYMBOL",
1609                  "name": "_preproc_expression"
1610                }
1611              },
1612              {
1613                "type": "FIELD",
1614                "name": "operator",
1615                "content": {
1616                  "type": "STRING",
1617                  "value": ">>"
1618                }
1619              },
1620              {
1621                "type": "FIELD",
1622                "name": "right",
1623                "content": {
1624                  "type": "SYMBOL",
1625                  "name": "_preproc_expression"
1626                }
1627              }
1628            ]
1629          }
1630        }
1631      ]
1632    },
1633    "function_definition": {
1634      "type": "SEQ",
1635      "members": [
1636        {
1637          "type": "CHOICE",
1638          "members": [
1639            {
1640              "type": "SYMBOL",
1641              "name": "ms_call_modifier"
1642            },
1643            {
1644              "type": "BLANK"
1645            }
1646          ]
1647        },
1648        {
1649          "type": "SYMBOL",
1650          "name": "_declaration_specifiers"
1651        },
1652        {
1653          "type": "FIELD",
1654          "name": "declarator",
1655          "content": {
1656            "type": "SYMBOL",
1657            "name": "_declarator"
1658          }
1659        },
1660        {
1661          "type": "FIELD",
1662          "name": "body",
1663          "content": {
1664            "type": "SYMBOL",
1665            "name": "compound_statement"
1666          }
1667        }
1668      ]
1669    },
1670    "declaration": {
1671      "type": "SEQ",
1672      "members": [
1673        {
1674          "type": "SYMBOL",
1675          "name": "_declaration_specifiers"
1676        },
1677        {
1678          "type": "SEQ",
1679          "members": [
1680            {
1681              "type": "FIELD",
1682              "name": "declarator",
1683              "content": {
1684                "type": "CHOICE",
1685                "members": [
1686                  {
1687                    "type": "SYMBOL",
1688                    "name": "_declarator"
1689                  },
1690                  {
1691                    "type": "SYMBOL",
1692                    "name": "init_declarator"
1693                  }
1694                ]
1695              }
1696            },
1697            {
1698              "type": "REPEAT",
1699              "content": {
1700                "type": "SEQ",
1701                "members": [
1702                  {
1703                    "type": "STRING",
1704                    "value": ","
1705                  },
1706                  {
1707                    "type": "FIELD",
1708                    "name": "declarator",
1709                    "content": {
1710                      "type": "CHOICE",
1711                      "members": [
1712                        {
1713                          "type": "SYMBOL",
1714                          "name": "_declarator"
1715                        },
1716                        {
1717                          "type": "SYMBOL",
1718                          "name": "init_declarator"
1719                        }
1720                      ]
1721                    }
1722                  }
1723                ]
1724              }
1725            }
1726          ]
1727        },
1728        {
1729          "type": "STRING",
1730          "value": ";"
1731        }
1732      ]
1733    },
1734    "type_definition": {
1735      "type": "SEQ",
1736      "members": [
1737        {
1738          "type": "STRING",
1739          "value": "typedef"
1740        },
1741        {
1742          "type": "REPEAT",
1743          "content": {
1744            "type": "SYMBOL",
1745            "name": "type_qualifier"
1746          }
1747        },
1748        {
1749          "type": "FIELD",
1750          "name": "type",
1751          "content": {
1752            "type": "SYMBOL",
1753            "name": "_type_specifier"
1754          }
1755        },
1756        {
1757          "type": "SEQ",
1758          "members": [
1759            {
1760              "type": "FIELD",
1761              "name": "declarator",
1762              "content": {
1763                "type": "SYMBOL",
1764                "name": "_type_declarator"
1765              }
1766            },
1767            {
1768              "type": "REPEAT",
1769              "content": {
1770                "type": "SEQ",
1771                "members": [
1772                  {
1773                    "type": "STRING",
1774                    "value": ","
1775                  },
1776                  {
1777                    "type": "FIELD",
1778                    "name": "declarator",
1779                    "content": {
1780                      "type": "SYMBOL",
1781                      "name": "_type_declarator"
1782                    }
1783                  }
1784                ]
1785              }
1786            }
1787          ]
1788        },
1789        {
1790          "type": "STRING",
1791          "value": ";"
1792        }
1793      ]
1794    },
1795    "_declaration_specifiers": {
1796      "type": "SEQ",
1797      "members": [
1798        {
1799          "type": "REPEAT",
1800          "content": {
1801            "type": "CHOICE",
1802            "members": [
1803              {
1804                "type": "SYMBOL",
1805                "name": "storage_class_specifier"
1806              },
1807              {
1808                "type": "SYMBOL",
1809                "name": "type_qualifier"
1810              },
1811              {
1812                "type": "SYMBOL",
1813                "name": "attribute_specifier"
1814              },
1815              {
1816                "type": "SYMBOL",
1817                "name": "ms_declspec_modifier"
1818              }
1819            ]
1820          }
1821        },
1822        {
1823          "type": "FIELD",
1824          "name": "type",
1825          "content": {
1826            "type": "SYMBOL",
1827            "name": "_type_specifier"
1828          }
1829        },
1830        {
1831          "type": "REPEAT",
1832          "content": {
1833            "type": "CHOICE",
1834            "members": [
1835              {
1836                "type": "SYMBOL",
1837                "name": "storage_class_specifier"
1838              },
1839              {
1840                "type": "SYMBOL",
1841                "name": "type_qualifier"
1842              },
1843              {
1844                "type": "SYMBOL",
1845                "name": "attribute_specifier"
1846              },
1847              {
1848                "type": "SYMBOL",
1849                "name": "ms_declspec_modifier"
1850              }
1851            ]
1852          }
1853        }
1854      ]
1855    },
1856    "linkage_specification": {
1857      "type": "SEQ",
1858      "members": [
1859        {
1860          "type": "STRING",
1861          "value": "extern"
1862        },
1863        {
1864          "type": "FIELD",
1865          "name": "value",
1866          "content": {
1867            "type": "SYMBOL",
1868            "name": "string_literal"
1869          }
1870        },
1871        {
1872          "type": "FIELD",
1873          "name": "body",
1874          "content": {
1875            "type": "CHOICE",
1876            "members": [
1877              {
1878                "type": "SYMBOL",
1879                "name": "function_definition"
1880              },
1881              {
1882                "type": "SYMBOL",
1883                "name": "declaration"
1884              },
1885              {
1886                "type": "SYMBOL",
1887                "name": "declaration_list"
1888              }
1889            ]
1890          }
1891        }
1892      ]
1893    },
1894    "attribute_specifier": {
1895      "type": "SEQ",
1896      "members": [
1897        {
1898          "type": "STRING",
1899          "value": "__attribute__"
1900        },
1901        {
1902          "type": "STRING",
1903          "value": "("
1904        },
1905        {
1906          "type": "SYMBOL",
1907          "name": "argument_list"
1908        },
1909        {
1910          "type": "STRING",
1911          "value": ")"
1912        }
1913      ]
1914    },
1915    "ms_declspec_modifier": {
1916      "type": "SEQ",
1917      "members": [
1918        {
1919          "type": "STRING",
1920          "value": "__declspec"
1921        },
1922        {
1923          "type": "STRING",
1924          "value": "("
1925        },
1926        {
1927          "type": "SYMBOL",
1928          "name": "identifier"
1929        },
1930        {
1931          "type": "STRING",
1932          "value": ")"
1933        }
1934      ]
1935    },
1936    "ms_based_modifier": {
1937      "type": "SEQ",
1938      "members": [
1939        {
1940          "type": "STRING",
1941          "value": "__based"
1942        },
1943        {
1944          "type": "SYMBOL",
1945          "name": "argument_list"
1946        }
1947      ]
1948    },
1949    "ms_call_modifier": {
1950      "type": "CHOICE",
1951      "members": [
1952        {
1953          "type": "STRING",
1954          "value": "__cdecl"
1955        },
1956        {
1957          "type": "STRING",
1958          "value": "__clrcall"
1959        },
1960        {
1961          "type": "STRING",
1962          "value": "__stdcall"
1963        },
1964        {
1965          "type": "STRING",
1966          "value": "__fastcall"
1967        },
1968        {
1969          "type": "STRING",
1970          "value": "__thiscall"
1971        },
1972        {
1973          "type": "STRING",
1974          "value": "__vectorcall"
1975        }
1976      ]
1977    },
1978    "ms_restrict_modifier": {
1979      "type": "STRING",
1980      "value": "__restrict"
1981    },
1982    "ms_unsigned_ptr_modifier": {
1983      "type": "STRING",
1984      "value": "__uptr"
1985    },
1986    "ms_signed_ptr_modifier": {
1987      "type": "STRING",
1988      "value": "__sptr"
1989    },
1990    "ms_unaligned_ptr_modifier": {
1991      "type": "CHOICE",
1992      "members": [
1993        {
1994          "type": "STRING",
1995          "value": "_unaligned"
1996        },
1997        {
1998          "type": "STRING",
1999          "value": "__unaligned"
2000        }
2001      ]
2002    },
2003    "ms_pointer_modifier": {
2004      "type": "CHOICE",
2005      "members": [
2006        {
2007          "type": "SYMBOL",
2008          "name": "ms_unaligned_ptr_modifier"
2009        },
2010        {
2011          "type": "SYMBOL",
2012          "name": "ms_restrict_modifier"
2013        },
2014        {
2015          "type": "SYMBOL",
2016          "name": "ms_unsigned_ptr_modifier"
2017        },
2018        {
2019          "type": "SYMBOL",
2020          "name": "ms_signed_ptr_modifier"
2021        }
2022      ]
2023    },
2024    "declaration_list": {
2025      "type": "SEQ",
2026      "members": [
2027        {
2028          "type": "STRING",
2029          "value": "{"
2030        },
2031        {
2032          "type": "REPEAT",
2033          "content": {
2034            "type": "SYMBOL",
2035            "name": "_top_level_item"
2036          }
2037        },
2038        {
2039          "type": "STRING",
2040          "value": "}"
2041        }
2042      ]
2043    },
2044    "_declarator": {
2045      "type": "CHOICE",
2046      "members": [
2047        {
2048          "type": "SYMBOL",
2049          "name": "pointer_declarator"
2050        },
2051        {
2052          "type": "SYMBOL",
2053          "name": "function_declarator"
2054        },
2055        {
2056          "type": "SYMBOL",
2057          "name": "array_declarator"
2058        },
2059        {
2060          "type": "SYMBOL",
2061          "name": "parenthesized_declarator"
2062        },
2063        {
2064          "type": "SYMBOL",
2065          "name": "identifier"
2066        }
2067      ]
2068    },
2069    "_field_declarator": {
2070      "type": "CHOICE",
2071      "members": [
2072        {
2073          "type": "ALIAS",
2074          "content": {
2075            "type": "SYMBOL",
2076            "name": "pointer_field_declarator"
2077          },
2078          "named": true,
2079          "value": "pointer_declarator"
2080        },
2081        {
2082          "type": "ALIAS",
2083          "content": {
2084            "type": "SYMBOL",
2085            "name": "function_field_declarator"
2086          },
2087          "named": true,
2088          "value": "function_declarator"
2089        },
2090        {
2091          "type": "ALIAS",
2092          "content": {
2093            "type": "SYMBOL",
2094            "name": "array_field_declarator"
2095          },
2096          "named": true,
2097          "value": "array_declarator"
2098        },
2099        {
2100          "type": "ALIAS",
2101          "content": {
2102            "type": "SYMBOL",
2103            "name": "parenthesized_field_declarator"
2104          },
2105          "named": true,
2106          "value": "parenthesized_declarator"
2107        },
2108        {
2109          "type": "SYMBOL",
2110          "name": "_field_identifier"
2111        }
2112      ]
2113    },
2114    "_type_declarator": {
2115      "type": "CHOICE",
2116      "members": [
2117        {
2118          "type": "ALIAS",
2119          "content": {
2120            "type": "SYMBOL",
2121            "name": "pointer_type_declarator"
2122          },
2123          "named": true,
2124          "value": "pointer_declarator"
2125        },
2126        {
2127          "type": "ALIAS",
2128          "content": {
2129            "type": "SYMBOL",
2130            "name": "function_type_declarator"
2131          },
2132          "named": true,
2133          "value": "function_declarator"
2134        },
2135        {
2136          "type": "ALIAS",
2137          "content": {
2138            "type": "SYMBOL",
2139            "name": "array_type_declarator"
2140          },
2141          "named": true,
2142          "value": "array_declarator"
2143        },
2144        {
2145          "type": "ALIAS",
2146          "content": {
2147            "type": "SYMBOL",
2148            "name": "parenthesized_type_declarator"
2149          },
2150          "named": true,
2151          "value": "parenthesized_declarator"
2152        },
2153        {
2154          "type": "SYMBOL",
2155          "name": "_type_identifier"
2156        }
2157      ]
2158    },
2159    "_abstract_declarator": {
2160      "type": "CHOICE",
2161      "members": [
2162        {
2163          "type": "SYMBOL",
2164          "name": "abstract_pointer_declarator"
2165        },
2166        {
2167          "type": "SYMBOL",
2168          "name": "abstract_function_declarator"
2169        },
2170        {
2171          "type": "SYMBOL",
2172          "name": "abstract_array_declarator"
2173        },
2174        {
2175          "type": "SYMBOL",
2176          "name": "abstract_parenthesized_declarator"
2177        }
2178      ]
2179    },
2180    "parenthesized_declarator": {
2181      "type": "PREC_DYNAMIC",
2182      "value": -10,
2183      "content": {
2184        "type": "SEQ",
2185        "members": [
2186          {
2187            "type": "STRING",
2188            "value": "("
2189          },
2190          {
2191            "type": "SYMBOL",
2192            "name": "_declarator"
2193          },
2194          {
2195            "type": "STRING",
2196            "value": ")"
2197          }
2198        ]
2199      }
2200    },
2201    "parenthesized_field_declarator": {
2202      "type": "PREC_DYNAMIC",
2203      "value": -10,
2204      "content": {
2205        "type": "SEQ",
2206        "members": [
2207          {
2208            "type": "STRING",
2209            "value": "("
2210          },
2211          {
2212            "type": "SYMBOL",
2213            "name": "_field_declarator"
2214          },
2215          {
2216            "type": "STRING",
2217            "value": ")"
2218          }
2219        ]
2220      }
2221    },
2222    "parenthesized_type_declarator": {
2223      "type": "PREC_DYNAMIC",
2224      "value": -10,
2225      "content": {
2226        "type": "SEQ",
2227        "members": [
2228          {
2229            "type": "STRING",
2230            "value": "("
2231          },
2232          {
2233            "type": "SYMBOL",
2234            "name": "_type_declarator"
2235          },
2236          {
2237            "type": "STRING",
2238            "value": ")"
2239          }
2240        ]
2241      }
2242    },
2243    "abstract_parenthesized_declarator": {
2244      "type": "PREC",
2245      "value": 1,
2246      "content": {
2247        "type": "SEQ",
2248        "members": [
2249          {
2250            "type": "STRING",
2251            "value": "("
2252          },
2253          {
2254            "type": "SYMBOL",
2255            "name": "_abstract_declarator"
2256          },
2257          {
2258            "type": "STRING",
2259            "value": ")"
2260          }
2261        ]
2262      }
2263    },
2264    "pointer_declarator": {
2265      "type": "PREC_DYNAMIC",
2266      "value": 1,
2267      "content": {
2268        "type": "PREC_RIGHT",
2269        "value": 0,
2270        "content": {
2271          "type": "SEQ",
2272          "members": [
2273            {
2274              "type": "CHOICE",
2275              "members": [
2276                {
2277                  "type": "SYMBOL",
2278                  "name": "ms_based_modifier"
2279                },
2280                {
2281                  "type": "BLANK"
2282                }
2283              ]
2284            },
2285            {
2286              "type": "STRING",
2287              "value": "*"
2288            },
2289            {
2290              "type": "REPEAT",
2291              "content": {
2292                "type": "SYMBOL",
2293                "name": "ms_pointer_modifier"
2294              }
2295            },
2296            {
2297              "type": "REPEAT",
2298              "content": {
2299                "type": "SYMBOL",
2300                "name": "type_qualifier"
2301              }
2302            },
2303            {
2304              "type": "FIELD",
2305              "name": "declarator",
2306              "content": {
2307                "type": "SYMBOL",
2308                "name": "_declarator"
2309              }
2310            }
2311          ]
2312        }
2313      }
2314    },
2315    "pointer_field_declarator": {
2316      "type": "PREC_DYNAMIC",
2317      "value": 1,
2318      "content": {
2319        "type": "PREC_RIGHT",
2320        "value": 0,
2321        "content": {
2322          "type": "SEQ",
2323          "members": [
2324            {
2325              "type": "CHOICE",
2326              "members": [
2327                {
2328                  "type": "SYMBOL",
2329                  "name": "ms_based_modifier"
2330                },
2331                {
2332                  "type": "BLANK"
2333                }
2334              ]
2335            },
2336            {
2337              "type": "STRING",
2338              "value": "*"
2339            },
2340            {
2341              "type": "REPEAT",
2342              "content": {
2343                "type": "SYMBOL",
2344                "name": "ms_pointer_modifier"
2345              }
2346            },
2347            {
2348              "type": "REPEAT",
2349              "content": {
2350                "type": "SYMBOL",
2351                "name": "type_qualifier"
2352              }
2353            },
2354            {
2355              "type": "FIELD",
2356              "name": "declarator",
2357              "content": {
2358                "type": "SYMBOL",
2359                "name": "_field_declarator"
2360              }
2361            }
2362          ]
2363        }
2364      }
2365    },
2366    "pointer_type_declarator": {
2367      "type": "PREC_DYNAMIC",
2368      "value": 1,
2369      "content": {
2370        "type": "PREC_RIGHT",
2371        "value": 0,
2372        "content": {
2373          "type": "SEQ",
2374          "members": [
2375            {
2376              "type": "CHOICE",
2377              "members": [
2378                {
2379                  "type": "SYMBOL",
2380                  "name": "ms_based_modifier"
2381                },
2382                {
2383                  "type": "BLANK"
2384                }
2385              ]
2386            },
2387            {
2388              "type": "STRING",
2389              "value": "*"
2390            },
2391            {
2392              "type": "REPEAT",
2393              "content": {
2394                "type": "SYMBOL",
2395                "name": "ms_pointer_modifier"
2396              }
2397            },
2398            {
2399              "type": "REPEAT",
2400              "content": {
2401                "type": "SYMBOL",
2402                "name": "type_qualifier"
2403              }
2404            },
2405            {
2406              "type": "FIELD",
2407              "name": "declarator",
2408              "content": {
2409                "type": "SYMBOL",
2410                "name": "_type_declarator"
2411              }
2412            }
2413          ]
2414        }
2415      }
2416    },
2417    "abstract_pointer_declarator": {
2418      "type": "PREC_DYNAMIC",
2419      "value": 1,
2420      "content": {
2421        "type": "PREC_RIGHT",
2422        "value": 0,
2423        "content": {
2424          "type": "SEQ",
2425          "members": [
2426            {
2427              "type": "STRING",
2428              "value": "*"
2429            },
2430            {
2431              "type": "REPEAT",
2432              "content": {
2433                "type": "SYMBOL",
2434                "name": "type_qualifier"
2435              }
2436            },
2437            {
2438              "type": "FIELD",
2439              "name": "declarator",
2440              "content": {
2441                "type": "CHOICE",
2442                "members": [
2443                  {
2444                    "type": "SYMBOL",
2445                    "name": "_abstract_declarator"
2446                  },
2447                  {
2448                    "type": "BLANK"
2449                  }
2450                ]
2451              }
2452            }
2453          ]
2454        }
2455      }
2456    },
2457    "function_declarator": {
2458      "type": "PREC",
2459      "value": 1,
2460      "content": {
2461        "type": "SEQ",
2462        "members": [
2463          {
2464            "type": "FIELD",
2465            "name": "declarator",
2466            "content": {
2467              "type": "SYMBOL",
2468              "name": "_declarator"
2469            }
2470          },
2471          {
2472            "type": "FIELD",
2473            "name": "parameters",
2474            "content": {
2475              "type": "SYMBOL",
2476              "name": "parameter_list"
2477            }
2478          },
2479          {
2480            "type": "REPEAT",
2481            "content": {
2482              "type": "SYMBOL",
2483              "name": "attribute_specifier"
2484            }
2485          }
2486        ]
2487      }
2488    },
2489    "function_field_declarator": {
2490      "type": "PREC",
2491      "value": 1,
2492      "content": {
2493        "type": "SEQ",
2494        "members": [
2495          {
2496            "type": "FIELD",
2497            "name": "declarator",
2498            "content": {
2499              "type": "SYMBOL",
2500              "name": "_field_declarator"
2501            }
2502          },
2503          {
2504            "type": "FIELD",
2505            "name": "parameters",
2506            "content": {
2507              "type": "SYMBOL",
2508              "name": "parameter_list"
2509            }
2510          }
2511        ]
2512      }
2513    },
2514    "function_type_declarator": {
2515      "type": "PREC",
2516      "value": 1,
2517      "content": {
2518        "type": "SEQ",
2519        "members": [
2520          {
2521            "type": "FIELD",
2522            "name": "declarator",
2523            "content": {
2524              "type": "SYMBOL",
2525              "name": "_type_declarator"
2526            }
2527          },
2528          {
2529            "type": "FIELD",
2530            "name": "parameters",
2531            "content": {
2532              "type": "SYMBOL",
2533              "name": "parameter_list"
2534            }
2535          }
2536        ]
2537      }
2538    },
2539    "abstract_function_declarator": {
2540      "type": "PREC",
2541      "value": 1,
2542      "content": {
2543        "type": "SEQ",
2544        "members": [
2545          {
2546            "type": "FIELD",
2547            "name": "declarator",
2548            "content": {
2549              "type": "CHOICE",
2550              "members": [
2551                {
2552                  "type": "SYMBOL",
2553                  "name": "_abstract_declarator"
2554                },
2555                {
2556                  "type": "BLANK"
2557                }
2558              ]
2559            }
2560          },
2561          {
2562            "type": "FIELD",
2563            "name": "parameters",
2564            "content": {
2565              "type": "SYMBOL",
2566              "name": "parameter_list"
2567            }
2568          }
2569        ]
2570      }
2571    },
2572    "array_declarator": {
2573      "type": "PREC",
2574      "value": 1,
2575      "content": {
2576        "type": "SEQ",
2577        "members": [
2578          {
2579            "type": "FIELD",
2580            "name": "declarator",
2581            "content": {
2582              "type": "SYMBOL",
2583              "name": "_declarator"
2584            }
2585          },
2586          {
2587            "type": "STRING",
2588            "value": "["
2589          },
2590          {
2591            "type": "REPEAT",
2592            "content": {
2593              "type": "SYMBOL",
2594              "name": "type_qualifier"
2595            }
2596          },
2597          {
2598            "type": "FIELD",
2599            "name": "size",
2600            "content": {
2601              "type": "CHOICE",
2602              "members": [
2603                {
2604                  "type": "CHOICE",
2605                  "members": [
2606                    {
2607                      "type": "SYMBOL",
2608                      "name": "_expression"
2609                    },
2610                    {
2611                      "type": "STRING",
2612                      "value": "*"
2613                    }
2614                  ]
2615                },
2616                {
2617                  "type": "BLANK"
2618                }
2619              ]
2620            }
2621          },
2622          {
2623            "type": "STRING",
2624            "value": "]"
2625          }
2626        ]
2627      }
2628    },
2629    "array_field_declarator": {
2630      "type": "PREC",
2631      "value": 1,
2632      "content": {
2633        "type": "SEQ",
2634        "members": [
2635          {
2636            "type": "FIELD",
2637            "name": "declarator",
2638            "content": {
2639              "type": "SYMBOL",
2640              "name": "_field_declarator"
2641            }
2642          },
2643          {
2644            "type": "STRING",
2645            "value": "["
2646          },
2647          {
2648            "type": "REPEAT",
2649            "content": {
2650              "type": "SYMBOL",
2651              "name": "type_qualifier"
2652            }
2653          },
2654          {
2655            "type": "FIELD",
2656            "name": "size",
2657            "content": {
2658              "type": "CHOICE",
2659              "members": [
2660                {
2661                  "type": "CHOICE",
2662                  "members": [
2663                    {
2664                      "type": "SYMBOL",
2665                      "name": "_expression"
2666                    },
2667                    {
2668                      "type": "STRING",
2669                      "value": "*"
2670                    }
2671                  ]
2672                },
2673                {
2674                  "type": "BLANK"
2675                }
2676              ]
2677            }
2678          },
2679          {
2680            "type": "STRING",
2681            "value": "]"
2682          }
2683        ]
2684      }
2685    },
2686    "array_type_declarator": {
2687      "type": "PREC",
2688      "value": 1,
2689      "content": {
2690        "type": "SEQ",
2691        "members": [
2692          {
2693            "type": "FIELD",
2694            "name": "declarator",
2695            "content": {
2696              "type": "SYMBOL",
2697              "name": "_type_declarator"
2698            }
2699          },
2700          {
2701            "type": "STRING",
2702            "value": "["
2703          },
2704          {
2705            "type": "REPEAT",
2706            "content": {
2707              "type": "SYMBOL",
2708              "name": "type_qualifier"
2709            }
2710          },
2711          {
2712            "type": "FIELD",
2713            "name": "size",
2714            "content": {
2715              "type": "CHOICE",
2716              "members": [
2717                {
2718                  "type": "CHOICE",
2719                  "members": [
2720                    {
2721                      "type": "SYMBOL",
2722                      "name": "_expression"
2723                    },
2724                    {
2725                      "type": "STRING",
2726                      "value": "*"
2727                    }
2728                  ]
2729                },
2730                {
2731                  "type": "BLANK"
2732                }
2733              ]
2734            }
2735          },
2736          {
2737            "type": "STRING",
2738            "value": "]"
2739          }
2740        ]
2741      }
2742    },
2743    "abstract_array_declarator": {
2744      "type": "PREC",
2745      "value": 1,
2746      "content": {
2747        "type": "SEQ",
2748        "members": [
2749          {
2750            "type": "FIELD",
2751            "name": "declarator",
2752            "content": {
2753              "type": "CHOICE",
2754              "members": [
2755                {
2756                  "type": "SYMBOL",
2757                  "name": "_abstract_declarator"
2758                },
2759                {
2760                  "type": "BLANK"
2761                }
2762              ]
2763            }
2764          },
2765          {
2766            "type": "STRING",
2767            "value": "["
2768          },
2769          {
2770            "type": "REPEAT",
2771            "content": {
2772              "type": "SYMBOL",
2773              "name": "type_qualifier"
2774            }
2775          },
2776          {
2777            "type": "FIELD",
2778            "name": "size",
2779            "content": {
2780              "type": "CHOICE",
2781              "members": [
2782                {
2783                  "type": "CHOICE",
2784                  "members": [
2785                    {
2786                      "type": "SYMBOL",
2787                      "name": "_expression"
2788                    },
2789                    {
2790                      "type": "STRING",
2791                      "value": "*"
2792                    }
2793                  ]
2794                },
2795                {
2796                  "type": "BLANK"
2797                }
2798              ]
2799            }
2800          },
2801          {
2802            "type": "STRING",
2803            "value": "]"
2804          }
2805        ]
2806      }
2807    },
2808    "init_declarator": {
2809      "type": "SEQ",
2810      "members": [
2811        {
2812          "type": "FIELD",
2813          "name": "declarator",
2814          "content": {
2815            "type": "SYMBOL",
2816            "name": "_declarator"
2817          }
2818        },
2819        {
2820          "type": "STRING",
2821          "value": "="
2822        },
2823        {
2824          "type": "FIELD",
2825          "name": "value",
2826          "content": {
2827            "type": "CHOICE",
2828            "members": [
2829              {
2830                "type": "SYMBOL",
2831                "name": "initializer_list"
2832              },
2833              {
2834                "type": "SYMBOL",
2835                "name": "_expression"
2836              }
2837            ]
2838          }
2839        }
2840      ]
2841    },
2842    "compound_statement": {
2843      "type": "SEQ",
2844      "members": [
2845        {
2846          "type": "STRING",
2847          "value": "{"
2848        },
2849        {
2850          "type": "REPEAT",
2851          "content": {
2852            "type": "SYMBOL",
2853            "name": "_top_level_item"
2854          }
2855        },
2856        {
2857          "type": "STRING",
2858          "value": "}"
2859        }
2860      ]
2861    },
2862    "storage_class_specifier": {
2863      "type": "CHOICE",
2864      "members": [
2865        {
2866          "type": "STRING",
2867          "value": "extern"
2868        },
2869        {
2870          "type": "STRING",
2871          "value": "static"
2872        },
2873        {
2874          "type": "STRING",
2875          "value": "auto"
2876        },
2877        {
2878          "type": "STRING",
2879          "value": "register"
2880        },
2881        {
2882          "type": "STRING",
2883          "value": "inline"
2884        }
2885      ]
2886    },
2887    "type_qualifier": {
2888      "type": "CHOICE",
2889      "members": [
2890        {
2891          "type": "STRING",
2892          "value": "const"
2893        },
2894        {
2895          "type": "STRING",
2896          "value": "volatile"
2897        },
2898        {
2899          "type": "STRING",
2900          "value": "restrict"
2901        },
2902        {
2903          "type": "STRING",
2904          "value": "_Atomic"
2905        }
2906      ]
2907    },
2908    "_type_specifier": {
2909      "type": "CHOICE",
2910      "members": [
2911        {
2912          "type": "SYMBOL",
2913          "name": "struct_specifier"
2914        },
2915        {
2916          "type": "SYMBOL",
2917          "name": "union_specifier"
2918        },
2919        {
2920          "type": "SYMBOL",
2921          "name": "enum_specifier"
2922        },
2923        {
2924          "type": "SYMBOL",
2925          "name": "macro_type_specifier"
2926        },
2927        {
2928          "type": "SYMBOL",
2929          "name": "sized_type_specifier"
2930        },
2931        {
2932          "type": "SYMBOL",
2933          "name": "primitive_type"
2934        },
2935        {
2936          "type": "SYMBOL",
2937          "name": "_type_identifier"
2938        }
2939      ]
2940    },
2941    "sized_type_specifier": {
2942      "type": "SEQ",
2943      "members": [
2944        {
2945          "type": "REPEAT1",
2946          "content": {
2947            "type": "CHOICE",
2948            "members": [
2949              {
2950                "type": "STRING",
2951                "value": "signed"
2952              },
2953              {
2954                "type": "STRING",
2955                "value": "unsigned"
2956              },
2957              {
2958                "type": "STRING",
2959                "value": "long"
2960              },
2961              {
2962                "type": "STRING",
2963                "value": "short"
2964              }
2965            ]
2966          }
2967        },
2968        {
2969          "type": "FIELD",
2970          "name": "type",
2971          "content": {
2972            "type": "CHOICE",
2973            "members": [
2974              {
2975                "type": "CHOICE",
2976                "members": [
2977                  {
2978                    "type": "PREC_DYNAMIC",
2979                    "value": -1,
2980                    "content": {
2981                      "type": "SYMBOL",
2982                      "name": "_type_identifier"
2983                    }
2984                  },
2985                  {
2986                    "type": "SYMBOL",
2987                    "name": "primitive_type"
2988                  }
2989                ]
2990              },
2991              {
2992                "type": "BLANK"
2993              }
2994            ]
2995          }
2996        }
2997      ]
2998    },
2999    "primitive_type": {
3000      "type": "TOKEN",
3001      "content": {
3002        "type": "CHOICE",
3003        "members": [
3004          {
3005            "type": "STRING",
3006            "value": "bool"
3007          },
3008          {
3009            "type": "STRING",
3010            "value": "char"
3011          },
3012          {
3013            "type": "STRING",
3014            "value": "int"
3015          },
3016          {
3017            "type": "STRING",
3018            "value": "float"
3019          },
3020          {
3021            "type": "STRING",
3022            "value": "double"
3023          },
3024          {
3025            "type": "STRING",
3026            "value": "void"
3027          },
3028          {
3029            "type": "STRING",
3030            "value": "size_t"
3031          },
3032          {
3033            "type": "STRING",
3034            "value": "ssize_t"
3035          },
3036          {
3037            "type": "STRING",
3038            "value": "intptr_t"
3039          },
3040          {
3041            "type": "STRING",
3042            "value": "uintptr_t"
3043          },
3044          {
3045            "type": "STRING",
3046            "value": "charptr_t"
3047          },
3048          {
3049            "type": "STRING",
3050            "value": "int8_t"
3051          },
3052          {
3053            "type": "STRING",
3054            "value": "int16_t"
3055          },
3056          {
3057            "type": "STRING",
3058            "value": "int32_t"
3059          },
3060          {
3061            "type": "STRING",
3062            "value": "int64_t"
3063          },
3064          {
3065            "type": "STRING",
3066            "value": "uint8_t"
3067          },
3068          {
3069            "type": "STRING",
3070            "value": "uint16_t"
3071          },
3072          {
3073            "type": "STRING",
3074            "value": "uint32_t"
3075          },
3076          {
3077            "type": "STRING",
3078            "value": "uint64_t"
3079          },
3080          {
3081            "type": "STRING",
3082            "value": "char8_t"
3083          },
3084          {
3085            "type": "STRING",
3086            "value": "char16_t"
3087          },
3088          {
3089            "type": "STRING",
3090            "value": "char32_t"
3091          },
3092          {
3093            "type": "STRING",
3094            "value": "char64_t"
3095          }
3096        ]
3097      }
3098    },
3099    "enum_specifier": {
3100      "type": "SEQ",
3101      "members": [
3102        {
3103          "type": "STRING",
3104          "value": "enum"
3105        },
3106        {
3107          "type": "CHOICE",
3108          "members": [
3109            {
3110              "type": "SEQ",
3111              "members": [
3112                {
3113                  "type": "FIELD",
3114                  "name": "name",
3115                  "content": {
3116                    "type": "SYMBOL",
3117                    "name": "_type_identifier"
3118                  }
3119                },
3120                {
3121                  "type": "FIELD",
3122                  "name": "body",
3123                  "content": {
3124                    "type": "CHOICE",
3125                    "members": [
3126                      {
3127                        "type": "SYMBOL",
3128                        "name": "enumerator_list"
3129                      },
3130                      {
3131                        "type": "BLANK"
3132                      }
3133                    ]
3134                  }
3135                }
3136              ]
3137            },
3138            {
3139              "type": "FIELD",
3140              "name": "body",
3141              "content": {
3142                "type": "SYMBOL",
3143                "name": "enumerator_list"
3144              }
3145            }
3146          ]
3147        }
3148      ]
3149    },
3150    "enumerator_list": {
3151      "type": "SEQ",
3152      "members": [
3153        {
3154          "type": "STRING",
3155          "value": "{"
3156        },
3157        {
3158          "type": "CHOICE",
3159          "members": [
3160            {
3161              "type": "SEQ",
3162              "members": [
3163                {
3164                  "type": "SYMBOL",
3165                  "name": "enumerator"
3166                },
3167                {
3168                  "type": "REPEAT",
3169                  "content": {
3170                    "type": "SEQ",
3171                    "members": [
3172                      {
3173                        "type": "STRING",
3174                        "value": ","
3175                      },
3176                      {
3177                        "type": "SYMBOL",
3178                        "name": "enumerator"
3179                      }
3180                    ]
3181                  }
3182                }
3183              ]
3184            },
3185            {
3186              "type": "BLANK"
3187            }
3188          ]
3189        },
3190        {
3191          "type": "CHOICE",
3192          "members": [
3193            {
3194              "type": "STRING",
3195              "value": ","
3196            },
3197            {
3198              "type": "BLANK"
3199            }
3200          ]
3201        },
3202        {
3203          "type": "STRING",
3204          "value": "}"
3205        }
3206      ]
3207    },
3208    "struct_specifier": {
3209      "type": "SEQ",
3210      "members": [
3211        {
3212          "type": "STRING",
3213          "value": "struct"
3214        },
3215        {
3216          "type": "CHOICE",
3217          "members": [
3218            {
3219              "type": "SYMBOL",
3220              "name": "ms_declspec_modifier"
3221            },
3222            {
3223              "type": "BLANK"
3224            }
3225          ]
3226        },
3227        {
3228          "type": "CHOICE",
3229          "members": [
3230            {
3231              "type": "SEQ",
3232              "members": [
3233                {
3234                  "type": "FIELD",
3235                  "name": "name",
3236                  "content": {
3237                    "type": "SYMBOL",
3238                    "name": "_type_identifier"
3239                  }
3240                },
3241                {
3242                  "type": "FIELD",
3243                  "name": "body",
3244                  "content": {
3245                    "type": "CHOICE",
3246                    "members": [
3247                      {
3248                        "type": "SYMBOL",
3249                        "name": "field_declaration_list"
3250                      },
3251                      {
3252                        "type": "BLANK"
3253                      }
3254                    ]
3255                  }
3256                }
3257              ]
3258            },
3259            {
3260              "type": "FIELD",
3261              "name": "body",
3262              "content": {
3263                "type": "SYMBOL",
3264                "name": "field_declaration_list"
3265              }
3266            }
3267          ]
3268        }
3269      ]
3270    },
3271    "union_specifier": {
3272      "type": "SEQ",
3273      "members": [
3274        {
3275          "type": "STRING",
3276          "value": "union"
3277        },
3278        {
3279          "type": "CHOICE",
3280          "members": [
3281            {
3282              "type": "SYMBOL",
3283              "name": "ms_declspec_modifier"
3284            },
3285            {
3286              "type": "BLANK"
3287            }
3288          ]
3289        },
3290        {
3291          "type": "CHOICE",
3292          "members": [
3293            {
3294              "type": "SEQ",
3295              "members": [
3296                {
3297                  "type": "FIELD",
3298                  "name": "name",
3299                  "content": {
3300                    "type": "SYMBOL",
3301                    "name": "_type_identifier"
3302                  }
3303                },
3304                {
3305                  "type": "FIELD",
3306                  "name": "body",
3307                  "content": {
3308                    "type": "CHOICE",
3309                    "members": [
3310                      {
3311                        "type": "SYMBOL",
3312                        "name": "field_declaration_list"
3313                      },
3314                      {
3315                        "type": "BLANK"
3316                      }
3317                    ]
3318                  }
3319                }
3320              ]
3321            },
3322            {
3323              "type": "FIELD",
3324              "name": "body",
3325              "content": {
3326                "type": "SYMBOL",
3327                "name": "field_declaration_list"
3328              }
3329            }
3330          ]
3331        }
3332      ]
3333    },
3334    "field_declaration_list": {
3335      "type": "SEQ",
3336      "members": [
3337        {
3338          "type": "STRING",
3339          "value": "{"
3340        },
3341        {
3342          "type": "REPEAT",
3343          "content": {
3344            "type": "SYMBOL",
3345            "name": "_field_declaration_list_item"
3346          }
3347        },
3348        {
3349          "type": "STRING",
3350          "value": "}"
3351        }
3352      ]
3353    },
3354    "_field_declaration_list_item": {
3355      "type": "CHOICE",
3356      "members": [
3357        {
3358          "type": "SYMBOL",
3359          "name": "field_declaration"
3360        },
3361        {
3362          "type": "SYMBOL",
3363          "name": "preproc_def"
3364        },
3365        {
3366          "type": "SYMBOL",
3367          "name": "preproc_function_def"
3368        },
3369        {
3370          "type": "SYMBOL",
3371          "name": "preproc_call"
3372        },
3373        {
3374          "type": "ALIAS",
3375          "content": {
3376            "type": "SYMBOL",
3377            "name": "preproc_if_in_field_declaration_list"
3378          },
3379          "named": true,
3380          "value": "preproc_if"
3381        },
3382        {
3383          "type": "ALIAS",
3384          "content": {
3385            "type": "SYMBOL",
3386            "name": "preproc_ifdef_in_field_declaration_list"
3387          },
3388          "named": true,
3389          "value": "preproc_ifdef"
3390        }
3391      ]
3392    },
3393    "field_declaration": {
3394      "type": "SEQ",
3395      "members": [
3396        {
3397          "type": "SYMBOL",
3398          "name": "_declaration_specifiers"
3399        },
3400        {
3401          "type": "CHOICE",
3402          "members": [
3403            {
3404              "type": "SEQ",
3405              "members": [
3406                {
3407                  "type": "FIELD",
3408                  "name": "declarator",
3409                  "content": {
3410                    "type": "SYMBOL",
3411                    "name": "_field_declarator"
3412                  }
3413                },
3414                {
3415                  "type": "REPEAT",
3416                  "content": {
3417                    "type": "SEQ",
3418                    "members": [
3419                      {
3420                        "type": "STRING",
3421                        "value": ","
3422                      },
3423                      {
3424                        "type": "FIELD",
3425                        "name": "declarator",
3426                        "content": {
3427                          "type": "SYMBOL",
3428                          "name": "_field_declarator"
3429                        }
3430                      }
3431                    ]
3432                  }
3433                }
3434              ]
3435            },
3436            {
3437              "type": "BLANK"
3438            }
3439          ]
3440        },
3441        {
3442          "type": "CHOICE",
3443          "members": [
3444            {
3445              "type": "SYMBOL",
3446              "name": "bitfield_clause"
3447            },
3448            {
3449              "type": "BLANK"
3450            }
3451          ]
3452        },
3453        {
3454          "type": "STRING",
3455          "value": ";"
3456        }
3457      ]
3458    },
3459    "bitfield_clause": {
3460      "type": "SEQ",
3461      "members": [
3462        {
3463          "type": "STRING",
3464          "value": ":"
3465        },
3466        {
3467          "type": "SYMBOL",
3468          "name": "_expression"
3469        }
3470      ]
3471    },
3472    "enumerator": {
3473      "type": "SEQ",
3474      "members": [
3475        {
3476          "type": "FIELD",
3477          "name": "name",
3478          "content": {
3479            "type": "SYMBOL",
3480            "name": "identifier"
3481          }
3482        },
3483        {
3484          "type": "CHOICE",
3485          "members": [
3486            {
3487              "type": "SEQ",
3488              "members": [
3489                {
3490                  "type": "STRING",
3491                  "value": "="
3492                },
3493                {
3494                  "type": "FIELD",
3495                  "name": "value",
3496                  "content": {
3497                    "type": "SYMBOL",
3498                    "name": "_expression"
3499                  }
3500                }
3501              ]
3502            },
3503            {
3504              "type": "BLANK"
3505            }
3506          ]
3507        }
3508      ]
3509    },
3510    "parameter_list": {
3511      "type": "SEQ",
3512      "members": [
3513        {
3514          "type": "STRING",
3515          "value": "("
3516        },
3517        {
3518          "type": "CHOICE",
3519          "members": [
3520            {
3521              "type": "SEQ",
3522              "members": [
3523                {
3524                  "type": "CHOICE",
3525                  "members": [
3526                    {
3527                      "type": "SYMBOL",
3528                      "name": "parameter_declaration"
3529                    },
3530                    {
3531                      "type": "STRING",
3532                      "value": "..."
3533                    }
3534                  ]
3535                },
3536                {
3537                  "type": "REPEAT",
3538                  "content": {
3539                    "type": "SEQ",
3540                    "members": [
3541                      {
3542                        "type": "STRING",
3543                        "value": ","
3544                      },
3545                      {
3546                        "type": "CHOICE",
3547                        "members": [
3548                          {
3549                            "type": "SYMBOL",
3550                            "name": "parameter_declaration"
3551                          },
3552                          {
3553                            "type": "STRING",
3554                            "value": "..."
3555                          }
3556                        ]
3557                      }
3558                    ]
3559                  }
3560                }
3561              ]
3562            },
3563            {
3564              "type": "BLANK"
3565            }
3566          ]
3567        },
3568        {
3569          "type": "STRING",
3570          "value": ")"
3571        }
3572      ]
3573    },
3574    "parameter_declaration": {
3575      "type": "SEQ",
3576      "members": [
3577        {
3578          "type": "SYMBOL",
3579          "name": "_declaration_specifiers"
3580        },
3581        {
3582          "type": "CHOICE",
3583          "members": [
3584            {
3585              "type": "FIELD",
3586              "name": "declarator",
3587              "content": {
3588                "type": "CHOICE",
3589                "members": [
3590                  {
3591                    "type": "SYMBOL",
3592                    "name": "_declarator"
3593                  },
3594                  {
3595                    "type": "SYMBOL",
3596                    "name": "_abstract_declarator"
3597                  }
3598                ]
3599              }
3600            },
3601            {
3602              "type": "BLANK"
3603            }
3604          ]
3605        }
3606      ]
3607    },
3608    "_statement": {
3609      "type": "CHOICE",
3610      "members": [
3611        {
3612          "type": "SYMBOL",
3613          "name": "case_statement"
3614        },
3615        {
3616          "type": "SYMBOL",
3617          "name": "_non_case_statement"
3618        }
3619      ]
3620    },
3621    "_non_case_statement": {
3622      "type": "CHOICE",
3623      "members": [
3624        {
3625          "type": "SYMBOL",
3626          "name": "labeled_statement"
3627        },
3628        {
3629          "type": "SYMBOL",
3630          "name": "compound_statement"
3631        },
3632        {
3633          "type": "SYMBOL",
3634          "name": "expression_statement"
3635        },
3636        {
3637          "type": "SYMBOL",
3638          "name": "if_statement"
3639        },
3640        {
3641          "type": "SYMBOL",
3642          "name": "switch_statement"
3643        },
3644        {
3645          "type": "SYMBOL",
3646          "name": "do_statement"
3647        },
3648        {
3649          "type": "SYMBOL",
3650          "name": "while_statement"
3651        },
3652        {
3653          "type": "SYMBOL",
3654          "name": "for_statement"
3655        },
3656        {
3657          "type": "SYMBOL",
3658          "name": "return_statement"
3659        },
3660        {
3661          "type": "SYMBOL",
3662          "name": "break_statement"
3663        },
3664        {
3665          "type": "SYMBOL",
3666          "name": "continue_statement"
3667        },
3668        {
3669          "type": "SYMBOL",
3670          "name": "goto_statement"
3671        }
3672      ]
3673    },
3674    "labeled_statement": {
3675      "type": "SEQ",
3676      "members": [
3677        {
3678          "type": "FIELD",
3679          "name": "label",
3680          "content": {
3681            "type": "SYMBOL",
3682            "name": "_statement_identifier"
3683          }
3684        },
3685        {
3686          "type": "STRING",
3687          "value": ":"
3688        },
3689        {
3690          "type": "SYMBOL",
3691          "name": "_statement"
3692        }
3693      ]
3694    },
3695    "expression_statement": {
3696      "type": "SEQ",
3697      "members": [
3698        {
3699          "type": "CHOICE",
3700          "members": [
3701            {
3702              "type": "CHOICE",
3703              "members": [
3704                {
3705                  "type": "SYMBOL",
3706                  "name": "_expression"
3707                },
3708                {
3709                  "type": "SYMBOL",
3710                  "name": "comma_expression"
3711                }
3712              ]
3713            },
3714            {
3715              "type": "BLANK"
3716            }
3717          ]
3718        },
3719        {
3720          "type": "STRING",
3721          "value": ";"
3722        }
3723      ]
3724    },
3725    "if_statement": {
3726      "type": "PREC_RIGHT",
3727      "value": 0,
3728      "content": {
3729        "type": "SEQ",
3730        "members": [
3731          {
3732            "type": "STRING",
3733            "value": "if"
3734          },
3735          {
3736            "type": "FIELD",
3737            "name": "condition",
3738            "content": {
3739              "type": "SYMBOL",
3740              "name": "parenthesized_expression"
3741            }
3742          },
3743          {
3744            "type": "FIELD",
3745            "name": "consequence",
3746            "content": {
3747              "type": "SYMBOL",
3748              "name": "_statement"
3749            }
3750          },
3751          {
3752            "type": "CHOICE",
3753            "members": [
3754              {
3755                "type": "SEQ",
3756                "members": [
3757                  {
3758                    "type": "STRING",
3759                    "value": "else"
3760                  },
3761                  {
3762                    "type": "FIELD",
3763                    "name": "alternative",
3764                    "content": {
3765                      "type": "SYMBOL",
3766                      "name": "_statement"
3767                    }
3768                  }
3769                ]
3770              },
3771              {
3772                "type": "BLANK"
3773              }
3774            ]
3775          }
3776        ]
3777      }
3778    },
3779    "switch_statement": {
3780      "type": "SEQ",
3781      "members": [
3782        {
3783          "type": "STRING",
3784          "value": "switch"
3785        },
3786        {
3787          "type": "FIELD",
3788          "name": "condition",
3789          "content": {
3790            "type": "SYMBOL",
3791            "name": "parenthesized_expression"
3792          }
3793        },
3794        {
3795          "type": "FIELD",
3796          "name": "body",
3797          "content": {
3798            "type": "SYMBOL",
3799            "name": "compound_statement"
3800          }
3801        }
3802      ]
3803    },
3804    "case_statement": {
3805      "type": "PREC_RIGHT",
3806      "value": 0,
3807      "content": {
3808        "type": "SEQ",
3809        "members": [
3810          {
3811            "type": "CHOICE",
3812            "members": [
3813              {
3814                "type": "SEQ",
3815                "members": [
3816                  {
3817                    "type": "STRING",
3818                    "value": "case"
3819                  },
3820                  {
3821                    "type": "FIELD",
3822                    "name": "value",
3823                    "content": {
3824                      "type": "SYMBOL",
3825                      "name": "_expression"
3826                    }
3827                  }
3828                ]
3829              },
3830              {
3831                "type": "STRING",
3832                "value": "default"
3833              }
3834            ]
3835          },
3836          {
3837            "type": "STRING",
3838            "value": ":"
3839          },
3840          {
3841            "type": "REPEAT",
3842            "content": {
3843              "type": "CHOICE",
3844              "members": [
3845                {
3846                  "type": "SYMBOL",
3847                  "name": "_non_case_statement"
3848                },
3849                {
3850                  "type": "SYMBOL",
3851                  "name": "declaration"
3852                },
3853                {
3854                  "type": "SYMBOL",
3855                  "name": "type_definition"
3856                }
3857              ]
3858            }
3859          }
3860        ]
3861      }
3862    },
3863    "while_statement": {
3864      "type": "SEQ",
3865      "members": [
3866        {
3867          "type": "STRING",
3868          "value": "while"
3869        },
3870        {
3871          "type": "FIELD",
3872          "name": "condition",
3873          "content": {
3874            "type": "SYMBOL",
3875            "name": "parenthesized_expression"
3876          }
3877        },
3878        {
3879          "type": "FIELD",
3880          "name": "body",
3881          "content": {
3882            "type": "SYMBOL",
3883            "name": "_statement"
3884          }
3885        }
3886      ]
3887    },
3888    "do_statement": {
3889      "type": "SEQ",
3890      "members": [
3891        {
3892          "type": "STRING",
3893          "value": "do"
3894        },
3895        {
3896          "type": "FIELD",
3897          "name": "body",
3898          "content": {
3899            "type": "SYMBOL",
3900            "name": "_statement"
3901          }
3902        },
3903        {
3904          "type": "STRING",
3905          "value": "while"
3906        },
3907        {
3908          "type": "FIELD",
3909          "name": "condition",
3910          "content": {
3911            "type": "SYMBOL",
3912            "name": "parenthesized_expression"
3913          }
3914        },
3915        {
3916          "type": "STRING",
3917          "value": ";"
3918        }
3919      ]
3920    },
3921    "for_statement": {
3922      "type": "SEQ",
3923      "members": [
3924        {
3925          "type": "STRING",
3926          "value": "for"
3927        },
3928        {
3929          "type": "STRING",
3930          "value": "("
3931        },
3932        {
3933          "type": "CHOICE",
3934          "members": [
3935            {
3936              "type": "FIELD",
3937              "name": "initializer",
3938              "content": {
3939                "type": "SYMBOL",
3940                "name": "declaration"
3941              }
3942            },
3943            {
3944              "type": "SEQ",
3945              "members": [
3946                {
3947                  "type": "FIELD",
3948                  "name": "initializer",
3949                  "content": {
3950                    "type": "CHOICE",
3951                    "members": [
3952                      {
3953                        "type": "CHOICE",
3954                        "members": [
3955                          {
3956                            "type": "SYMBOL",
3957                            "name": "_expression"
3958                          },
3959                          {
3960                            "type": "SYMBOL",
3961                            "name": "comma_expression"
3962                          }
3963                        ]
3964                      },
3965                      {
3966                        "type": "BLANK"
3967                      }
3968                    ]
3969                  }
3970                },
3971                {
3972                  "type": "STRING",
3973                  "value": ";"
3974                }
3975              ]
3976            }
3977          ]
3978        },
3979        {
3980          "type": "FIELD",
3981          "name": "condition",
3982          "content": {
3983            "type": "CHOICE",
3984            "members": [
3985              {
3986                "type": "SYMBOL",
3987                "name": "_expression"
3988              },
3989              {
3990                "type": "BLANK"
3991              }
3992            ]
3993          }
3994        },
3995        {
3996          "type": "STRING",
3997          "value": ";"
3998        },
3999        {
4000          "type": "FIELD",
4001          "name": "update",
4002          "content": {
4003            "type": "CHOICE",
4004            "members": [
4005              {
4006                "type": "CHOICE",
4007                "members": [
4008                  {
4009                    "type": "SYMBOL",
4010                    "name": "_expression"
4011                  },
4012                  {
4013                    "type": "SYMBOL",
4014                    "name": "comma_expression"
4015                  }
4016                ]
4017              },
4018              {
4019                "type": "BLANK"
4020              }
4021            ]
4022          }
4023        },
4024        {
4025          "type": "STRING",
4026          "value": ")"
4027        },
4028        {
4029          "type": "SYMBOL",
4030          "name": "_statement"
4031        }
4032      ]
4033    },
4034    "return_statement": {
4035      "type": "SEQ",
4036      "members": [
4037        {
4038          "type": "STRING",
4039          "value": "return"
4040        },
4041        {
4042          "type": "CHOICE",
4043          "members": [
4044            {
4045              "type": "CHOICE",
4046              "members": [
4047                {
4048                  "type": "SYMBOL",
4049                  "name": "_expression"
4050                },
4051                {
4052                  "type": "SYMBOL",
4053                  "name": "comma_expression"
4054                }
4055              ]
4056            },
4057            {
4058              "type": "BLANK"
4059            }
4060          ]
4061        },
4062        {
4063          "type": "STRING",
4064          "value": ";"
4065        }
4066      ]
4067    },
4068    "break_statement": {
4069      "type": "SEQ",
4070      "members": [
4071        {
4072          "type": "STRING",
4073          "value": "break"
4074        },
4075        {
4076          "type": "STRING",
4077          "value": ";"
4078        }
4079      ]
4080    },
4081    "continue_statement": {
4082      "type": "SEQ",
4083      "members": [
4084        {
4085          "type": "STRING",
4086          "value": "continue"
4087        },
4088        {
4089          "type": "STRING",
4090          "value": ";"
4091        }
4092      ]
4093    },
4094    "goto_statement": {
4095      "type": "SEQ",
4096      "members": [
4097        {
4098          "type": "STRING",
4099          "value": "goto"
4100        },
4101        {
4102          "type": "FIELD",
4103          "name": "label",
4104          "content": {
4105            "type": "SYMBOL",
4106            "name": "_statement_identifier"
4107          }
4108        },
4109        {
4110          "type": "STRING",
4111          "value": ";"
4112        }
4113      ]
4114    },
4115    "_expression": {
4116      "type": "CHOICE",
4117      "members": [
4118        {
4119          "type": "SYMBOL",
4120          "name": "conditional_expression"
4121        },
4122        {
4123          "type": "SYMBOL",
4124          "name": "assignment_expression"
4125        },
4126        {
4127          "type": "SYMBOL",
4128          "name": "binary_expression"
4129        },
4130        {
4131          "type": "SYMBOL",
4132          "name": "unary_expression"
4133        },
4134        {
4135          "type": "SYMBOL",
4136          "name": "update_expression"
4137        },
4138        {
4139          "type": "SYMBOL",
4140          "name": "cast_expression"
4141        },
4142        {
4143          "type": "SYMBOL",
4144          "name": "pointer_expression"
4145        },
4146        {
4147          "type": "SYMBOL",
4148          "name": "sizeof_expression"
4149        },
4150        {
4151          "type": "SYMBOL",
4152          "name": "subscript_expression"
4153        },
4154        {
4155          "type": "SYMBOL",
4156          "name": "call_expression"
4157        },
4158        {
4159          "type": "SYMBOL",
4160          "name": "field_expression"
4161        },
4162        {
4163          "type": "SYMBOL",
4164          "name": "compound_literal_expression"
4165        },
4166        {
4167          "type": "SYMBOL",
4168          "name": "identifier"
4169        },
4170        {
4171          "type": "SYMBOL",
4172          "name": "number_literal"
4173        },
4174        {
4175          "type": "SYMBOL",
4176          "name": "string_literal"
4177        },
4178        {
4179          "type": "SYMBOL",
4180          "name": "true"
4181        },
4182        {
4183          "type": "SYMBOL",
4184          "name": "false"
4185        },
4186        {
4187          "type": "SYMBOL",
4188          "name": "null"
4189        },
4190        {
4191          "type": "SYMBOL",
4192          "name": "concatenated_string"
4193        },
4194        {
4195          "type": "SYMBOL",
4196          "name": "char_literal"
4197        },
4198        {
4199          "type": "SYMBOL",
4200          "name": "parenthesized_expression"
4201        }
4202      ]
4203    },
4204    "comma_expression": {
4205      "type": "SEQ",
4206      "members": [
4207        {
4208          "type": "FIELD",
4209          "name": "left",
4210          "content": {
4211            "type": "SYMBOL",
4212            "name": "_expression"
4213          }
4214        },
4215        {
4216          "type": "STRING",
4217          "value": ","
4218        },
4219        {
4220          "type": "FIELD",
4221          "name": "right",
4222          "content": {
4223            "type": "CHOICE",
4224            "members": [
4225              {
4226                "type": "SYMBOL",
4227                "name": "_expression"
4228              },
4229              {
4230                "type": "SYMBOL",
4231                "name": "comma_expression"
4232              }
4233            ]
4234          }
4235        }
4236      ]
4237    },
4238    "conditional_expression": {
4239      "type": "PREC_RIGHT",
4240      "value": -2,
4241      "content": {
4242        "type": "SEQ",
4243        "members": [
4244          {
4245            "type": "FIELD",
4246            "name": "condition",
4247            "content": {
4248              "type": "SYMBOL",
4249              "name": "_expression"
4250            }
4251          },
4252          {
4253            "type": "STRING",
4254            "value": "?"
4255          },
4256          {
4257            "type": "FIELD",
4258            "name": "consequence",
4259            "content": {
4260              "type": "SYMBOL",
4261              "name": "_expression"
4262            }
4263          },
4264          {
4265            "type": "STRING",
4266            "value": ":"
4267          },
4268          {
4269            "type": "FIELD",
4270            "name": "alternative",
4271            "content": {
4272              "type": "SYMBOL",
4273              "name": "_expression"
4274            }
4275          }
4276        ]
4277      }
4278    },
4279    "_assignment_left_expression": {
4280      "type": "CHOICE",
4281      "members": [
4282        {
4283          "type": "SYMBOL",
4284          "name": "identifier"
4285        },
4286        {
4287          "type": "SYMBOL",
4288          "name": "call_expression"
4289        },
4290        {
4291          "type": "SYMBOL",
4292          "name": "field_expression"
4293        },
4294        {
4295          "type": "SYMBOL",
4296          "name": "pointer_expression"
4297        },
4298        {
4299          "type": "SYMBOL",
4300          "name": "subscript_expression"
4301        },
4302        {
4303          "type": "SYMBOL",
4304          "name": "parenthesized_expression"
4305        }
4306      ]
4307    },
4308    "assignment_expression": {
4309      "type": "PREC_RIGHT",
4310      "value": -1,
4311      "content": {
4312        "type": "SEQ",
4313        "members": [
4314          {
4315            "type": "FIELD",
4316            "name": "left",
4317            "content": {
4318              "type": "SYMBOL",
4319              "name": "_assignment_left_expression"
4320            }
4321          },
4322          {
4323            "type": "CHOICE",
4324            "members": [
4325              {
4326                "type": "STRING",
4327                "value": "="
4328              },
4329              {
4330                "type": "STRING",
4331                "value": "*="
4332              },
4333              {
4334                "type": "STRING",
4335                "value": "/="
4336              },
4337              {
4338                "type": "STRING",
4339                "value": "%="
4340              },
4341              {
4342                "type": "STRING",
4343                "value": "+="
4344              },
4345              {
4346                "type": "STRING",
4347                "value": "-="
4348              },
4349              {
4350                "type": "STRING",
4351                "value": "<<="
4352              },
4353              {
4354                "type": "STRING",
4355                "value": ">>="
4356              },
4357              {
4358                "type": "STRING",
4359                "value": "&="
4360              },
4361              {
4362                "type": "STRING",
4363                "value": "^="
4364              },
4365              {
4366                "type": "STRING",
4367                "value": "|="
4368              }
4369            ]
4370          },
4371          {
4372            "type": "FIELD",
4373            "name": "right",
4374            "content": {
4375              "type": "SYMBOL",
4376              "name": "_expression"
4377            }
4378          }
4379        ]
4380      }
4381    },
4382    "pointer_expression": {
4383      "type": "PREC_LEFT",
4384      "value": 12,
4385      "content": {
4386        "type": "SEQ",
4387        "members": [
4388          {
4389            "type": "FIELD",
4390            "name": "operator",
4391            "content": {
4392              "type": "CHOICE",
4393              "members": [
4394                {
4395                  "type": "STRING",
4396                  "value": "*"
4397                },
4398                {
4399                  "type": "STRING",
4400                  "value": "&"
4401                }
4402              ]
4403            }
4404          },
4405          {
4406            "type": "FIELD",
4407            "name": "argument",
4408            "content": {
4409              "type": "SYMBOL",
4410              "name": "_expression"
4411            }
4412          }
4413        ]
4414      }
4415    },
4416    "unary_expression": {
4417      "type": "PREC_LEFT",
4418      "value": 13,
4419      "content": {
4420        "type": "SEQ",
4421        "members": [
4422          {
4423            "type": "FIELD",
4424            "name": "operator",
4425            "content": {
4426              "type": "CHOICE",
4427              "members": [
4428                {
4429                  "type": "STRING",
4430                  "value": "!"
4431                },
4432                {
4433                  "type": "STRING",
4434                  "value": "~"
4435                },
4436                {
4437                  "type": "STRING",
4438                  "value": "-"
4439                },
4440                {
4441                  "type": "STRING",
4442                  "value": "+"
4443                }
4444              ]
4445            }
4446          },
4447          {
4448            "type": "FIELD",
4449            "name": "argument",
4450            "content": {
4451              "type": "SYMBOL",
4452              "name": "_expression"
4453            }
4454          }
4455        ]
4456      }
4457    },
4458    "binary_expression": {
4459      "type": "CHOICE",
4460      "members": [
4461        {
4462          "type": "PREC_LEFT",
4463          "value": 10,
4464          "content": {
4465            "type": "SEQ",
4466            "members": [
4467              {
4468                "type": "FIELD",
4469                "name": "left",
4470                "content": {
4471                  "type": "SYMBOL",
4472                  "name": "_expression"
4473                }
4474              },
4475              {
4476                "type": "FIELD",
4477                "name": "operator",
4478                "content": {
4479                  "type": "STRING",
4480                  "value": "+"
4481                }
4482              },
4483              {
4484                "type": "FIELD",
4485                "name": "right",
4486                "content": {
4487                  "type": "SYMBOL",
4488                  "name": "_expression"
4489                }
4490              }
4491            ]
4492          }
4493        },
4494        {
4495          "type": "PREC_LEFT",
4496          "value": 10,
4497          "content": {
4498            "type": "SEQ",
4499            "members": [
4500              {
4501                "type": "FIELD",
4502                "name": "left",
4503                "content": {
4504                  "type": "SYMBOL",
4505                  "name": "_expression"
4506                }
4507              },
4508              {
4509                "type": "FIELD",
4510                "name": "operator",
4511                "content": {
4512                  "type": "STRING",
4513                  "value": "-"
4514                }
4515              },
4516              {
4517                "type": "FIELD",
4518                "name": "right",
4519                "content": {
4520                  "type": "SYMBOL",
4521                  "name": "_expression"
4522                }
4523              }
4524            ]
4525          }
4526        },
4527        {
4528          "type": "PREC_LEFT",
4529          "value": 11,
4530          "content": {
4531            "type": "SEQ",
4532            "members": [
4533              {
4534                "type": "FIELD",
4535                "name": "left",
4536                "content": {
4537                  "type": "SYMBOL",
4538                  "name": "_expression"
4539                }
4540              },
4541              {
4542                "type": "FIELD",
4543                "name": "operator",
4544                "content": {
4545                  "type": "STRING",
4546                  "value": "*"
4547                }
4548              },
4549              {
4550                "type": "FIELD",
4551                "name": "right",
4552                "content": {
4553                  "type": "SYMBOL",
4554                  "name": "_expression"
4555                }
4556              }
4557            ]
4558          }
4559        },
4560        {
4561          "type": "PREC_LEFT",
4562          "value": 11,
4563          "content": {
4564            "type": "SEQ",
4565            "members": [
4566              {
4567                "type": "FIELD",
4568                "name": "left",
4569                "content": {
4570                  "type": "SYMBOL",
4571                  "name": "_expression"
4572                }
4573              },
4574              {
4575                "type": "FIELD",
4576                "name": "operator",
4577                "content": {
4578                  "type": "STRING",
4579                  "value": "/"
4580                }
4581              },
4582              {
4583                "type": "FIELD",
4584                "name": "right",
4585                "content": {
4586                  "type": "SYMBOL",
4587                  "name": "_expression"
4588                }
4589              }
4590            ]
4591          }
4592        },
4593        {
4594          "type": "PREC_LEFT",
4595          "value": 11,
4596          "content": {
4597            "type": "SEQ",
4598            "members": [
4599              {
4600                "type": "FIELD",
4601                "name": "left",
4602                "content": {
4603                  "type": "SYMBOL",
4604                  "name": "_expression"
4605                }
4606              },
4607              {
4608                "type": "FIELD",
4609                "name": "operator",
4610                "content": {
4611                  "type": "STRING",
4612                  "value": "%"
4613                }
4614              },
4615              {
4616                "type": "FIELD",
4617                "name": "right",
4618                "content": {
4619                  "type": "SYMBOL",
4620                  "name": "_expression"
4621                }
4622              }
4623            ]
4624          }
4625        },
4626        {
4627          "type": "PREC_LEFT",
4628          "value": 1,
4629          "content": {
4630            "type": "SEQ",
4631            "members": [
4632              {
4633                "type": "FIELD",
4634                "name": "left",
4635                "content": {
4636                  "type": "SYMBOL",
4637                  "name": "_expression"
4638                }
4639              },
4640              {
4641                "type": "FIELD",
4642                "name": "operator",
4643                "content": {
4644                  "type": "STRING",
4645                  "value": "||"
4646                }
4647              },
4648              {
4649                "type": "FIELD",
4650                "name": "right",
4651                "content": {
4652                  "type": "SYMBOL",
4653                  "name": "_expression"
4654                }
4655              }
4656            ]
4657          }
4658        },
4659        {
4660          "type": "PREC_LEFT",
4661          "value": 2,
4662          "content": {
4663            "type": "SEQ",
4664            "members": [
4665              {
4666                "type": "FIELD",
4667                "name": "left",
4668                "content": {
4669                  "type": "SYMBOL",
4670                  "name": "_expression"
4671                }
4672              },
4673              {
4674                "type": "FIELD",
4675                "name": "operator",
4676                "content": {
4677                  "type": "STRING",
4678                  "value": "&&"
4679                }
4680              },
4681              {
4682                "type": "FIELD",
4683                "name": "right",
4684                "content": {
4685                  "type": "SYMBOL",
4686                  "name": "_expression"
4687                }
4688              }
4689            ]
4690          }
4691        },
4692        {
4693          "type": "PREC_LEFT",
4694          "value": 3,
4695          "content": {
4696            "type": "SEQ",
4697            "members": [
4698              {
4699                "type": "FIELD",
4700                "name": "left",
4701                "content": {
4702                  "type": "SYMBOL",
4703                  "name": "_expression"
4704                }
4705              },
4706              {
4707                "type": "FIELD",
4708                "name": "operator",
4709                "content": {
4710                  "type": "STRING",
4711                  "value": "|"
4712                }
4713              },
4714              {
4715                "type": "FIELD",
4716                "name": "right",
4717                "content": {
4718                  "type": "SYMBOL",
4719                  "name": "_expression"
4720                }
4721              }
4722            ]
4723          }
4724        },
4725        {
4726          "type": "PREC_LEFT",
4727          "value": 4,
4728          "content": {
4729            "type": "SEQ",
4730            "members": [
4731              {
4732                "type": "FIELD",
4733                "name": "left",
4734                "content": {
4735                  "type": "SYMBOL",
4736                  "name": "_expression"
4737                }
4738              },
4739              {
4740                "type": "FIELD",
4741                "name": "operator",
4742                "content": {
4743                  "type": "STRING",
4744                  "value": "^"
4745                }
4746              },
4747              {
4748                "type": "FIELD",
4749                "name": "right",
4750                "content": {
4751                  "type": "SYMBOL",
4752                  "name": "_expression"
4753                }
4754              }
4755            ]
4756          }
4757        },
4758        {
4759          "type": "PREC_LEFT",
4760          "value": 5,
4761          "content": {
4762            "type": "SEQ",
4763            "members": [
4764              {
4765                "type": "FIELD",
4766                "name": "left",
4767                "content": {
4768                  "type": "SYMBOL",
4769                  "name": "_expression"
4770                }
4771              },
4772              {
4773                "type": "FIELD",
4774                "name": "operator",
4775                "content": {
4776                  "type": "STRING",
4777                  "value": "&"
4778                }
4779              },
4780              {
4781                "type": "FIELD",
4782                "name": "right",
4783                "content": {
4784                  "type": "SYMBOL",
4785                  "name": "_expression"
4786                }
4787              }
4788            ]
4789          }
4790        },
4791        {
4792          "type": "PREC_LEFT",
4793          "value": 6,
4794          "content": {
4795            "type": "SEQ",
4796            "members": [
4797              {
4798                "type": "FIELD",
4799                "name": "left",
4800                "content": {
4801                  "type": "SYMBOL",
4802                  "name": "_expression"
4803                }
4804              },
4805              {
4806                "type": "FIELD",
4807                "name": "operator",
4808                "content": {
4809                  "type": "STRING",
4810                  "value": "=="
4811                }
4812              },
4813              {
4814                "type": "FIELD",
4815                "name": "right",
4816                "content": {
4817                  "type": "SYMBOL",
4818                  "name": "_expression"
4819                }
4820              }
4821            ]
4822          }
4823        },
4824        {
4825          "type": "PREC_LEFT",
4826          "value": 6,
4827          "content": {
4828            "type": "SEQ",
4829            "members": [
4830              {
4831                "type": "FIELD",
4832                "name": "left",
4833                "content": {
4834                  "type": "SYMBOL",
4835                  "name": "_expression"
4836                }
4837              },
4838              {
4839                "type": "FIELD",
4840                "name": "operator",
4841                "content": {
4842                  "type": "STRING",
4843                  "value": "!="
4844                }
4845              },
4846              {
4847                "type": "FIELD",
4848                "name": "right",
4849                "content": {
4850                  "type": "SYMBOL",
4851                  "name": "_expression"
4852                }
4853              }
4854            ]
4855          }
4856        },
4857        {
4858          "type": "PREC_LEFT",
4859          "value": 7,
4860          "content": {
4861            "type": "SEQ",
4862            "members": [
4863              {
4864                "type": "FIELD",
4865                "name": "left",
4866                "content": {
4867                  "type": "SYMBOL",
4868                  "name": "_expression"
4869                }
4870              },
4871              {
4872                "type": "FIELD",
4873                "name": "operator",
4874                "content": {
4875                  "type": "STRING",
4876                  "value": ">"
4877                }
4878              },
4879              {
4880                "type": "FIELD",
4881                "name": "right",
4882                "content": {
4883                  "type": "SYMBOL",
4884                  "name": "_expression"
4885                }
4886              }
4887            ]
4888          }
4889        },
4890        {
4891          "type": "PREC_LEFT",
4892          "value": 7,
4893          "content": {
4894            "type": "SEQ",
4895            "members": [
4896              {
4897                "type": "FIELD",
4898                "name": "left",
4899                "content": {
4900                  "type": "SYMBOL",
4901                  "name": "_expression"
4902                }
4903              },
4904              {
4905                "type": "FIELD",
4906                "name": "operator",
4907                "content": {
4908                  "type": "STRING",
4909                  "value": ">="
4910                }
4911              },
4912              {
4913                "type": "FIELD",
4914                "name": "right",
4915                "content": {
4916                  "type": "SYMBOL",
4917                  "name": "_expression"
4918                }
4919              }
4920            ]
4921          }
4922        },
4923        {
4924          "type": "PREC_LEFT",
4925          "value": 7,
4926          "content": {
4927            "type": "SEQ",
4928            "members": [
4929              {
4930                "type": "FIELD",
4931                "name": "left",
4932                "content": {
4933                  "type": "SYMBOL",
4934                  "name": "_expression"
4935                }
4936              },
4937              {
4938                "type": "FIELD",
4939                "name": "operator",
4940                "content": {
4941                  "type": "STRING",
4942                  "value": "<="
4943                }
4944              },
4945              {
4946                "type": "FIELD",
4947                "name": "right",
4948                "content": {
4949                  "type": "SYMBOL",
4950                  "name": "_expression"
4951                }
4952              }
4953            ]
4954          }
4955        },
4956        {
4957          "type": "PREC_LEFT",
4958          "value": 7,
4959          "content": {
4960            "type": "SEQ",
4961            "members": [
4962              {
4963                "type": "FIELD",
4964                "name": "left",
4965                "content": {
4966                  "type": "SYMBOL",
4967                  "name": "_expression"
4968                }
4969              },
4970              {
4971                "type": "FIELD",
4972                "name": "operator",
4973                "content": {
4974                  "type": "STRING",
4975                  "value": "<"
4976                }
4977              },
4978              {
4979                "type": "FIELD",
4980                "name": "right",
4981                "content": {
4982                  "type": "SYMBOL",
4983                  "name": "_expression"
4984                }
4985              }
4986            ]
4987          }
4988        },
4989        {
4990          "type": "PREC_LEFT",
4991          "value": 9,
4992          "content": {
4993            "type": "SEQ",
4994            "members": [
4995              {
4996                "type": "FIELD",
4997                "name": "left",
4998                "content": {
4999                  "type": "SYMBOL",
5000                  "name": "_expression"
5001                }
5002              },
5003              {
5004                "type": "FIELD",
5005                "name": "operator",
5006                "content": {
5007                  "type": "STRING",
5008                  "value": "<<"
5009                }
5010              },
5011              {
5012                "type": "FIELD",
5013                "name": "right",
5014                "content": {
5015                  "type": "SYMBOL",
5016                  "name": "_expression"
5017                }
5018              }
5019            ]
5020          }
5021        },
5022        {
5023          "type": "PREC_LEFT",
5024          "value": 9,
5025          "content": {
5026            "type": "SEQ",
5027            "members": [
5028              {
5029                "type": "FIELD",
5030                "name": "left",
5031                "content": {
5032                  "type": "SYMBOL",
5033                  "name": "_expression"
5034                }
5035              },
5036              {
5037                "type": "FIELD",
5038                "name": "operator",
5039                "content": {
5040                  "type": "STRING",
5041                  "value": ">>"
5042                }
5043              },
5044              {
5045                "type": "FIELD",
5046                "name": "right",
5047                "content": {
5048                  "type": "SYMBOL",
5049                  "name": "_expression"
5050                }
5051              }
5052            ]
5053          }
5054        }
5055      ]
5056    },
5057    "update_expression": {
5058      "type": "PREC_RIGHT",
5059      "value": 13,
5060      "content": {
5061        "type": "CHOICE",
5062        "members": [
5063          {
5064            "type": "SEQ",
5065            "members": [
5066              {
5067                "type": "FIELD",
5068                "name": "operator",
5069                "content": {
5070                  "type": "CHOICE",
5071                  "members": [
5072                    {
5073                      "type": "STRING",
5074                      "value": "--"
5075                    },
5076                    {
5077                      "type": "STRING",
5078                      "value": "++"
5079                    }
5080                  ]
5081                }
5082              },
5083              {
5084                "type": "FIELD",
5085                "name": "argument",
5086                "content": {
5087                  "type": "SYMBOL",
5088                  "name": "_expression"
5089                }
5090              }
5091            ]
5092          },
5093          {
5094            "type": "SEQ",
5095            "members": [
5096              {
5097                "type": "FIELD",
5098                "name": "argument",
5099                "content": {
5100                  "type": "SYMBOL",
5101                  "name": "_expression"
5102                }
5103              },
5104              {
5105                "type": "FIELD",
5106                "name": "operator",
5107                "content": {
5108                  "type": "CHOICE",
5109                  "members": [
5110                    {
5111                      "type": "STRING",
5112                      "value": "--"
5113                    },
5114                    {
5115                      "type": "STRING",
5116                      "value": "++"
5117                    }
5118                  ]
5119                }
5120              }
5121            ]
5122          }
5123        ]
5124      }
5125    },
5126    "cast_expression": {
5127      "type": "PREC",
5128      "value": 12,
5129      "content": {
5130        "type": "SEQ",
5131        "members": [
5132          {
5133            "type": "STRING",
5134            "value": "("
5135          },
5136          {
5137            "type": "FIELD",
5138            "name": "type",
5139            "content": {
5140              "type": "SYMBOL",
5141              "name": "type_descriptor"
5142            }
5143          },
5144          {
5145            "type": "STRING",
5146            "value": ")"
5147          },
5148          {
5149            "type": "FIELD",
5150            "name": "value",
5151            "content": {
5152              "type": "SYMBOL",
5153              "name": "_expression"
5154            }
5155          }
5156        ]
5157      }
5158    },
5159    "type_descriptor": {
5160      "type": "SEQ",
5161      "members": [
5162        {
5163          "type": "REPEAT",
5164          "content": {
5165            "type": "SYMBOL",
5166            "name": "type_qualifier"
5167          }
5168        },
5169        {
5170          "type": "FIELD",
5171          "name": "type",
5172          "content": {
5173            "type": "SYMBOL",
5174            "name": "_type_specifier"
5175          }
5176        },
5177        {
5178          "type": "REPEAT",
5179          "content": {
5180            "type": "SYMBOL",
5181            "name": "type_qualifier"
5182          }
5183        },
5184        {
5185          "type": "FIELD",
5186          "name": "declarator",
5187          "content": {
5188            "type": "CHOICE",
5189            "members": [
5190              {
5191                "type": "SYMBOL",
5192                "name": "_abstract_declarator"
5193              },
5194              {
5195                "type": "BLANK"
5196              }
5197            ]
5198          }
5199        }
5200      ]
5201    },
5202    "sizeof_expression": {
5203      "type": "PREC",
5204      "value": 8,
5205      "content": {
5206        "type": "SEQ",
5207        "members": [
5208          {
5209            "type": "STRING",
5210            "value": "sizeof"
5211          },
5212          {
5213            "type": "CHOICE",
5214            "members": [
5215              {
5216                "type": "FIELD",
5217                "name": "value",
5218                "content": {
5219                  "type": "SYMBOL",
5220                  "name": "_expression"
5221                }
5222              },
5223              {
5224                "type": "SEQ",
5225                "members": [
5226                  {
5227                    "type": "STRING",
5228                    "value": "("
5229                  },
5230                  {
5231                    "type": "FIELD",
5232                    "name": "type",
5233                    "content": {
5234                      "type": "SYMBOL",
5235                      "name": "type_descriptor"
5236                    }
5237                  },
5238                  {
5239                    "type": "STRING",
5240                    "value": ")"
5241                  }
5242                ]
5243              }
5244            ]
5245          }
5246        ]
5247      }
5248    },
5249    "subscript_expression": {
5250      "type": "PREC",
5251      "value": 16,
5252      "content": {
5253        "type": "SEQ",
5254        "members": [
5255          {
5256            "type": "FIELD",
5257            "name": "argument",
5258            "content": {
5259              "type": "SYMBOL",
5260              "name": "_expression"
5261            }
5262          },
5263          {
5264            "type": "STRING",
5265            "value": "["
5266          },
5267          {
5268            "type": "FIELD",
5269            "name": "index",
5270            "content": {
5271              "type": "SYMBOL",
5272              "name": "_expression"
5273            }
5274          },
5275          {
5276            "type": "STRING",
5277            "value": "]"
5278          }
5279        ]
5280      }
5281    },
5282    "call_expression": {
5283      "type": "PREC",
5284      "value": 14,
5285      "content": {
5286        "type": "SEQ",
5287        "members": [
5288          {
5289            "type": "FIELD",
5290            "name": "function",
5291            "content": {
5292              "type": "SYMBOL",
5293              "name": "_expression"
5294            }
5295          },
5296          {
5297            "type": "FIELD",
5298            "name": "arguments",
5299            "content": {
5300              "type": "SYMBOL",
5301              "name": "argument_list"
5302            }
5303          }
5304        ]
5305      }
5306    },
5307    "argument_list": {
5308      "type": "SEQ",
5309      "members": [
5310        {
5311          "type": "STRING",
5312          "value": "("
5313        },
5314        {
5315          "type": "CHOICE",
5316          "members": [
5317            {
5318              "type": "SEQ",
5319              "members": [
5320                {
5321                  "type": "SYMBOL",
5322                  "name": "_expression"
5323                },
5324                {
5325                  "type": "REPEAT",
5326                  "content": {
5327                    "type": "SEQ",
5328                    "members": [
5329                      {
5330                        "type": "STRING",
5331                        "value": ","
5332                      },
5333                      {
5334                        "type": "SYMBOL",
5335                        "name": "_expression"
5336                      }
5337                    ]
5338                  }
5339                }
5340              ]
5341            },
5342            {
5343              "type": "BLANK"
5344            }
5345          ]
5346        },
5347        {
5348          "type": "STRING",
5349          "value": ")"
5350        }
5351      ]
5352    },
5353    "field_expression": {
5354      "type": "SEQ",
5355      "members": [
5356        {
5357          "type": "PREC",
5358          "value": 15,
5359          "content": {
5360            "type": "SEQ",
5361            "members": [
5362              {
5363                "type": "FIELD",
5364                "name": "argument",
5365                "content": {
5366                  "type": "SYMBOL",
5367                  "name": "_expression"
5368                }
5369              },
5370              {
5371                "type": "CHOICE",
5372                "members": [
5373                  {
5374                    "type": "STRING",
5375                    "value": "."
5376                  },
5377                  {
5378                    "type": "STRING",
5379                    "value": "->"
5380                  }
5381                ]
5382              }
5383            ]
5384          }
5385        },
5386        {
5387          "type": "FIELD",
5388          "name": "field",
5389          "content": {
5390            "type": "SYMBOL",
5391            "name": "_field_identifier"
5392          }
5393        }
5394      ]
5395    },
5396    "compound_literal_expression": {
5397      "type": "SEQ",
5398      "members": [
5399        {
5400          "type": "STRING",
5401          "value": "("
5402        },
5403        {
5404          "type": "FIELD",
5405          "name": "type",
5406          "content": {
5407            "type": "SYMBOL",
5408            "name": "type_descriptor"
5409          }
5410        },
5411        {
5412          "type": "STRING",
5413          "value": ")"
5414        },
5415        {
5416          "type": "FIELD",
5417          "name": "value",
5418          "content": {
5419            "type": "SYMBOL",
5420            "name": "initializer_list"
5421          }
5422        }
5423      ]
5424    },
5425    "parenthesized_expression": {
5426      "type": "SEQ",
5427      "members": [
5428        {
5429          "type": "STRING",
5430          "value": "("
5431        },
5432        {
5433          "type": "CHOICE",
5434          "members": [
5435            {
5436              "type": "SYMBOL",
5437              "name": "_expression"
5438            },
5439            {
5440              "type": "SYMBOL",
5441              "name": "comma_expression"
5442            }
5443          ]
5444        },
5445        {
5446          "type": "STRING",
5447          "value": ")"
5448        }
5449      ]
5450    },
5451    "initializer_list": {
5452      "type": "SEQ",
5453      "members": [
5454        {
5455          "type": "STRING",
5456          "value": "{"
5457        },
5458        {
5459          "type": "CHOICE",
5460          "members": [
5461            {
5462              "type": "SEQ",
5463              "members": [
5464                {
5465                  "type": "CHOICE",
5466                  "members": [
5467                    {
5468                      "type": "SYMBOL",
5469                      "name": "initializer_pair"
5470                    },
5471                    {
5472                      "type": "SYMBOL",
5473                      "name": "_expression"
5474                    },
5475                    {
5476                      "type": "SYMBOL",
5477                      "name": "initializer_list"
5478                    }
5479                  ]
5480                },
5481                {
5482                  "type": "REPEAT",
5483                  "content": {
5484                    "type": "SEQ",
5485                    "members": [
5486                      {
5487                        "type": "STRING",
5488                        "value": ","
5489                      },
5490                      {
5491                        "type": "CHOICE",
5492                        "members": [
5493                          {
5494                            "type": "SYMBOL",
5495                            "name": "initializer_pair"
5496                          },
5497                          {
5498                            "type": "SYMBOL",
5499                            "name": "_expression"
5500                          },
5501                          {
5502                            "type": "SYMBOL",
5503                            "name": "initializer_list"
5504                          }
5505                        ]
5506                      }
5507                    ]
5508                  }
5509                }
5510              ]
5511            },
5512            {
5513              "type": "BLANK"
5514            }
5515          ]
5516        },
5517        {
5518          "type": "CHOICE",
5519          "members": [
5520            {
5521              "type": "STRING",
5522              "value": ","
5523            },
5524            {
5525              "type": "BLANK"
5526            }
5527          ]
5528        },
5529        {
5530          "type": "STRING",
5531          "value": "}"
5532        }
5533      ]
5534    },
5535    "initializer_pair": {
5536      "type": "SEQ",
5537      "members": [
5538        {
5539          "type": "FIELD",
5540          "name": "designator",
5541          "content": {
5542            "type": "REPEAT1",
5543            "content": {
5544              "type": "CHOICE",
5545              "members": [
5546                {
5547                  "type": "SYMBOL",
5548                  "name": "subscript_designator"
5549                },
5550                {
5551                  "type": "SYMBOL",
5552                  "name": "field_designator"
5553                }
5554              ]
5555            }
5556          }
5557        },
5558        {
5559          "type": "STRING",
5560          "value": "="
5561        },
5562        {
5563          "type": "FIELD",
5564          "name": "value",
5565          "content": {
5566            "type": "CHOICE",
5567            "members": [
5568              {
5569                "type": "SYMBOL",
5570                "name": "_expression"
5571              },
5572              {
5573                "type": "SYMBOL",
5574                "name": "initializer_list"
5575              }
5576            ]
5577          }
5578        }
5579      ]
5580    },
5581    "subscript_designator": {
5582      "type": "SEQ",
5583      "members": [
5584        {
5585          "type": "STRING",
5586          "value": "["
5587        },
5588        {
5589          "type": "SYMBOL",
5590          "name": "_expression"
5591        },
5592        {
5593          "type": "STRING",
5594          "value": "]"
5595        }
5596      ]
5597    },
5598    "field_designator": {
5599      "type": "SEQ",
5600      "members": [
5601        {
5602          "type": "STRING",
5603          "value": "."
5604        },
5605        {
5606          "type": "SYMBOL",
5607          "name": "_field_identifier"
5608        }
5609      ]
5610    },
5611    "number_literal": {
5612      "type": "TOKEN",
5613      "content": {
5614        "type": "SEQ",
5615        "members": [
5616          {
5617            "type": "CHOICE",
5618            "members": [
5619              {
5620                "type": "PATTERN",
5621                "value": "[-\\+]"
5622              },
5623              {
5624                "type": "BLANK"
5625              }
5626            ]
5627          },
5628          {
5629            "type": "CHOICE",
5630            "members": [
5631              {
5632                "type": "CHOICE",
5633                "members": [
5634                  {
5635                    "type": "STRING",
5636                    "value": "0x"
5637                  },
5638                  {
5639                    "type": "STRING",
5640                    "value": "0b"
5641                  }
5642                ]
5643              },
5644              {
5645                "type": "BLANK"
5646              }
5647            ]
5648          },
5649          {
5650            "type": "CHOICE",
5651            "members": [
5652              {
5653                "type": "SEQ",
5654                "members": [
5655                  {
5656                    "type": "CHOICE",
5657                    "members": [
5658                      {
5659                        "type": "SEQ",
5660                        "members": [
5661                          {
5662                            "type": "REPEAT1",
5663                            "content": {
5664                              "type": "PATTERN",
5665                              "value": "[0-9]"
5666                            }
5667                          },
5668                          {
5669                            "type": "REPEAT",
5670                            "content": {
5671                              "type": "SEQ",
5672                              "members": [
5673                                {
5674                                  "type": "STRING",
5675                                  "value": "'"
5676                                },
5677                                {
5678                                  "type": "REPEAT1",
5679                                  "content": {
5680                                    "type": "PATTERN",
5681                                    "value": "[0-9]"
5682                                  }
5683                                }
5684                              ]
5685                            }
5686                          }
5687                        ]
5688                      },
5689                      {
5690                        "type": "SEQ",
5691                        "members": [
5692                          {
5693                            "type": "STRING",
5694                            "value": "0b"
5695                          },
5696                          {
5697                            "type": "SEQ",
5698                            "members": [
5699                              {
5700                                "type": "REPEAT1",
5701                                "content": {
5702                                  "type": "PATTERN",
5703                                  "value": "[0-9]"
5704                                }
5705                              },
5706                              {
5707                                "type": "REPEAT",
5708                                "content": {
5709                                  "type": "SEQ",
5710                                  "members": [
5711                                    {
5712                                      "type": "STRING",
5713                                      "value": "'"
5714                                    },
5715                                    {
5716                                      "type": "REPEAT1",
5717                                      "content": {
5718                                        "type": "PATTERN",
5719                                        "value": "[0-9]"
5720                                      }
5721                                    }
5722                                  ]
5723                                }
5724                              }
5725                            ]
5726                          }
5727                        ]
5728                      },
5729                      {
5730                        "type": "SEQ",
5731                        "members": [
5732                          {
5733                            "type": "STRING",
5734                            "value": "0x"
5735                          },
5736                          {
5737                            "type": "SEQ",
5738                            "members": [
5739                              {
5740                                "type": "REPEAT1",
5741                                "content": {
5742                                  "type": "PATTERN",
5743                                  "value": "[0-9a-fA-F]"
5744                                }
5745                              },
5746                              {
5747                                "type": "REPEAT",
5748                                "content": {
5749                                  "type": "SEQ",
5750                                  "members": [
5751                                    {
5752                                      "type": "STRING",
5753                                      "value": "'"
5754                                    },
5755                                    {
5756                                      "type": "REPEAT1",
5757                                      "content": {
5758                                        "type": "PATTERN",
5759                                        "value": "[0-9a-fA-F]"
5760                                      }
5761                                    }
5762                                  ]
5763                                }
5764                              }
5765                            ]
5766                          }
5767                        ]
5768                      }
5769                    ]
5770                  },
5771                  {
5772                    "type": "CHOICE",
5773                    "members": [
5774                      {
5775                        "type": "SEQ",
5776                        "members": [
5777                          {
5778                            "type": "STRING",
5779                            "value": "."
5780                          },
5781                          {
5782                            "type": "CHOICE",
5783                            "members": [
5784                              {
5785                                "type": "SEQ",
5786                                "members": [
5787                                  {
5788                                    "type": "REPEAT1",
5789                                    "content": {
5790                                      "type": "PATTERN",
5791                                      "value": "[0-9a-fA-F]"
5792                                    }
5793                                  },
5794                                  {
5795                                    "type": "REPEAT",
5796                                    "content": {
5797                                      "type": "SEQ",
5798                                      "members": [
5799                                        {
5800                                          "type": "STRING",
5801                                          "value": "'"
5802                                        },
5803                                        {
5804                                          "type": "REPEAT1",
5805                                          "content": {
5806                                            "type": "PATTERN",
5807                                            "value": "[0-9a-fA-F]"
5808                                          }
5809                                        }
5810                                      ]
5811                                    }
5812                                  }
5813                                ]
5814                              },
5815                              {
5816                                "type": "BLANK"
5817                              }
5818                            ]
5819                          }
5820                        ]
5821                      },
5822                      {
5823                        "type": "BLANK"
5824                      }
5825                    ]
5826                  }
5827                ]
5828              },
5829              {
5830                "type": "SEQ",
5831                "members": [
5832                  {
5833                    "type": "STRING",
5834                    "value": "."
5835                  },
5836                  {
5837                    "type": "SEQ",
5838                    "members": [
5839                      {
5840                        "type": "REPEAT1",
5841                        "content": {
5842                          "type": "PATTERN",
5843                          "value": "[0-9]"
5844                        }
5845                      },
5846                      {
5847                        "type": "REPEAT",
5848                        "content": {
5849                          "type": "SEQ",
5850                          "members": [
5851                            {
5852                              "type": "STRING",
5853                              "value": "'"
5854                            },
5855                            {
5856                              "type": "REPEAT1",
5857                              "content": {
5858                                "type": "PATTERN",
5859                                "value": "[0-9]"
5860                              }
5861                            }
5862                          ]
5863                        }
5864                      }
5865                    ]
5866                  }
5867                ]
5868              }
5869            ]
5870          },
5871          {
5872            "type": "CHOICE",
5873            "members": [
5874              {
5875                "type": "SEQ",
5876                "members": [
5877                  {
5878                    "type": "PATTERN",
5879                    "value": "[eEpP]"
5880                  },
5881                  {
5882                    "type": "CHOICE",
5883                    "members": [
5884                      {
5885                        "type": "SEQ",
5886                        "members": [
5887                          {
5888                            "type": "CHOICE",
5889                            "members": [
5890                              {
5891                                "type": "PATTERN",
5892                                "value": "[-\\+]"
5893                              },
5894                              {
5895                                "type": "BLANK"
5896                              }
5897                            ]
5898                          },
5899                          {
5900                            "type": "SEQ",
5901                            "members": [
5902                              {
5903                                "type": "REPEAT1",
5904                                "content": {
5905                                  "type": "PATTERN",
5906                                  "value": "[0-9a-fA-F]"
5907                                }
5908                              },
5909                              {
5910                                "type": "REPEAT",
5911                                "content": {
5912                                  "type": "SEQ",
5913                                  "members": [
5914                                    {
5915                                      "type": "STRING",
5916                                      "value": "'"
5917                                    },
5918                                    {
5919                                      "type": "REPEAT1",
5920                                      "content": {
5921                                        "type": "PATTERN",
5922                                        "value": "[0-9a-fA-F]"
5923                                      }
5924                                    }
5925                                  ]
5926                                }
5927                              }
5928                            ]
5929                          }
5930                        ]
5931                      },
5932                      {
5933                        "type": "BLANK"
5934                      }
5935                    ]
5936                  }
5937                ]
5938              },
5939              {
5940                "type": "BLANK"
5941              }
5942            ]
5943          },
5944          {
5945            "type": "REPEAT",
5946            "content": {
5947              "type": "CHOICE",
5948              "members": [
5949                {
5950                  "type": "STRING",
5951                  "value": "u"
5952                },
5953                {
5954                  "type": "STRING",
5955                  "value": "l"
5956                },
5957                {
5958                  "type": "STRING",
5959                  "value": "U"
5960                },
5961                {
5962                  "type": "STRING",
5963                  "value": "L"
5964                },
5965                {
5966                  "type": "STRING",
5967                  "value": "f"
5968                },
5969                {
5970                  "type": "STRING",
5971                  "value": "F"
5972                }
5973              ]
5974            }
5975          }
5976        ]
5977      }
5978    },
5979    "char_literal": {
5980      "type": "SEQ",
5981      "members": [
5982        {
5983          "type": "CHOICE",
5984          "members": [
5985            {
5986              "type": "STRING",
5987              "value": "L'"
5988            },
5989            {
5990              "type": "STRING",
5991              "value": "u'"
5992            },
5993            {
5994              "type": "STRING",
5995              "value": "U'"
5996            },
5997            {
5998              "type": "STRING",
5999              "value": "u8'"
6000            },
6001            {
6002              "type": "STRING",
6003              "value": "'"
6004            }
6005          ]
6006        },
6007        {
6008          "type": "CHOICE",
6009          "members": [
6010            {
6011              "type": "SYMBOL",
6012              "name": "escape_sequence"
6013            },
6014            {
6015              "type": "IMMEDIATE_TOKEN",
6016              "content": {
6017                "type": "PATTERN",
6018                "value": "[^\\n']"
6019              }
6020            }
6021          ]
6022        },
6023        {
6024          "type": "STRING",
6025          "value": "'"
6026        }
6027      ]
6028    },
6029    "concatenated_string": {
6030      "type": "SEQ",
6031      "members": [
6032        {
6033          "type": "SYMBOL",
6034          "name": "string_literal"
6035        },
6036        {
6037          "type": "REPEAT1",
6038          "content": {
6039            "type": "SYMBOL",
6040            "name": "string_literal"
6041          }
6042        }
6043      ]
6044    },
6045    "string_literal": {
6046      "type": "SEQ",
6047      "members": [
6048        {
6049          "type": "CHOICE",
6050          "members": [
6051            {
6052              "type": "STRING",
6053              "value": "L\""
6054            },
6055            {
6056              "type": "STRING",
6057              "value": "u\""
6058            },
6059            {
6060              "type": "STRING",
6061              "value": "U\""
6062            },
6063            {
6064              "type": "STRING",
6065              "value": "u8\""
6066            },
6067            {
6068              "type": "STRING",
6069              "value": "\""
6070            }
6071          ]
6072        },
6073        {
6074          "type": "REPEAT",
6075          "content": {
6076            "type": "CHOICE",
6077            "members": [
6078              {
6079                "type": "IMMEDIATE_TOKEN",
6080                "content": {
6081                  "type": "PREC",
6082                  "value": 1,
6083                  "content": {
6084                    "type": "PATTERN",
6085                    "value": "[^\\\\\"\\n]+"
6086                  }
6087                }
6088              },
6089              {
6090                "type": "SYMBOL",
6091                "name": "escape_sequence"
6092              }
6093            ]
6094          }
6095        },
6096        {
6097          "type": "STRING",
6098          "value": "\""
6099        }
6100      ]
6101    },
6102    "escape_sequence": {
6103      "type": "TOKEN",
6104      "content": {
6105        "type": "PREC",
6106        "value": 1,
6107        "content": {
6108          "type": "SEQ",
6109          "members": [
6110            {
6111              "type": "STRING",
6112              "value": "\\"
6113            },
6114            {
6115              "type": "CHOICE",
6116              "members": [
6117                {
6118                  "type": "PATTERN",
6119                  "value": "[^xuU]"
6120                },
6121                {
6122                  "type": "PATTERN",
6123                  "value": "\\d{2,3}"
6124                },
6125                {
6126                  "type": "PATTERN",
6127                  "value": "x[0-9a-fA-F]{2,}"
6128                },
6129                {
6130                  "type": "PATTERN",
6131                  "value": "u[0-9a-fA-F]{4}"
6132                },
6133                {
6134                  "type": "PATTERN",
6135                  "value": "U[0-9a-fA-F]{8}"
6136                }
6137              ]
6138            }
6139          ]
6140        }
6141      }
6142    },
6143    "system_lib_string": {
6144      "type": "TOKEN",
6145      "content": {
6146        "type": "SEQ",
6147        "members": [
6148          {
6149            "type": "STRING",
6150            "value": "<"
6151          },
6152          {
6153            "type": "REPEAT",
6154            "content": {
6155              "type": "CHOICE",
6156              "members": [
6157                {
6158                  "type": "PATTERN",
6159                  "value": "[^>\\n]"
6160                },
6161                {
6162                  "type": "STRING",
6163                  "value": "\\>"
6164                }
6165              ]
6166            }
6167          },
6168          {
6169            "type": "STRING",
6170            "value": ">"
6171          }
6172        ]
6173      }
6174    },
6175    "true": {
6176      "type": "TOKEN",
6177      "content": {
6178        "type": "CHOICE",
6179        "members": [
6180          {
6181            "type": "STRING",
6182            "value": "TRUE"
6183          },
6184          {
6185            "type": "STRING",
6186            "value": "true"
6187          }
6188        ]
6189      }
6190    },
6191    "false": {
6192      "type": "TOKEN",
6193      "content": {
6194        "type": "CHOICE",
6195        "members": [
6196          {
6197            "type": "STRING",
6198            "value": "FALSE"
6199          },
6200          {
6201            "type": "STRING",
6202            "value": "false"
6203          }
6204        ]
6205      }
6206    },
6207    "null": {
6208      "type": "STRING",
6209      "value": "NULL"
6210    },
6211    "identifier": {
6212      "type": "PATTERN",
6213      "value": "[a-zA-Z_]\\w*"
6214    },
6215    "_type_identifier": {
6216      "type": "ALIAS",
6217      "content": {
6218        "type": "SYMBOL",
6219        "name": "identifier"
6220      },
6221      "named": true,
6222      "value": "type_identifier"
6223    },
6224    "_field_identifier": {
6225      "type": "ALIAS",
6226      "content": {
6227        "type": "SYMBOL",
6228        "name": "identifier"
6229      },
6230      "named": true,
6231      "value": "field_identifier"
6232    },
6233    "_statement_identifier": {
6234      "type": "ALIAS",
6235      "content": {
6236        "type": "SYMBOL",
6237        "name": "identifier"
6238      },
6239      "named": true,
6240      "value": "statement_identifier"
6241    },
6242    "_empty_declaration": {
6243      "type": "SEQ",
6244      "members": [
6245        {
6246          "type": "SYMBOL",
6247          "name": "_type_specifier"
6248        },
6249        {
6250          "type": "STRING",
6251          "value": ";"
6252        }
6253      ]
6254    },
6255    "macro_type_specifier": {
6256      "type": "PREC_DYNAMIC",
6257      "value": -1,
6258      "content": {
6259        "type": "SEQ",
6260        "members": [
6261          {
6262            "type": "FIELD",
6263            "name": "name",
6264            "content": {
6265              "type": "SYMBOL",
6266              "name": "identifier"
6267            }
6268          },
6269          {
6270            "type": "STRING",
6271            "value": "("
6272          },
6273          {
6274            "type": "FIELD",
6275            "name": "type",
6276            "content": {
6277              "type": "SYMBOL",
6278              "name": "type_descriptor"
6279            }
6280          },
6281          {
6282            "type": "STRING",
6283            "value": ")"
6284          }
6285        ]
6286      }
6287    },
6288    "comment": {
6289      "type": "TOKEN",
6290      "content": {
6291        "type": "CHOICE",
6292        "members": [
6293          {
6294            "type": "SEQ",
6295            "members": [
6296              {
6297                "type": "STRING",
6298                "value": "//"
6299              },
6300              {
6301                "type": "PATTERN",
6302                "value": "(\\\\(.|\\r?\\n)|[^\\\\\\n])*"
6303              }
6304            ]
6305          },
6306          {
6307            "type": "SEQ",
6308            "members": [
6309              {
6310                "type": "STRING",
6311                "value": "/*"
6312              },
6313              {
6314                "type": "PATTERN",
6315                "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
6316              },
6317              {
6318                "type": "STRING",
6319                "value": "/"
6320              }
6321            ]
6322          }
6323        ]
6324      }
6325    }
6326  },
6327  "extras": [
6328    {
6329      "type": "PATTERN",
6330      "value": "\\s|\\\\\\r?\\n"
6331    },
6332    {
6333      "type": "SYMBOL",
6334      "name": "comment"
6335    }
6336  ],
6337  "conflicts": [
6338    [
6339      "_type_specifier",
6340      "_declarator"
6341    ],
6342    [
6343      "_type_specifier",
6344      "_declarator",
6345      "macro_type_specifier"
6346    ],
6347    [
6348      "_type_specifier",
6349      "_expression"
6350    ],
6351    [
6352      "_type_specifier",
6353      "_expression",
6354      "macro_type_specifier"
6355    ],
6356    [
6357      "_type_specifier",
6358      "macro_type_specifier"
6359    ],
6360    [
6361      "sized_type_specifier"
6362    ]
6363  ],
6364  "precedences": [],
6365  "externals": [],
6366  "inline": [
6367    "_statement",
6368    "_top_level_item",
6369    "_type_identifier",
6370    "_field_identifier",
6371    "_statement_identifier",
6372    "_non_case_statement",
6373    "_assignment_left_expression"
6374  ],
6375  "supertypes": [
6376    "_expression",
6377    "_statement",
6378    "_type_specifier",
6379    "_declarator",
6380    "_field_declarator",
6381    "_type_declarator",
6382    "_abstract_declarator"
6383  ],
6384  "PREC": {
6385    "PAREN_DECLARATOR": -10,
6386    "ASSIGNMENT": -1,
6387    "CONDITIONAL": -2,
6388    "DEFAULT": 0,
6389    "LOGICAL_OR": 1,
6390    "LOGICAL_AND": 2,
6391    "INCLUSIVE_OR": 3,
6392    "EXCLUSIVE_OR": 4,
6393    "BITWISE_AND": 5,
6394    "EQUAL": 6,
6395    "RELATIONAL": 7,
6396    "SIZEOF": 8,
6397    "SHIFT": 9,
6398    "ADD": 10,
6399    "MULTIPLY": 11,
6400    "CAST": 12,
6401    "UNARY": 13,
6402    "CALL": 14,
6403    "FIELD": 15,
6404    "SUBSCRIPT": 16
6405  }
6406}
6407
6408