diff --git a/README.md b/README.md
index 6686c950e..8f04d52e9 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Inform 7
-v10.1.0-alpha.1+6Q89 'Krypton' (5 August 2020)
+v10.1.0-alpha.1+6Q90 'Krypton' (6 August 2020)
## About Inform 7
diff --git a/build.txt b/build.txt
index 529d6ce5d..b72f011a1 100644
--- a/build.txt
+++ b/build.txt
@@ -1,3 +1,3 @@
Prerelease: alpha.1
-Build Date: 5 August 2020
-Build Number: 6Q89
+Build Date: 6 August 2020
+Build Number: 6Q90
diff --git a/docs/core-module/1-cm.html b/docs/core-module/1-cm.html
index 445e8ec2f..8f2f2da85 100644
--- a/docs/core-module/1-cm.html
+++ b/docs/core-module/1-cm.html
@@ -315,6 +315,7 @@ or other text streams.
Register this module's debugging log aspects6.5;
Register this module's debugging log writers6.6;
CorePreform::set_core_internal_NTIs();
+ Declare the tree annotations6.12;
}
void CoreModule::end(void) {
}
@@ -356,7 +357,7 @@ we need to use the equivalent of traditional
- Writers::register_writer_I('B', &CoreModule::writer);
+ Writers::register_writer_I('B', &CoreModule::writer);
Writers::register_writer('I', &Instances::writer);
Writers::register_writer('L', &LocalVariables::writer);
@@ -488,7 +489,7 @@ we need to use the equivalent of traditional REGISTER_WRITER('z', Nouns::log);
§8. This module uses syntax, and adds the following annotations to the syntax
+ §6.8. This module uses syntax, and adds the following annotations to the syntax
tree; though it's a little like itemising the baubles on a Christmas tree.
§9. So we itemise the pointer-valued annotations below, and the macro expands
+ §6.9. So we itemise the pointer-valued annotations below, and the macro expands
to provide their get and set functions:
§10. We also have to make annotation functions for one special annotation needed
+ §6.10. We also have to make annotation functions for one special annotation needed
by linguistics:
§6.12. And we have declare all of those:
+ Declare the tree annotations6.12 =
+ §13.3. There's a delicate little manoeuvre here. We have to be careful because
diff --git a/docs/core-module/14-cn.html b/docs/core-module/14-cn.html
index db5ab264b..053fee757 100644
--- a/docs/core-module/14-cn.html
+++ b/docs/core-module/14-cn.html
@@ -307,7 +307,7 @@ created condition:
-
+
void CoreModule::writer(OUTPUT_STREAM, char *format_string, int wn) {
@@ -501,7 +502,7 @@ we need to use the equivalent of traditional }
}
-
DECLARE_ANNOTATION_FUNCTIONS(relationship, binary_predicate)
-
+
MAKE_ANNOTATION_FUNCTIONS(relationship, binary_predicate)
+
+ Annotations::declare_type(action_meaning_ANNOT, NULL);
+ Annotations::declare_type(predicate_ANNOT, NULL);
+ Annotations::declare_type(category_of_I6_translation_ANNOT, NULL);
+ Annotations::declare_type(classified_ANNOT, NULL);
+ Annotations::declare_type(clears_pronouns_ANNOT, NULL);
+ Annotations::declare_type(colon_block_command_ANNOT, NULL);
+ Annotations::declare_type(condition_tense_ANNOT, NULL);
+ Annotations::declare_type(constant_action_name_ANNOT, NULL);
+ Annotations::declare_type(constant_action_pattern_ANNOT, NULL);
+ Annotations::declare_type(constant_activity_ANNOT, NULL);
+ Annotations::declare_type(constant_binary_predicate_ANNOT, NULL);
+ Annotations::declare_type(constant_constant_phrase_ANNOT, NULL);
+ Annotations::declare_type(constant_enumeration_ANNOT, NULL);
+ Annotations::declare_type(constant_equation_ANNOT, NULL);
+ Annotations::declare_type(constant_grammar_verb_ANNOT, NULL);
+ Annotations::declare_type(constant_instance_ANNOT, NULL);
+ Annotations::declare_type(constant_local_variable_ANNOT, NULL);
+ Annotations::declare_type(constant_named_action_pattern_ANNOT, NULL);
+ Annotations::declare_type(constant_named_rulebook_outcome_ANNOT, NULL);
+ Annotations::declare_type(constant_nonlocal_variable_ANNOT, NULL);
+ Annotations::declare_type(constant_number_ANNOT, NULL);
+ Annotations::declare_type(constant_property_ANNOT, NULL);
+ Annotations::declare_type(constant_rule_ANNOT, NULL);
+ Annotations::declare_type(constant_rulebook_ANNOT, NULL);
+ Annotations::declare_type(constant_scene_ANNOT, NULL);
+ Annotations::declare_type(constant_table_ANNOT, NULL);
+ Annotations::declare_type(constant_table_column_ANNOT, NULL);
+ Annotations::declare_type(constant_text_ANNOT, NULL);
+ Annotations::declare_type(constant_use_option_ANNOT, NULL);
+ Annotations::declare_type(constant_verb_form_ANNOT, NULL);
+ Annotations::declare_type(control_structure_used_ANNOT, NULL);
+ Annotations::declare_type(converted_SN_ANNOT, NULL);
+ Annotations::declare_type(creation_proposition_ANNOT, NULL);
+ Annotations::declare_type(creation_site_ANNOT, NULL);
+ Annotations::declare_type(defn_language_ANNOT, NULL);
+ Annotations::declare_type(end_control_structure_used_ANNOT, NULL);
+ Annotations::declare_type(epistemological_status_ANNOT, NULL);
+ Annotations::declare_type(evaluation_ANNOT, NULL);
+ Annotations::declare_type(explicit_iname_ANNOT, NULL);
+ Annotations::declare_type(explicit_literal_ANNOT, NULL);
+ Annotations::declare_type(explicit_vh_ANNOT, NULL);
+ Annotations::declare_type(from_text_substitution_ANNOT, NULL);
+ Annotations::declare_type(explicit_gender_marker_ANNOT, NULL);
+ Annotations::declare_type(grammar_token_code_ANNOT, NULL);
+ Annotations::declare_type(grammar_token_literal_ANNOT, NULL);
+ Annotations::declare_type(grammar_token_relation_ANNOT, NULL);
+ Annotations::declare_type(grammar_value_ANNOT, NULL);
+ Annotations::declare_type(implicit_in_creation_of_ANNOT, NULL);
+ Annotations::declare_type(implicitness_count_ANNOT, NULL);
+ Annotations::declare_type(indentation_level_ANNOT, NULL);
+ Annotations::declare_type(interpretation_of_subject_ANNOT, NULL);
+ Annotations::declare_type(is_phrase_option_ANNOT, NULL);
+ Annotations::declare_type(kind_of_new_variable_ANNOT, NULL);
+ Annotations::declare_type(kind_of_value_ANNOT, NULL);
+ Annotations::declare_type(kind_required_by_context_ANNOT, NULL);
+ Annotations::declare_type(kind_resulting_ANNOT, NULL);
+ Annotations::declare_type(kind_variable_declarations_ANNOT, NULL);
+ Annotations::declare_type(rule_placement_sense_ANNOT, NULL);
+ Annotations::declare_type(lpe_options_ANNOT, NULL);
+ Annotations::declare_type(modal_verb_ANNOT, NULL);
+ Annotations::declare_type(multiplicity_ANNOT, NULL);
+ Annotations::declare_type(new_relation_here_ANNOT, NULL);
+ Annotations::declare_type(nothing_object_ANNOT, NULL);
+ Annotations::declare_type(nowhere_ANNOT, NULL);
+ Annotations::declare_type(phrase_invoked_ANNOT, NULL);
+ Annotations::declare_type(phrase_option_ANNOT, NULL);
+ Annotations::declare_type(phrase_options_invoked_ANNOT, NULL);
+ Annotations::declare_type(property_name_used_as_noun_ANNOT, NULL);
+ Annotations::declare_type(proposition_ANNOT, NULL);
+ Annotations::declare_type(prep_ANNOT, NULL);
+ Annotations::declare_type(quant_ANNOT, NULL);
+ Annotations::declare_type(quantification_parameter_ANNOT, NULL);
+ Annotations::declare_type(record_as_self_ANNOT, NULL);
+ Annotations::declare_type(refined_ANNOT, NULL);
+ Annotations::declare_type(response_code_ANNOT, NULL);
+ Annotations::declare_type(results_from_splitting_ANNOT, NULL);
+ Annotations::declare_type(row_amendable_ANNOT, NULL);
+ Annotations::declare_type(save_self_ANNOT, NULL);
+ Annotations::declare_type(say_adjective_ANNOT, NULL);
+ Annotations::declare_type(say_verb_ANNOT, NULL);
+ Annotations::declare_type(say_verb_negated_ANNOT, NULL);
+ Annotations::declare_type(self_object_ANNOT, NULL);
+ Annotations::declare_type(slash_class_ANNOT, NULL);
+ Annotations::declare_type(slash_dash_dash_ANNOT, NULL);
+ Annotations::declare_type(ssp_closing_segment_wn_ANNOT, NULL);
+ Annotations::declare_type(ssp_segment_count_ANNOT, NULL);
+ Annotations::declare_type(subject_ANNOT, NULL);
+ Annotations::declare_type(subject_term_ANNOT, NULL);
+ Annotations::declare_type(suppress_newlines_ANNOT, NULL);
+ Annotations::declare_type(table_cell_unspecified_ANNOT, NULL);
+ Annotations::declare_type(tense_marker_ANNOT, NULL);
+ Annotations::declare_type(text_unescaped_ANNOT, NULL);
+ Annotations::declare_type(token_as_parsed_ANNOT, NULL);
+ Annotations::declare_type(token_check_to_do_ANNOT, NULL);
+ Annotations::declare_type(token_to_be_parsed_against_ANNOT, NULL);
+ Annotations::declare_type(turned_already_ANNOT, NULL);
+ Annotations::declare_type(unit_ANNOT, NULL);
+ Annotations::declare_type(unproven_ANNOT, NULL);
+ Annotations::declare_type(verb_problem_issued_ANNOT, NULL);
+ Annotations::declare_type(vu_ANNOT, NULL);
+ Annotations::declare_type(you_can_ignore_ANNOT, NULL);
+
+
+
+
+
+void CoreModule::write_action_meaning_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_predicate_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_category_of_I6_translation_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_classified_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_clears_pronouns_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_colon_block_command_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_condition_tense_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_action_name_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_action_pattern_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_activity_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_binary_predicate_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_constant_phrase_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_enumeration_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_equation_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_grammar_verb_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_instance_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_local_variable_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_named_action_pattern_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_named_rulebook_outcome_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_nonlocal_variable_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_number_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_property_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_rule_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_rulebook_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_scene_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_table_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_table_column_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_text_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_use_option_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_constant_verb_form_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_control_structure_used_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_converted_SN_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_creation_proposition_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_creation_site_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_defn_language_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_end_control_structure_used_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_epistemological_status_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_evaluation_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_explicit_iname_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_explicit_literal_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_explicit_vh_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_from_text_substitution_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_explicit_gender_marker_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_grammar_token_code_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_grammar_token_literal_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_grammar_token_relation_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_grammar_value_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_implicit_in_creation_of_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_implicitness_count_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_indentation_level_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_interpretation_of_subject_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_is_phrase_option_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_kind_of_new_variable_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_kind_of_value_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_kind_required_by_context_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_kind_resulting_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_kind_variable_declarations_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_rule_placement_sense_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_lpe_options_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_modal_verb_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_multiplicity_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_new_relation_here_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_nothing_object_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_nowhere_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_phrase_invoked_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_phrase_option_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_phrase_options_invoked_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_property_name_used_as_noun_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_proposition_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_prep_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_quant_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_quantification_parameter_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_record_as_self_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_refined_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_response_code_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_results_from_splitting_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_row_amendable_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_save_self_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_say_adjective_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_say_verb_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_say_verb_negated_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_self_object_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_slash_class_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_slash_dash_dash_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_ssp_closing_segment_wn_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_ssp_segment_count_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_subject_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_subject_term_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_suppress_newlines_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_table_cell_unspecified_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_tense_marker_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_text_unescaped_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_token_as_parsed_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_token_check_to_do_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_token_to_be_parsed_against_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_turned_already_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_unit_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_unproven_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_verb_problem_issued_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_vu_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+void CoreModule::write_you_can_ignore_ANNOT(text_stream *OUT, parse_node *p) {
+ WRITE("{}", Annotations::read_int(p, heading_level_ANNOT));
+}
+
diff --git a/docs/core-module/10-varc.html b/docs/core-module/10-varc.html
index 807356268..fc2f9216f 100644
--- a/docs/core-module/10-varc.html
+++ b/docs/core-module/10-varc.html
@@ -407,7 +407,7 @@ object.
parse_node *ExParser::Subtrees::to_specification_inner(int SV_not_SN, wording W, parse_node *A, parse_node *B) {
parse_node *spec;
parse_node *subject_noun_phrase = NULL, *verb_phrase = NULL;
- verb_usage *vu = NULL; preposition *prep = NULL;
+ verb_usage *vu = NULL;
int verb_phrase_negated = FALSE;
if (Node::is(A, AMBIGUITY_NT)) {
@@ -483,7 +483,6 @@ has the standard form, but we check it anyway.
vu = Node::get_vu(verb_phrase);
if (vu == NULL) StandardProblems::s_subtree_error(Task::syntax_tree(), "verb null");
verb_phrase_negated = (VerbUsages::is_used_negatively(vu))?TRUE:FALSE;
- prep = Node::get_prep(verb_phrase);
-void Conditions::log(parse_node *spec) {
+void Conditions::log(parse_node *spec) {
if (Node::get_condition_tense(spec))
Occurrence::log(DL, Node::get_condition_tense(spec));
if (Node::is(spec, TEST_PROPOSITION_NT))
diff --git a/docs/core-module/14-lv.html b/docs/core-module/14-lv.html
index f266e246e..ecdb9f956 100644
--- a/docs/core-module/14-lv.html
+++ b/docs/core-module/14-lv.html
@@ -268,7 +268,7 @@ actions and the like:
-void Lvalues::log(parse_node *spec) { +void Lvalues::log(parse_node *spec) { switch (Node::get_type(spec)) { case LOCAL_VARIABLE_NT: { local_variable *lvar = Node::get_constant_local_variable(spec); diff --git a/docs/core-module/14-rv.html b/docs/core-module/14-rv.html index 10284bbfa..8a17b817c 100644 --- a/docs/core-module/14-rv.html +++ b/docs/core-module/14-rv.html @@ -541,7 +541,7 @@ doesn't need to be especially rapid.-void Rvalues::log(parse_node *spec) { +void Rvalues::log(parse_node *spec) { switch (Node::get_type(spec)) { case CONSTANT_NT: { instance *I = Rvalues::to_instance(spec); diff --git a/docs/core-module/4-tr.html b/docs/core-module/4-tr.html index 9ec113dc7..4c67c414d 100644 --- a/docs/core-module/4-tr.html +++ b/docs/core-module/4-tr.html @@ -123,7 +123,7 @@ sense once kinds and instances exist. wording SP = Node::get_text(V->next); wording OP = Node::get_text(V->next->next); inform_language *L = Node::get_defn_language(V->next->next); - int g = Annotations::read_int(V->next->next, explicit_gender_marker_ANNOT); + int g = Annotations::read_int(V->next->next, explicit_gender_marker_ANNOT); if (L == NULL) internal_error("No such NL"); if (L == DefaultLanguage::get(NULL)) { StandardProblems::sentence_problem(Task::syntax_tree(), diff --git a/docs/core-module/5-tc.html b/docs/core-module/5-tc.html index 787585515..e295e2961 100644 --- a/docs/core-module/5-tc.html +++ b/docs/core-module/5-tc.html @@ -598,7 +598,7 @@ from the tree. if (Wordings::empty(W)) internal_error("CREATED node without name"); if (<grammatical-gender-marker>(W)) { W = GET_RW(<grammatical-gender-marker>, 1); - Annotations::write_int(p, explicit_gender_marker_ANNOT, <<r>> + 1); + Annotations::write_int(p, explicit_gender_marker_ANNOT, <<r>> + 1); } if (<creation-problem-diagnosis>(W)) W = EMPTY_WORDING; Node::set_text(p, W); @@ -863,8 +863,8 @@ to abbreviated forms of object names are normally allowed. g = Lcon::get_gender(Stock::first_form_in_usage(au->usage)); gender_certainty = LIKELY_CE; } - if (Annotations::read_int(p, explicit_gender_marker_ANNOT) != 0) { - g = Annotations::read_int(p, explicit_gender_marker_ANNOT); + if (Annotations::read_int(p, explicit_gender_marker_ANNOT) != 0) { + g = Annotations::read_int(p, explicit_gender_marker_ANNOT); gender_certainty = CERTAIN_CE; } if ((g != 0) && (P_grammatical_gender)) { diff --git a/docs/core-module/7-vart.html b/docs/core-module/7-vart.html index f507f5ce3..733f2c6e6 100644 --- a/docs/core-module/7-vart.html +++ b/docs/core-module/7-vart.html @@ -581,7 +581,7 @@ usages to the debugging log.-void VerbsAtRunTime::log(verb_usage *vu) { +void VerbsAtRunTime::log(verb_usage *vu) { VerbUsages::write_usage(DL, vu); } diff --git a/docs/core-module/8-ptu.html b/docs/core-module/8-ptu.html index 94b0ede94..1e0360b5e 100644 --- a/docs/core-module/8-ptu.html +++ b/docs/core-module/8-ptu.html @@ -262,6 +262,7 @@ also makes it easier for us to manipulate the results. Annotations::allow_for_category(L3_NCAT, creation_proposition_ANNOT); Annotations::allow_for_category(L3_NCAT, evaluation_ANNOT); Annotations::allow_for_category(L3_NCAT, subject_ANNOT); + Annotations::allow_for_category(L3_NCAT, explicit_gender_marker_ANNOT); Annotations::allow(ACTION_NT, action_meaning_ANNOT); Annotations::allow(ADJECTIVE_NT, predicate_ANNOT); Annotations::allow(VERB_NT, category_of_I6_translation_ANNOT); @@ -415,13 +416,13 @@ also makes it easier for us to manipulate the results. return FALSE; } -int ParseTreeUsage::is_lvalue(parse_node *pn) { +int ParseTreeUsage::is_lvalue(parse_node *pn) { node_type_metadata *metadata = NodeType::get_metadata(Node::get_type(pn)); if ((metadata) && (metadata->category == LVALUE_NCAT)) return TRUE; return FALSE; } -int ParseTreeUsage::is_rvalue(parse_node *pn) { +int ParseTreeUsage::is_rvalue(parse_node *pn) { node_type_metadata *metadata = NodeType::get_metadata(Node::get_type(pn)); if ((metadata) && (metadata->category == RVALUE_NCAT)) return TRUE; return FALSE; @@ -435,7 +436,7 @@ also makes it easier for us to manipulate the results. return FALSE; } -int ParseTreeUsage::is_condition(parse_node *pn) { +int ParseTreeUsage::is_condition(parse_node *pn) { node_type_metadata *metadata = NodeType::get_metadata(Node::get_type(pn)); if ((metadata) && (metadata->category == COND_NCAT)) return TRUE; return FALSE; @@ -475,33 +476,13 @@ be such that their head nodes each pass this test: WRITE("'%S'", text); DISCARD_TEXT(text) } - Diagrams::log_node(OUT, pn); - if ((pn->node_type >= UNKNOWN_NT) && (pn->node_type <= TEST_VALUE_NT)) - Log annotations of specification nodes14.1 - else - Log annotations of structural nodes14.2; -} --§14.1. Log annotations of specification nodes14.1 = -
- -if (Node::get_kind_of_value(pn)) WRITE("-$u", Node::get_kind_of_value(pn)); if (ParseTreeUsage::is_lvalue(pn)) Lvalues::log(pn); else if (ParseTreeUsage::is_rvalue(pn)) Rvalues::log(pn); else if (ParseTreeUsage::is_condition(pn)) Conditions::log(pn); if (Node::get_vu(pn)) { WRITE("-vu:"); VerbsAtRunTime::log(Node::get_vu(pn)); } - if (Node::get_prep(pn)) { WRITE("-prep:$p", Node::get_prep(pn)); } --
§14.2. We do not log every annotation: only the few which are most illuminating. -
-Log annotations of structural nodes14.2 = -
- -int show_eval = FALSE, show_refers = FALSE; if (Annotations::read_int(pn, creation_site_ANNOT)) WRITE(" (created here)"); @@ -543,8 +524,8 @@ be such that their head nodes each pass this test: WRITE(" language:%J", Node::get_defn_language(pn)); if (Node::get_creation_proposition(pn)) WRITE(" (creation $D)", Node::get_creation_proposition(pn)); +}-
diff --git a/docs/core-module/P-wtmd.html b/docs/core-module/P-wtmd.html index 58f7b9676..8f31ce24d 100644 --- a/docs/core-module/P-wtmd.html +++ b/docs/core-module/P-wtmd.html @@ -130,12 +130,12 @@ hat is indeed spatially on top of the can. UNPARSED_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} Refined: CREATED_NT'jane' - COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} + COMMON_NOUN_NT'woman' refers:infs'woman' eval:TEST_VALUE_NT(st: [ woman(x) ]) (creation [ woman(x) ]) {indefinite 'a' n/m/f nom/acc s} After creation: SENTENCE_NT'jane is a woman' VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} - PROPER_NOUN_NT'jane' - COMMON_NOUN_NT'woman' {indefinite 'a' n/m/f nom/acc s} + PROPER_NOUN_NT'jane' (created here) refers:infs'jane' eval:CONSTANT_NT'jane'-object(I_jane)('jane') + COMMON_NOUN_NT'woman' refers:infs'woman' eval:TEST_VALUE_NT(st: [ woman(x) ]) (creation [ woman(x) ]) {indefinite 'a' n/m/f nom/acc s}
1 There really is an Ubuntu cola; it's a fair-trade product which it amuses my more Linux-aware students to drink. diff --git a/docs/lexicon-module/1-lm.html b/docs/lexicon-module/1-lm.html index fb47f98f6..0289b84be 100644 --- a/docs/lexicon-module/1-lm.html +++ b/docs/lexicon-module/1-lm.html @@ -12,6 +12,14 @@ + + + @@ -81,28 +89,15 @@ which use this module:
void LexiconModule::start(void) { - Register this module's debugging log aspects3.1; - Register this module's debugging log writers3.2; + Log::declare_aspect(EXCERPT_MEANINGS_DA, L"excerpt meanings", FALSE, FALSE); + Log::declare_aspect(EXCERPT_PARSING_DA, L"excerpt parsing", FALSE, FALSE); + Writers::register_logger('M', ExcerptMeanings::log); + Declare the tree annotations3.2; } void LexiconModule::end(void) { }-
§3.1. Register this module's debugging log aspects3.1 = -
- -- Log::declare_aspect(EXCERPT_MEANINGS_DA, L"excerpt meanings", FALSE, FALSE); - Log::declare_aspect(EXCERPT_PARSING_DA, L"excerpt parsing", FALSE, FALSE); --
§3.2. Register this module's debugging log writers3.2 = -
- -- Writers::register_logger('M', ExcerptMeanings::log); --
§4. This module uses syntax, and adds the following annotations to the +
§3.1. This module uses syntax, and adds the following annotations to the syntax tree.
@@ -113,6 +108,24 @@ syntax tree. MAKE_ANNOTATION_FUNCTIONS(meaning, excerpt_meaning) +§3.2. Declare the tree annotations3.2 = +
+ ++ Annotations::declare_type(meaning_ANNOT, LexiconModule::write_meaning_ANNOT); ++
+void LexiconModule::write_meaning_ANNOT(text_stream *OUT, parse_node *p) { + if (Node::get_meaning(p)) { + WRITE("{meaning: "); + ExcerptMeanings::log(OUT, Node::get_meaning(p)); + WRITE("}"); + } +} +diff --git a/docs/lexicon-module/2-em.html b/docs/lexicon-module/2-em.html index a0dd2797f..28bbd0d1f 100644 --- a/docs/lexicon-module/2-em.html +++ b/docs/lexicon-module/2-em.html @@ -198,17 +198,18 @@ as yet.
-void ExcerptMeanings::log(OUTPUT_STREAM, void *vem) { +void ExcerptMeanings::log(OUTPUT_STREAM, void *vem) { excerpt_meaning *em = (excerpt_meaning *) vem; - if (em == NULL) { LOG("<null-em>"); return; } - LOG("{"); + if (em == NULL) { WRITE("<null-em>"); return; } + WRITE("{"); for (int i=0; i<em->no_em_tokens; i++) { - if (i>0) LOG(" "); - if (em->em_tokens[i] == NULL) { LOG("#"); continue; } - LOG("%V", em->em_tokens[i]); + if (i>0) WRITE(" "); + if (em->em_tokens[i] == NULL) { WRITE("#"); continue; } + WRITE("%V", em->em_tokens[i]); } - LOG(" = $N", em->meaning_code); - LOG("}"); + WRITE(" = "); + NodeType::log(OUT, (int) em->meaning_code); + WRITE("}"); } void ExcerptMeanings::log_all(void) { diff --git a/docs/lexicon-module/2-pe.html b/docs/lexicon-module/2-pe.html index 35190993f..26f1ab301 100644 --- a/docs/lexicon-module/2-pe.html +++ b/docs/lexicon-module/2-pe.html @@ -70,7 +70,7 @@ function togglePopup(material_id) {§1. Default bitmaps. The following will be useful only for minimal use of lexicon. Inform certainly doesn't use settings as minimal as these — see -Using Excerpt Meanings (in core) for what it does do. +Using Excerpt Meanings (in core) for what it does do.
define ONE_WEIRD_TRICK_DISCOVERED_BY_A_MOM_MC 0x00000004 meaningless, so do not use diff --git a/docs/lexicon-module/P-wtmd.html b/docs/lexicon-module/P-wtmd.html index cda9ece6b..ac56d6d9b 100644 --- a/docs/lexicon-module/P-wtmd.html +++ b/docs/lexicon-module/P-wtmd.html @@ -189,20 +189,20 @@ number of successes.
Size of lexicon: 3102 excerpt meanings - Stored among 841 words out of total vocabulary of 10552 + Stored among 841 words out of total vocabulary of 10557 711 words have a start list: longest belongs to report (with 293 meanings) 15 words have an end list: longest belongs to case (with 6 meanings) 29 words have a middle list: longest belongs to to (with 4 meanings) 108 words have a subset list: longest belongs to street (with 4 meanings) -Number of attempts to retrieve: 104881 - of which unsuccessful: 87188 - of which successful: 17693 +Number of attempts to retrieve: 104735 + of which unsuccessful: 87234 + of which successful: 17501 -Total attempts to match against excerpt meanings: 249662 - of which, total with incorrect hash codes: 227485 - of which, total with correct hash codes: 22177 - of which, total which matched: 19457 +Total attempts to match against excerpt meanings: 249460 + of which, total with incorrect hash codes: 227471 + of which, total with correct hash codes: 21989 + of which, total which matched: 19267