The following information summarizes the ACF syntax, in extended Backus-Naur Format (BNF) notation.
<acf_interface> ::=
<acf_interface_header> "{" <acf_interface_body> "}"
<acf_interface_header> ::=
[ <acf_interface_attr_list> ] "interface" <idl_interface_name>
<acf_interface_attr_list> ::= "[" <acf_interface_attrs> "]"
<acf_interface_attrs> ::=
<acf_interface_attr> [ "," <acf_interface_attr> ] ...
<acf_interface_attr> ::= <acf_code_attr>
| <acf_nocode_attr>
| <acf_auto_handle_attr>
| <acf_explicit_handle_attr>
| <acf_implicit_handle_attr>
| <acf_cs_tag_rtn_attr>
| <acf_extern_exceps_attr>
| <acf_encode_attr>
| <acf_decode_attr>
| <acf_binding_callout_attr>
<acf_auto_handle_attr> ::= "auto_handle"
<acf_explicit_handle_attr> ::= "explicit_handle"
<acf_implicit_handle_attr> ::=
"implicit_handle" "(" <acf_named_type> <Identifier> ")"
<acf_extern_exceps_attr> ::=
"extern_exceptions" "(" <acf_ext_excep_list> ")"
<acf_ext_exceps_list> ::=
"<acf_ext_excep> ["," <acf_ext_excep] ...
<acf_ext_excep> ::= <Identifier>
<acf_binding_callout_attr> ::=
"binding_callout" "(" <acf_bind_call_rtn_name> ")"
<acf_bind_call_rtn_name> ::= <Identifier>
<acf_interface_name> ::= <Identifier>
<acf_interface_body> ::= [ <acf_body_element> ] ...
<acf_body_element> ::= <acf_include> ";"
| <acf_type_declaration> ";"
| <acf_operation> ";"
<acf_include> ::= "include" <acf_include_list>
<acf_include_list> ::= <acf_include_name> \
[ "," <acf_include_name> ] ...
<acf_include_name> ::= """ <filename> """
<acf_type_declaration> ::= typedef [ <acf_type_attr_list> ] \
<acf_named_type>
<acf_named_type> ::= <Identifier>
<acf_type_attr_list> ::= "[" <acf_type_attrs> "]"
<acf_type_attrs> ::= <acf_type_attr> [ "," <acf_type_attr> ] ...
<acf_type_attr> ::= <acf_represent_attr>
| <acf_cs_char_attr>
| <acf_heap_attr>
<acf_represent_attr> ::= "represent_as" "(" <acf_repr_type> ")"
<acf_cs_char_attr> ::=
"cs_char" "C" "(" <acf_cs_char_type> ")"
<acf_cs_char_type> ::= <acf_named_type>
<acf_repr_type> ::= <acf_named_type>
<acf_operation> ::= [ <acf_op_attr_list> ] <Identifier> "("
[ <acf_parameters> ] ")"
<acf_op_attr_list> ::= "[" <acf_op_attrs> "]"
<acf_op_attrs> ::= <acf_op_attr> [ "," <acf_op_attr> ] ...
<acf_op_attr> ::= <acf_explicit_handle_attr>
| <acf_comm_status_attr>
| <acf_cs_tag_rtn_attr>
| <acf_encode_attr>
| <acf_decode_attr>
| <acf_fault_status_attr>
| <acf_code_attr>
| <acf_nocode_attr>
| <acf_enable_allocate_attr>
<acf_cs_tag_rtn_attr> ::=
"cs_tag_rtn" "(" <acf_cs_tag_rtn_name> ")"
<acf_cs_tag_rtn_name> ::=
<Identifier>
<acf_parameters> ::= <acf_parameter> [ "," <acf_parameter> ] ...
<acf_parameter> ::= [ <acf_param_attr_list> ] <Identifier>
<acf_param_attr_list> ::= "[" <acf_param_attrs> "]"
<acf_param_attrs> ::= <acf_param_attr> [ "," <acf_param_attr> ] \&...
<acf_param_attr> ::= <acf_comm_status_attr>
| <acf_fault_status_attr>
| <acf_cs_stag_attr>
| <acf_cs_drtag_attr>
| <acf_cs_rtag_attr>
| <acf_heap_attr>
<acf_code_attr> ::= "code"
<acf_nocode_attr> ::= "nocode"
<acf_encode_attr> ::= "encode"
<acf_decode_attr> ::= "decode"
<acf_cs_stag_attr> ::= "cs_stag"
<acf_cs_drtag_attr> ::= "cs_drtag"
<acf_cs_rtag_attr> ::= "cs_rtag"
<acf_comm_status_attr> ::= "comm_status"
<acf_fault_status_attr> ::= "fault_status"
<acf_enable_allocate_attr> ::= "enable_allocate"
<acf_heap_attr> ::= "heap"