diff options
Diffstat (limited to 'source4/build/pidl/idl.gram')
-rw-r--r-- | source4/build/pidl/idl.gram | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/source4/build/pidl/idl.gram b/source4/build/pidl/idl.gram index 9b265b8cba1..d90c2238b4f 100644 --- a/source4/build/pidl/idl.gram +++ b/source4/build/pidl/idl.gram @@ -54,24 +54,29 @@ union: property_list(s?) 'union' <commit> '{' union_element(s?) '}' }} | <error?> -union_element: '[' 'case' '(' constant ')' ']' base_element ';' +union_element: + '[' 'case' '(' constant ')' ']' base_element ';' {{ "TYPE" => "UNION_ELEMENT", "CASE" => $item{constant}, "DATA" => $item{base_element} }} - | 'case' '(' constant ')' base_element ';' + | '[' 'case' '(' constant ')' ']' ';' {{ - "TYPE" => "UNION_ELEMENT", + "TYPE" => "EMPTY", "CASE" => $item{constant}, - "DATA" => $item{base_element} }} - | 'default' base_element ';' + | '[' 'default' ']' base_element ';' {{ "TYPE" => "UNION_ELEMENT", "CASE" => "default", "DATA" => $item{base_element} }} + | '[' 'default' ']' ';' + {{ + "TYPE" => "EMPTY", + "CASE" => "default", + }} base_element: property_list(s?) type pointer(s?) identifier array_len(?) {{ |