Keyword('deallocate-on-exit').suppress() - isc_boolean('deallocate_on_exit') + semicolon ) # deny-answer-addresses { address_match_list } # [ except-from { name_list } ]; [ Opt ] options_stmt_deny_answer_addresses = ( Keyword('deny-answer-addresses').suppress() + Group ( lbrack + ( ZeroOrMore( Group( ( exclamation('not') + aml_nesting ) | ( exclamation('not') + aml_choices + semicolon ) | ( aml_nesting ) | ( aml_choices + semicolon ) # never set a ResultsLabel here, you get duplicate but un-nested 'addr' ) # never set a ResultsLabel here, you get no []
isc_boolean, quoted_path_name, number_type, \ exclamation, key_id from bind9_parser.isc_aml import aml_nesting, aml_choices from bind9_parser.isc_inet import ip46_addr_or_wildcard, \ inet_ip_port_keyword_and_wildcard_element # ( ip46_addr_or_prefix | * ) [ port ( ip_port | * ) ] controls_inet_addr_and_port = ( ip46_addr_or_wildcard('control_server_addr') + Optional(inet_ip_port_keyword_and_wildcard_element)) controls_inet_allow_element = Group( Keyword('allow').suppress() + lbrack + ( ZeroOrMore( Group( (exclamation('not') + aml_nesting) | (exclamation('not') + aml_choices + semicolon) | (aml_nesting) | ( aml_choices + semicolon ) # never set a ResultsLabel here, you get duplicate but un-nested 'addr' ) # never set a ResultsLabel here, you get no [] )(None))('aml') + rbrack # NOSEMICOLON HERE! )('allow') # keys { key_id; [ ... ] }; controls_keys_element = ( Keyword('keys').suppress() + lbrack + ZeroOrMore(Group(key_id(None) + semicolon)) + rbrack # NO SEMICOLON HERE!