grammar XdrUnionGrammar rule union_def "union" space identifier space union_body space? ";" end rule union_body "switch" space? "(" discriminant:declaration ")" space? "{" space? arms_n:(arm_spec)+ default_case_n:(default_case_spec)? space? "}" end rule union_type_spec "union" space union_body end rule arm_spec cases_n:case_spec+ space? declaration space? ";" space? end rule case_spec "case" space? value space? ":" space? end rule default_case_spec "default" space? ":" space? declaration space? ";" end end