diff options
Diffstat (limited to 'source4/pidl/idl.yp')
-rw-r--r-- | source4/pidl/idl.yp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/source4/pidl/idl.yp b/source4/pidl/idl.yp index a0323af8ee..d557590494 100644 --- a/source4/pidl/idl.yp +++ b/source4/pidl/idl.yp @@ -67,17 +67,24 @@ interface_names: | interface_names 'interface' identifier ';' { push(@{$_[1]}, $_[2]); $_[1] } ; -interface: property_list 'interface' identifier '{' definitions '}' optional_semicolon +interface: property_list 'interface' identifier base_interface '{' definitions '}' optional_semicolon {{ "TYPE" => "INTERFACE", "PROPERTIES" => $_[1], "NAME" => $_[3], - "DATA" => $_[5], + "BASE" => $_[4], + "DATA" => $_[6], "FILE" => $_[0]->YYData->{FILE}, "LINE" => $_[0]->YYData->{LINE}, }} ; +base_interface: + #empty + | ':' identifier { $_[2] } +; + + cpp_quote: 'cpp_quote' '(' text ')' {{ "TYPE" => "CPP_QUOTE", @@ -269,11 +276,16 @@ element_list1: | element_list1 base_element ';' { push(@{$_[1]}, $_[2]); $_[1] } ; +optional_const: + #empty + | 'const' +; + element_list2: #empty | 'void' - | base_element { [ $_[1] ] } - | element_list2 ',' base_element { push(@{$_[1]}, $_[3]); $_[1] } + | optional_const base_element { [ $_[2] ] } + | element_list2 ',' optional_const base_element { push(@{$_[1]}, $_[4]); $_[1] } ; array_len: |