The Logtalk grammar is here described using Backus-Naur Form syntax. Non-terminal symbols in italics have the definition found in the ISO Prolog Standard. Terminal symbols are represented in a fixed width font
and between double-quotes.
:- object(
" object_identifier [ ",
" object_relations ] ").
":- end_object.
",
" prototype_relations,
" non_prototype_relations:- category(
" category_identifier [ ",
" category_relations ] ").
":- end_category.
",
" category_relations:- protocol(
" protocol_identifier [ ",
" extends_protocols ] ").
":- end_protocol.
"extends(
" extended_protocols ")
"extends(
" extended_objects ")
"extends(
" extended_categories ")
"implements(
" implemented_protocols ")
"imports(
" imported_categories ")
"instantiates(
" instantiated_objects ")
"specializes(
" specialized_objects ")
"complements(
" complemented_objects ")
"::
" protocol_identifier,
" implemented_protocol_sequence[
" implemented_protocol_sequence "]
"::
" protocol_identifier,
" extended_protocol_sequence[
" extended_protocol_sequence "]
"::
" category_identifier,
" imported_category_sequence[
" imported_category_sequence "]
"::
" object_identifier,
" extended_object_sequence[
" extended_object_sequence "]
"::
" category_identifier,
" extended_category_sequence[
" extended_category_sequence "]
"::
" object_identifier,
" instantiated_object_sequence |[
" instantiated_object_sequence "]
"::
" object_identifier,
" specialized_object_sequence[
" specialized_object_sequence "]
",
" complemented_object_sequence[
" complemented_object_sequence "]
"public
" |protected
" |private
",
" entity_identifier_sequence[
" entity_identifier_sequence "]
",
" object_identifier_sequence[
" object_identifier_sequence "]
",
" category_identifier_sequence[
" category_identifier_sequence "]
",
" protocol_identifier_sequence[
" protocol_identifier_sequence "]
"(
" atom ")
",
" source_file_name_sequence[
" source_file_name_sequence "]
":- encoding(
" atom ").
" |:- set_logtalk_flag(
" atom ",
" nonvar ").
" |:- if(
" callable ").
" |:- elif(
" callable ").
" |:- else.
" |:- endif.
":- initialization(
" callable ").
" |:- built_in.
" |:- threaded.
" |:- dynamic.
" |:- uses(
" object_identifier ").
" |:- use_module(
" module_identifier ",
" module_predicate_indicator_alias_list ").
" |:- calls(
" protocol_identifiers ").
" |:- info(
" entity_info_list ").
" |:- set_logtalk_flag(
" atom ",
" nonvar ").
" |:- built_in.
" |:- dynamic.
" |:- uses(
" object_identifier ").
" |:- use_module(
" module_identifier ",
" predicate_indicator_alias_list ").
" |:- calls(
" protocol_identifiers ").
" |:- info(
" entity_info_list ").
" |:- set_logtalk_flag(
" atom ",
" nonvar ").
" |:- built_in.
" |:- dynamic.
" |:- info(
" entity_info_list ").
" |:- set_logtalk_flag(
" atom ",
" nonvar ").
" |:- alias(
" entity_identifier ",
" predicate_indicator_alias_list ").
" |:- alias(
" entity_identifier ",
" non_terminal_indicator_alias_list ").
":- synchronized(
" predicate_indicator_term | non_terminal_indicator_term ").
":- uses(
" object_identifier ",
" predicate_indicator_alias_list ").
":- public(
" predicate_indicator_term | non_terminal_indicator_term ").
" |:- protected(
" predicate_indicator_term | non_terminal_indicator_term ").
" |:- private(
" predicate_indicator_term | non_terminal_indicator_term ").
":- mode(
" predicate_mode_term | non_terminal_mode_term ",
" number_of_proofs ").
":- meta_predicate(
" meta_predicate_template_term ").
":- meta_non_terminal(
" meta_non_terminal_template_term ").
":- info(
" predicate_indicator | non_terminal_indicator ",
" predicate_info_list ").
":- dynamic(
" predicate_indicator_term | non_terminal_indicator_term ").
":- discontiguous(
" predicate_indicator_term | non_terminal_indicator_term ").
":- multifile(
" predicate_indicator_term ").
":- coinductive(
" predicate_indicator_term | coinductive_predicate_template_term ").
",
" predicate_indicator_sequence[
" predicate_indicator_sequence "]
"as
" predicate_indicator |::
" predicate_indicator |:
" predicate_indicator,
" predicate_indicator_alias_sequence[
" predicate_indicator_alias_sequence "]
"as
" predicate_indicator |:
" predicate_indicator,
" module_predicate_indicator_alias_sequence[
" module_predicate_indicator_alias_sequence "]
",
" non_terminal_indicator_sequence[
" non_terminal_indicator_sequence "]
"//
" arityas
" non_terminal_indicator::
" non_terminal_indicator,
" non_terminal_indicator_alias_sequence[
" non_terminal_indicator_alias_sequence "]
",
" coinductive_predicate_template_sequence[
" coinductive_predicate_template_sequence "]
"(
" coinductive_mode_terms ")
",
" coinductive_mode_terms+
" | "-
"(
" mode_terms ")
"(
" mode_terms ")
",
" mode_terms@
" [ type ] | "+
" [ type ] | "-
" [ type ] | "?
" [ type ]term
" | "nonvar
" | "var
" |compound
" | "ground
" | "callable
" | "list
" |atomic
" | "atom
" |number
" | "integer
" | "float
"object
" | "category
" | "protocol
" |event
"zero
" | "zero_or_one
" | "zero_or_more
" | "one
" | "one_or_more
" | "error
",
" meta_predicate_template_sequence[
" meta_predicate_template_sequence "]
"::
" atom "(
" meta_predicate_specifiers ")
" |::
" atom "(
" meta_predicate_specifiers ")
" |(
" meta_predicate_specifiers ")
",
" meta_predicate_specifiers::
" | "^
" |*
"[]
" |[
" entity_info_item "is
" nonvar "|
" entity_info_list "]
"comment
" | "remarks
" | author
" | "version
" | "date
" | copyright
" | "license
" | parameters
" | "parnames
" | []
" |[
" predicate_info_item "is
" nonvar "|
" predicate_info_list "]
"comment
" | arguments
" | "argnames
" | redefinition
" | "allocation
" |examples
" | "exceptions
" | ::
" head ":-
" body |:
" head ":-
" body |::
" messages[
" message_to_object "]
"::
" messages^^
" message(
" message ",
" messages ")
" |(
" message ";
" messages ")
" |(
" message "->
" messages ")
"{
" callable "}
" |{
" callable "}
"<<
" goal/
" lambda_parameters ">>
" callable |/
" callable |>>
" callable{
" conjunction of variables "}
" |{
" variable "}
" |{}
"[]
"static
" |dynamic
" |built_in
" |file(
" atom ")
" |file(
" atom ",
" atom ")
" |lines(
" integer ",
" integer ")
" |events
" |source_data
" |public(
" predicate_indicator_list ")
" |protected(
" predicate_indicator_list ")
" |private(
" predicate_indicator_list ")
" |declares(
" predicate_indicator ",
" predicate_declaration_property_list ")
" |defines(
" predicate_indicator ",
" predicate_definition_property_list ")
" |includes(
" predicate_indicator ",
" object_identifier | category_identifier ",
" predicate_definition_property_list ")
" |provides(
" predicate_indicator ",
" object_identifier | category_identifier ",
" predicate_definition_property_list ")
" |alias(
" predicate_indicator ",
" predicate_alias_property_list ")
" |calls(
" predicate_called ",
" predicate_call_property_list ")
" |number_of_clauses(
" integer ")
" |number_of_user_clauses(
" integer ")
"static
" |dynamic
" |built_in
" |threaded
" |file(
" atom ")
" |file(
" atom ",
" atom ")
" |lines(
" integer ",
" integer ")
" |context_switching_calls
" |dynamic_declarations
" |events
" |source_data
" |complements(
" "allow
" | "restrict
" ")
" |complements
" |public(
" predicate_indicator_list ")
" |protected(
" predicate_indicator_list ")
" |private(
" predicate_indicator_list ")
" |declares(
" predicate_indicator ",
" predicate_declaration_property_list ")
" |defines(
" predicate_indicator ",
" predicate_definition_property_list ")
" |includes(
" predicate_indicator ",
" object_identifier | category_identifier ",
" predicate_definition_property_list ")
" |provides(
" predicate_indicator ",
" object_identifier | category_identifier ",
" predicate_definition_property_list ")
"alias(
" predicate_indicator ",
" predicate_alias_property_list ")
" |calls(
" predicate_called ",
" predicate_call_property_list ")
" |number_of_clauses(
" integer ")
" |number_of_user_clauses(
" integer ")
"static
" |dynamic
" |built_in
" |source_data
" |file(
" atom ")
" |file(
" atom ",
" atom ")
" |lines(
" integer ",
" integer ")
" |public(
" predicate_indicator_list ")
" |protected(
" predicate_indicator_list ")
" |private(
" predicate_indicator_list ")
" |declares(
" predicate_indicator ",
" predicate_declaration_property_list ")
" |alias(
" predicate_indicator ",
" predicate_alias_property_list ")
"[
" predicate_declaration_property_sequence "]
",
" predicate_declaration_property_sequencestatic
" | "dynamic
" |scope(
" scope ")
" |private
" | "protected
" | "public
" |coinductive
" |multifile
" |synchronized
" |meta_predicate(
" meta_predicate_template ")
" |coinductive(
" coinductive_predicate_template ")
" |non_terminal(
" non_terminal_indicator ")
" |line_count(
" integer ")
" |mode(
" predicate_mode_term | non_terminal_mode_term ",
" number_of_proofs ")
" |info(
" list ")
"[
" predicate_definition_property_sequence "]
",
" predicate_definition_property_sequenceauxiliary
" |non_terminal(
" non_terminal_indicator ")
" |line_count(
" integer ")
" |number_of_clauses(
" integer ")
"[
" predicate_alias_property_sequence "]
",
" predicate_alias_property_sequencefor(
" predicate_indicator ")
" |from(
" entity_identifier ")
" |non_terminal(
" non_terminal_indicator ")
" |line_count(
" integer ")
"^^
" predicate_indicator |::
" predicate_indicator |::
" predicate_indicator |::
" predicate_indicator |:
" predicate_indicator |:
" predicate_indicator[
" predicate_call_property_sequence "]
",
" predicate_call_property_sequencecaller(
" predicate_indicator ")
" |line_count(
" integer ")
" |as(
" predicate_indicator ")
"static
" | "dynamic
" |scope(
" scope ")
" |private
" | "protected
" | "public
" |logtalk
" | "prolog
" | "foreign
" |coinductive(
" coinductive_predicate_template ")
" |multifile
" |synchronized
" |built_in
" |declared_in(
" entity_identifier ")
" |defined_in(
" object_identifier | category_identifier ")
" |redefined_from(
" object_identifier | category_identifier ")
" |meta_predicate(
" meta_predicate_template ")
" |alias_of(
" callable ")
" |alias_declared_in(
" entity_identifier ")
" |non_terminal(
" non_terminal_indicator ")
" |mode(
" predicate_mode_term | non_terminal_mode_term ",
" number_of_proofs ")
" |info(
" list ")
" |number_of_clauses(
" integer ")
"declared_in(
" entity_identifier ",
" integer ")
" |defined_in(
" object_identifier | category_identifier ",
" integer")
" |redefined_from(
" object_identifier | category_identifier ",
" integer")
" |alias_declared_in(
" entity_identifier ",
" integer")
"