eyelang 1.7.3 → 1.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/docs/guide.md +8 -1
- package/docs/language-reference.md +1 -1
- package/package.json +3 -2
- package/test/conformance/README.md +7 -1
- package/test/conformance/cases/aggregation/aggregate_max_no_answers_fails.eye +2 -0
- package/test/conformance/cases/aggregation/aggregate_min_structured_key.eye +5 -0
- package/test/conformance/cases/aggregation/countall_zero.eye +2 -0
- package/test/conformance/cases/aggregation/findall_empty_bag.eye +2 -0
- package/test/conformance/cases/aggregation/sumall_empty_zero.eye +2 -0
- package/test/conformance/cases/arithmetic/between_bound_value.eye +2 -0
- package/test/conformance/cases/arithmetic/between_singleton.eye +2 -0
- package/test/conformance/cases/arithmetic/duration_comparison.eye +2 -0
- package/test/conformance/cases/arithmetic/float_add_and_div.eye +3 -0
- package/test/conformance/cases/arithmetic/min_max_mixed.eye +3 -0
- package/test/conformance/cases/arithmetic/mod_negative_left.eye +2 -0
- package/test/conformance/cases/arithmetic/neg_abs_integer.eye +4 -0
- package/test/conformance/cases/arithmetic/pow_negative_exponent_fails.eye +2 -0
- package/test/conformance/cases/arithmetic/pow_zero_exponent.eye +2 -0
- package/test/conformance/cases/arithmetic/rounding_negative_float.eye +5 -0
- package/test/conformance/cases/arithmetic/smallest_divisor_prime.eye +2 -0
- package/test/conformance/cases/arithmetic/sqrt_negative_fails.eye +2 -0
- package/test/conformance/cases/atoms/angle_iri_percent_encoded.eye +2 -0
- package/test/conformance/cases/atoms/graphic_atom_predicate.eye +3 -0
- package/test/conformance/cases/atoms/graphic_less_than_atom.eye +4 -0
- package/test/conformance/cases/atoms/iri_as_predicate_name_quoted.eye +3 -0
- package/test/conformance/cases/atoms/iri_mailto_readback.eye +4 -0
- package/test/conformance/cases/atoms/iri_query_fragment_readback.eye +4 -0
- package/test/conformance/cases/atoms/iri_urn_readback.eye +4 -0
- package/test/conformance/cases/atoms/quoted_relative_iri_not_angle.eye +2 -0
- package/test/conformance/cases/atoms/quoted_urn_iri_readback.eye +4 -0
- package/test/conformance/cases/builtins/atom_string_iri_atom.eye +3 -0
- package/test/conformance/cases/builtins/eq_unifies_iri_atoms.eye +3 -0
- package/test/conformance/cases/context/holds_compound_formula.eye +2 -0
- package/test/conformance/cases/context/holds_fails_when_missing.eye +2 -0
- package/test/conformance/cases/context/holds_parts_from_formula.eye +2 -0
- package/test/conformance/cases/control/double_negation_ground_goal.eye +3 -0
- package/test/conformance/cases/control/forall_detects_counterexample.eye +5 -0
- package/test/conformance/cases/control/forall_empty_generator_true.eye +2 -0
- package/test/conformance/cases/control/negation_with_bound_generator.eye +5 -0
- package/test/conformance/cases/control/once_keeps_first_answer.eye +4 -0
- package/test/conformance/cases/declarations/det_semidet_do_not_emit_without_materialize.eye +5 -0
- package/test/conformance/cases/declarations/mode_ignored_when_arity_mismatch.eye +5 -0
- package/test/conformance/cases/declarations/table_is_also_fact.eye +4 -0
- package/test/conformance/cases/lists/empty_list_term.eye +4 -0
- package/test/conformance/cases/lists/head_rest_last.eye +4 -0
- package/test/conformance/cases/lists/improper_list_readback.eye +4 -0
- package/test/conformance/cases/lists/length_empty_and_nested.eye +3 -0
- package/test/conformance/cases/lists/list_to_set_structural_duplicates.eye +2 -0
- package/test/conformance/cases/lists/list_with_iri_atoms.eye +4 -0
- package/test/conformance/cases/lists/min_list_empty_fails.eye +2 -0
- package/test/conformance/cases/lists/nth0_known_value.eye +2 -0
- package/test/conformance/cases/lists/nth0_out_of_range_fails.eye +2 -0
- package/test/conformance/cases/lists/reverse_empty.eye +2 -0
- package/test/conformance/cases/lists/select_all_occurrences.eye +2 -0
- package/test/conformance/cases/lists/set_nth0_middle.eye +2 -0
- package/test/conformance/cases/lists/slice_middle.eye +2 -0
- package/test/conformance/cases/lists/slice_out_of_range_fails.eye +2 -0
- package/test/conformance/cases/lists/sort_structured_terms.eye +2 -0
- package/test/conformance/cases/lists/sum_list_empty_zero.eye +2 -0
- package/test/conformance/cases/lists/sum_min_max_list.eye +4 -0
- package/test/conformance/cases/lists/take_zero_and_drop_all.eye +3 -0
- package/test/conformance/cases/materialize/arity_specific_outputs.eye +4 -0
- package/test/conformance/cases/materialize/source_facts_suppressed.eye +5 -0
- package/test/conformance/cases/negation/not_known_goal_fails.eye +4 -0
- package/test/conformance/cases/negation/not_unknown_goal_succeeds.eye +3 -0
- package/test/conformance/cases/rules/left_to_right_body_binding.eye +4 -0
- package/test/conformance/cases/rules/transitive_rule_three_edges.eye +7 -0
- package/test/conformance/cases/strings/atom_string_from_string.eye +2 -0
- package/test/conformance/cases/strings/casefold_atoms.eye +3 -0
- package/test/conformance/cases/strings/contains_empty_needle.eye +2 -0
- package/test/conformance/cases/strings/join_mixed_scalars.eye +2 -0
- package/test/conformance/cases/strings/matches_simple_alternation.eye +2 -0
- package/test/conformance/cases/strings/named_regex_two_groups.eye +2 -0
- package/test/conformance/cases/strings/not_matches_simple_pattern.eye +2 -0
- package/test/conformance/cases/strings/number_string_from_string.eye +2 -0
- package/test/conformance/cases/strings/number_string_rejects_non_numeric.eye +2 -0
- package/test/conformance/cases/strings/replace_empty_search_no_change.eye +2 -0
- package/test/conformance/cases/strings/split_without_separator_match.eye +2 -0
- package/test/conformance/cases/strings/substring_out_of_range_fails.eye +2 -0
- package/test/conformance/cases/strings/substring_zero_count.eye +2 -0
- package/test/conformance/cases/strings/term_string_nested_term.eye +2 -0
- package/test/conformance/cases/strings/trim_tabs_and_spaces.eye +2 -0
- package/test/conformance/cases/syntax/comments_inside_program.eye +4 -0
- package/test/conformance/cases/syntax/parenthesized_query_style_body.eye +5 -0
- package/test/conformance/cases/syntax/quoted_atom_with_newline_escape.eye +3 -0
- package/test/conformance/cases/syntax/string_with_tab_escape.eye +2 -0
- package/test/conformance/cases/table/tabled_left_recursion_path.eye +7 -0
- package/test/conformance/cases/terms/arg_first_and_second.eye +3 -0
- package/test/conformance/cases/terms/arg_zero_fails.eye +2 -0
- package/test/conformance/cases/terms/compound_name_arguments_atom_zero_args.eye +3 -0
- package/test/conformance/cases/terms/compound_name_arguments_bad_args_fail.eye +2 -0
- package/test/conformance/cases/terms/compound_name_arguments_builds_atom_from_empty_args.eye +3 -0
- package/test/conformance/cases/terms/compound_name_arguments_builds_compound.eye +2 -0
- package/test/conformance/cases/terms/compound_name_arguments_iri_name.eye +2 -0
- package/test/conformance/cases/terms/functor_atom_arity_zero.eye +3 -0
- package/test/conformance/cases/terms/functor_number_and_string.eye +3 -0
- package/test/conformance/cases/terms/term_string_readback_iri_list.eye +2 -0
- package/test/conformance/cases/unification/compound_arity_mismatch_fails.eye +2 -0
- package/test/conformance/cases/unification/list_tail_binding.eye +2 -0
- package/test/conformance/cases/unification/nested_repeated_variable.eye +2 -0
- package/test/conformance/cases/unification/scalar_cross_type_same_lexical_value.eye +3 -0
- package/test/conformance/cases/variables/anonymous_in_two_goals.eye +4 -0
- package/test/conformance/cases/variables/clause_local_variable_names.eye +5 -0
- package/test/conformance/cases/variables/question_uppercase_variable.eye +4 -0
- package/test/conformance/cases/variables/question_variable_digits_and_underscore.eye +2 -0
- package/test/conformance/cases/variables/question_variable_uppercase_name.eye +2 -0
- package/test/conformance/cases/variables/variable_scope_per_clause.eye +6 -0
- package/test/conformance/errors/atoms/hash_comment_not_atom_at_line_start.eye +1 -0
- package/test/conformance/errors/atoms/relative_angle_name_rejected.eye +1 -0
- package/test/conformance/errors/atoms/space_in_angle_iri_rejected.eye +1 -0
- package/test/conformance/errors/atoms/unclosed_angle_iri_rejected.eye +1 -0
- package/test/conformance/errors/lists/missing_list_tail.eye +1 -0
- package/test/conformance/errors/rules/rule_head_cannot_be_empty_parentheses.eye +1 -0
- package/test/conformance/errors/syntax/angle_iri_with_space_rejected.eye +1 -0
- package/test/conformance/errors/syntax/bad_question_digit_variable.eye +1 -0
- package/test/conformance/errors/syntax/bad_question_variable.eye +1 -0
- package/test/conformance/errors/syntax/empty_body_after_rule_marker.eye +1 -0
- package/test/conformance/errors/syntax/empty_compound_nested.eye +1 -0
- package/test/conformance/errors/syntax/missing_final_dot_rejected.eye +1 -0
- package/test/conformance/errors/syntax/missing_period.eye +1 -0
- package/test/conformance/errors/syntax/relative_angle_iri_rejected.eye +1 -0
- package/test/conformance/errors/syntax/trailing_comma_in_body.eye +1 -0
- package/test/conformance/errors/syntax/unclosed_compound.eye +1 -0
- package/test/conformance/errors/syntax/unclosed_list.eye +1 -0
- package/test/conformance/errors/syntax/unclosed_list_rejected.eye +1 -0
- package/test/conformance/errors/syntax/unclosed_quoted_atom.eye +1 -0
- package/test/conformance/errors/syntax/unclosed_string.eye +1 -0
- package/test/conformance/errors/syntax/unquoted_colon_predicate.eye +1 -0
- package/test/conformance/errors/syntax/unquoted_dotted_predicate.eye +1 -0
- package/test/conformance/errors/syntax/uppercase_predicate_rejected.eye +1 -0
- package/test/conformance/errors/terms/zero_arity_compound_nested_rejected.eye +1 -0
- package/test/conformance/errors/variables/bare_underscore_in_list_rejected.eye +1 -0
- package/test/conformance/errors/variables/bare_underscore_name_in_compound_rejected.eye +1 -0
- package/test/conformance/errors/variables/question_digit_rejected.eye +1 -0
- package/test/conformance/errors/variables/question_dot_rejected.eye +1 -0
- package/test/conformance/errors/variables/uppercase_in_body_rejected.eye +1 -0
- package/test/conformance/expected/aggregation/aggregate_max_no_answers_fails.eye +1 -0
- package/test/conformance/expected/aggregation/aggregate_min_structured_key.eye +1 -0
- package/test/conformance/expected/aggregation/countall_zero.eye +1 -0
- package/test/conformance/expected/aggregation/findall_empty_bag.eye +1 -0
- package/test/conformance/expected/aggregation/sumall_empty_zero.eye +1 -0
- package/test/conformance/expected/arithmetic/between_bound_value.eye +1 -0
- package/test/conformance/expected/arithmetic/between_singleton.eye +1 -0
- package/test/conformance/expected/arithmetic/duration_comparison.eye +1 -0
- package/test/conformance/expected/arithmetic/float_add_and_div.eye +2 -0
- package/test/conformance/expected/arithmetic/min_max_mixed.eye +2 -0
- package/test/conformance/expected/arithmetic/mod_negative_left.eye +1 -0
- package/test/conformance/expected/arithmetic/neg_abs_integer.eye +2 -0
- package/test/conformance/expected/arithmetic/pow_negative_exponent_fails.eye +1 -0
- package/test/conformance/expected/arithmetic/pow_zero_exponent.eye +1 -0
- package/test/conformance/expected/arithmetic/rounding_negative_float.eye +4 -0
- package/test/conformance/expected/arithmetic/smallest_divisor_prime.eye +1 -0
- package/test/conformance/expected/arithmetic/sqrt_negative_fails.eye +1 -0
- package/test/conformance/expected/atoms/angle_iri_percent_encoded.eye +0 -0
- package/test/conformance/expected/atoms/graphic_atom_predicate.eye +1 -0
- package/test/conformance/expected/atoms/graphic_less_than_atom.eye +1 -0
- package/test/conformance/expected/atoms/iri_as_predicate_name_quoted.eye +1 -0
- package/test/conformance/expected/atoms/iri_mailto_readback.eye +1 -0
- package/test/conformance/expected/atoms/iri_query_fragment_readback.eye +1 -0
- package/test/conformance/expected/atoms/iri_urn_readback.eye +1 -0
- package/test/conformance/expected/atoms/quoted_relative_iri_not_angle.eye +0 -0
- package/test/conformance/expected/atoms/quoted_urn_iri_readback.eye +1 -0
- package/test/conformance/expected/builtins/atom_string_iri_atom.eye +1 -0
- package/test/conformance/expected/builtins/eq_unifies_iri_atoms.eye +1 -0
- package/test/conformance/expected/context/holds_compound_formula.eye +1 -0
- package/test/conformance/expected/context/holds_fails_when_missing.eye +1 -0
- package/test/conformance/expected/context/holds_parts_from_formula.eye +2 -0
- package/test/conformance/expected/control/double_negation_ground_goal.eye +1 -0
- package/test/conformance/expected/control/forall_detects_counterexample.eye +1 -0
- package/test/conformance/expected/control/forall_empty_generator_true.eye +1 -0
- package/test/conformance/expected/control/negation_with_bound_generator.eye +1 -0
- package/test/conformance/expected/control/once_keeps_first_answer.eye +1 -0
- package/test/conformance/expected/declarations/det_semidet_do_not_emit_without_materialize.eye +1 -0
- package/test/conformance/expected/declarations/mode_ignored_when_arity_mismatch.eye +1 -0
- package/test/conformance/expected/declarations/table_is_also_fact.eye +1 -0
- package/test/conformance/expected/lists/empty_list_term.eye +1 -0
- package/test/conformance/expected/lists/head_rest_last.eye +3 -0
- package/test/conformance/expected/lists/improper_list_readback.eye +1 -0
- package/test/conformance/expected/lists/length_empty_and_nested.eye +2 -0
- package/test/conformance/expected/lists/list_to_set_structural_duplicates.eye +1 -0
- package/test/conformance/expected/lists/list_with_iri_atoms.eye +1 -0
- package/test/conformance/expected/lists/min_list_empty_fails.eye +1 -0
- package/test/conformance/expected/lists/nth0_known_value.eye +1 -0
- package/test/conformance/expected/lists/nth0_out_of_range_fails.eye +1 -0
- package/test/conformance/expected/lists/reverse_empty.eye +1 -0
- package/test/conformance/expected/lists/select_all_occurrences.eye +3 -0
- package/test/conformance/expected/lists/set_nth0_middle.eye +1 -0
- package/test/conformance/expected/lists/slice_middle.eye +0 -0
- package/test/conformance/expected/lists/slice_out_of_range_fails.eye +1 -0
- package/test/conformance/expected/lists/sort_structured_terms.eye +1 -0
- package/test/conformance/expected/lists/sum_list_empty_zero.eye +1 -0
- package/test/conformance/expected/lists/sum_min_max_list.eye +3 -0
- package/test/conformance/expected/lists/take_zero_and_drop_all.eye +2 -0
- package/test/conformance/expected/materialize/arity_specific_outputs.eye +0 -0
- package/test/conformance/expected/materialize/source_facts_suppressed.eye +1 -0
- package/test/conformance/expected/negation/not_known_goal_fails.eye +0 -0
- package/test/conformance/expected/negation/not_unknown_goal_succeeds.eye +1 -0
- package/test/conformance/expected/rules/left_to_right_body_binding.eye +1 -0
- package/test/conformance/expected/rules/transitive_rule_three_edges.eye +6 -0
- package/test/conformance/expected/strings/atom_string_from_string.eye +1 -0
- package/test/conformance/expected/strings/casefold_atoms.eye +2 -0
- package/test/conformance/expected/strings/contains_empty_needle.eye +1 -0
- package/test/conformance/expected/strings/join_mixed_scalars.eye +1 -0
- package/test/conformance/expected/strings/matches_simple_alternation.eye +1 -0
- package/test/conformance/expected/strings/named_regex_two_groups.eye +1 -0
- package/test/conformance/expected/strings/not_matches_simple_pattern.eye +1 -0
- package/test/conformance/expected/strings/number_string_from_string.eye +1 -0
- package/test/conformance/expected/strings/number_string_rejects_non_numeric.eye +1 -0
- package/test/conformance/expected/strings/replace_empty_search_no_change.eye +1 -0
- package/test/conformance/expected/strings/split_without_separator_match.eye +1 -0
- package/test/conformance/expected/strings/substring_out_of_range_fails.eye +1 -0
- package/test/conformance/expected/strings/substring_zero_count.eye +1 -0
- package/test/conformance/expected/strings/term_string_nested_term.eye +1 -0
- package/test/conformance/expected/strings/trim_tabs_and_spaces.eye +1 -0
- package/test/conformance/expected/syntax/comments_inside_program.eye +0 -0
- package/test/conformance/expected/syntax/parenthesized_query_style_body.eye +1 -0
- package/test/conformance/expected/syntax/quoted_atom_with_newline_escape.eye +0 -0
- package/test/conformance/expected/syntax/string_with_tab_escape.eye +0 -0
- package/test/conformance/expected/table/tabled_left_recursion_path.eye +1 -0
- package/test/conformance/expected/terms/arg_first_and_second.eye +2 -0
- package/test/conformance/expected/terms/arg_zero_fails.eye +1 -0
- package/test/conformance/expected/terms/compound_name_arguments_atom_zero_args.eye +1 -0
- package/test/conformance/expected/terms/compound_name_arguments_bad_args_fail.eye +1 -0
- package/test/conformance/expected/terms/compound_name_arguments_builds_atom_from_empty_args.eye +1 -0
- package/test/conformance/expected/terms/compound_name_arguments_builds_compound.eye +1 -0
- package/test/conformance/expected/terms/compound_name_arguments_iri_name.eye +1 -0
- package/test/conformance/expected/terms/functor_atom_arity_zero.eye +1 -0
- package/test/conformance/expected/terms/functor_number_and_string.eye +2 -0
- package/test/conformance/expected/terms/term_string_readback_iri_list.eye +1 -0
- package/test/conformance/expected/unification/compound_arity_mismatch_fails.eye +1 -0
- package/test/conformance/expected/unification/list_tail_binding.eye +1 -0
- package/test/conformance/expected/unification/nested_repeated_variable.eye +1 -0
- package/test/conformance/expected/unification/scalar_cross_type_same_lexical_value.eye +2 -0
- package/test/conformance/expected/variables/anonymous_in_two_goals.eye +1 -0
- package/test/conformance/expected/variables/clause_local_variable_names.eye +2 -0
- package/test/conformance/expected/variables/question_uppercase_variable.eye +1 -0
- package/test/conformance/expected/variables/question_variable_digits_and_underscore.eye +1 -0
- package/test/conformance/expected/variables/question_variable_uppercase_name.eye +1 -0
- package/test/conformance/expected/variables/variable_scope_per_clause.eye +2 -0
- package/test/conformance/expected-errors/atoms/hash_comment_not_atom_at_line_start.txt +1 -0
- package/test/conformance/expected-errors/atoms/relative_angle_name_rejected.txt +1 -0
- package/test/conformance/expected-errors/atoms/space_in_angle_iri_rejected.txt +1 -0
- package/test/conformance/expected-errors/atoms/unclosed_angle_iri_rejected.txt +1 -0
- package/test/conformance/expected-errors/lists/missing_list_tail.txt +1 -0
- package/test/conformance/expected-errors/rules/rule_head_cannot_be_empty_parentheses.txt +1 -0
- package/test/conformance/expected-errors/syntax/angle_iri_with_space_rejected.txt +1 -0
- package/test/conformance/expected-errors/syntax/bad_question_digit_variable.txt +1 -0
- package/test/conformance/expected-errors/syntax/bad_question_variable.txt +1 -0
- package/test/conformance/expected-errors/syntax/empty_body_after_rule_marker.txt +1 -0
- package/test/conformance/expected-errors/syntax/empty_compound_nested.txt +1 -0
- package/test/conformance/expected-errors/syntax/missing_final_dot_rejected.txt +1 -0
- package/test/conformance/expected-errors/syntax/missing_period.txt +1 -0
- package/test/conformance/expected-errors/syntax/relative_angle_iri_rejected.txt +1 -0
- package/test/conformance/expected-errors/syntax/trailing_comma_in_body.txt +1 -0
- package/test/conformance/expected-errors/syntax/unclosed_compound.txt +1 -0
- package/test/conformance/expected-errors/syntax/unclosed_list.txt +1 -0
- package/test/conformance/expected-errors/syntax/unclosed_list_rejected.txt +1 -0
- package/test/conformance/expected-errors/syntax/unclosed_quoted_atom.txt +1 -0
- package/test/conformance/expected-errors/syntax/unclosed_string.txt +1 -0
- package/test/conformance/expected-errors/syntax/unquoted_colon_predicate.txt +1 -0
- package/test/conformance/expected-errors/syntax/unquoted_dotted_predicate.txt +1 -0
- package/test/conformance/expected-errors/syntax/uppercase_predicate_rejected.txt +1 -0
- package/test/conformance/expected-errors/terms/zero_arity_compound_nested_rejected.txt +1 -0
- package/test/conformance/expected-errors/variables/bare_underscore_in_list_rejected.txt +1 -0
- package/test/conformance/expected-errors/variables/bare_underscore_name_in_compound_rejected.txt +1 -0
- package/test/conformance/expected-errors/variables/question_digit_rejected.txt +1 -0
- package/test/conformance/expected-errors/variables/question_dot_rejected.txt +1 -0
- package/test/conformance/expected-errors/variables/uppercase_in_body_rejected.txt +1 -0
- package/test/conformance/expected-warnings/negation/negative_unknown_group_quiet.eye +1 -0
- package/test/conformance/expected-warnings/negation/negative_unknown_group_quiet.txt +0 -0
- package/test/conformance/expected-warnings/negation/no_negation_quiet.eye +1 -0
- package/test/conformance/expected-warnings/negation/no_negation_quiet.txt +0 -0
- package/test/conformance/expected-warnings/negation/stratified_negative_unknown_after_positive_quiet.eye +1 -0
- package/test/conformance/expected-warnings/negation/stratified_negative_unknown_after_positive_quiet.txt +0 -0
- package/test/conformance/expected-warnings/negation/stratified_two_level_quiet.eye +1 -0
- package/test/conformance/expected-warnings/negation/stratified_two_level_quiet.txt +0 -0
- package/test/conformance/expected-warnings/negation/unstratified_positive_prefix.eye +0 -0
- package/test/conformance/expected-warnings/negation/unstratified_positive_prefix.txt +2 -0
- package/test/conformance/expected-warnings/negation/unstratified_three_step.eye +1 -0
- package/test/conformance/expected-warnings/negation/unstratified_three_step.txt +2 -0
- package/test/conformance/expected-warnings/negation/unstratified_two_arity_cycle.eye +0 -0
- package/test/conformance/expected-warnings/negation/unstratified_two_arity_cycle.txt +3 -0
- package/test/conformance/expected-warnings/negation/unstratified_two_independent_cycles.eye +0 -0
- package/test/conformance/expected-warnings/negation/unstratified_two_independent_cycles.txt +5 -0
- package/test/conformance/expected-warnings/negation/unstratified_with_iri_predicates.eye +0 -0
- package/test/conformance/expected-warnings/negation/unstratified_with_iri_predicates.txt +3 -0
- package/test/conformance/expected-warnings/negation/warning_preserves_multiple_stdout_answers.eye +0 -0
- package/test/conformance/expected-warnings/negation/warning_preserves_multiple_stdout_answers.txt +3 -0
- package/test/conformance/warnings/negation/negative_unknown_group_quiet.eye +2 -0
- package/test/conformance/warnings/negation/no_negation_quiet.eye +3 -0
- package/test/conformance/warnings/negation/stratified_negative_unknown_after_positive_quiet.eye +3 -0
- package/test/conformance/warnings/negation/stratified_two_level_quiet.eye +5 -0
- package/test/conformance/warnings/negation/unstratified_positive_prefix.eye +5 -0
- package/test/conformance/warnings/negation/unstratified_three_step.eye +6 -0
- package/test/conformance/warnings/negation/unstratified_two_arity_cycle.eye +4 -0
- package/test/conformance/warnings/negation/unstratified_two_independent_cycles.eye +6 -0
- package/test/conformance/warnings/negation/unstratified_with_iri_predicates.eye +4 -0
- package/test/conformance/warnings/negation/warning_preserves_multiple_stdout_answers.eye +5 -0
- package/test/run-conformance-report.mjs +108 -0
- package/test/run-regression.mjs +13 -0
package/README.md
CHANGED
package/docs/guide.md
CHANGED
|
@@ -497,7 +497,13 @@ node test/run-regression.mjs
|
|
|
497
497
|
node test/run-examples.mjs
|
|
498
498
|
```
|
|
499
499
|
|
|
500
|
-
|
|
500
|
+
Summarize the conformance corpus by category:
|
|
501
|
+
|
|
502
|
+
```sh
|
|
503
|
+
npm run conformance:report
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
The conformance suite lives in [`test/conformance/`](../test/conformance/) as a file-based eyelang corpus. Positive cases pair `cases/<name>.eye` with exact expected stdout under `expected/<name>.eye`; negative cases pair `errors/<name>.eye` with exact expected error text under `expected-errors/<name>.txt`; warning cases pair `warnings/<name>.eye` with exact `--warnings` stdout and stderr files under `expected-warnings/`. Cases may be grouped in category directories such as `arithmetic/`, `strings/`, `lists/`, `terms/`, `atoms/`, `variables/`, `negation/`, and `syntax/`, so another implementation can reuse the same corpus as an executable language contract. The suite covers the standard language surface from the language reference, including reusable built-ins, standard errors, and standard warnings. The regression suite lives in [`test/run-regression.mjs`](../test/run-regression.mjs) and covers CLI regressions, the public JavaScript API, and white-box invariants for parser, unification, and indexing behavior.
|
|
501
507
|
|
|
502
508
|
## Development and release
|
|
503
509
|
|
|
@@ -506,6 +512,7 @@ Common commands:
|
|
|
506
512
|
```sh
|
|
507
513
|
npm run test:eyelang # alias for npm test
|
|
508
514
|
npm test # full conformance, regression/API/white-box, examples, and proof examples
|
|
515
|
+
npm run conformance:report # conformance coverage summary by category
|
|
509
516
|
node test/run-conformance.mjs
|
|
510
517
|
node test/run-regression.mjs
|
|
511
518
|
node test/run-examples.mjs
|
|
@@ -702,7 +702,7 @@ A conforming eyelang implementation supports the standard language described abo
|
|
|
702
702
|
|
|
703
703
|
Browser execution, package layout, CLI URL loading, and any implementation-specific built-ins described in host documentation are outside this conformance surface unless separately standardized.
|
|
704
704
|
|
|
705
|
-
Conformance cases live in the repository under `test/conformance/`. They are run by `npm test` before the example suite, and can be run alone with `node test/run-conformance.mjs`. Positive cases have input programs under `conformance/cases/` and exact expected standard-output files under `conformance/expected/`; both use `.eye` so expected output remains eyelang-readable. Expected-error cases live under `conformance/errors/` with exact messages under `conformance/expected-errors/`. Expected-warning cases live under `conformance/warnings/` with exact `--warnings` stdout and stderr files under `conformance/expected-warnings/`.
|
|
705
|
+
Conformance cases live in the repository under `test/conformance/`. They are run by `npm test` before the example suite, and can be run alone with `node test/run-conformance.mjs`. Positive cases have input programs under `conformance/cases/` and exact expected standard-output files under `conformance/expected/`; both use `.eye` so expected output remains eyelang-readable. Expected-error cases live under `conformance/errors/` with exact messages under `conformance/expected-errors/`. Expected-warning cases live under `conformance/warnings/` with exact `--warnings` stdout and stderr files under `conformance/expected-warnings/`. The corpus is grouped by language area, including arithmetic, strings, lists, terms, atoms, variables, negation, declarations, materialization, rules, syntax, and errors.
|
|
706
706
|
|
|
707
707
|
## 15. Relationship to ISO Prolog
|
|
708
708
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eyelang",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.5",
|
|
4
4
|
"description": "A small Prolog-like logic programming language for rules, goals, answers, and proofs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"test:examples": "node test/run-examples.mjs",
|
|
45
45
|
"test:regression": "node test/run-regression.mjs",
|
|
46
46
|
"preversion": "npm test",
|
|
47
|
-
"postversion": "git push origin HEAD --follow-tags"
|
|
47
|
+
"postversion": "git push origin HEAD --follow-tags",
|
|
48
|
+
"conformance:report": "node test/run-conformance-report.mjs"
|
|
48
49
|
}
|
|
49
50
|
}
|
|
@@ -20,7 +20,7 @@ Expected-warning cases consist of:
|
|
|
20
20
|
- `conformance/expected-warnings/<name>.eye` — exact expected standard output;
|
|
21
21
|
- `conformance/expected-warnings/<name>.txt` — exact expected standard error.
|
|
22
22
|
|
|
23
|
-
Case names may be nested in category directories such as `atoms/`, `variables/`, `negation/`, or `syntax/`. Expected files mirror the same relative path.
|
|
23
|
+
Case names may be nested in category directories such as `arithmetic/`, `strings/`, `lists/`, `terms/`, `atoms/`, `variables/`, `negation/`, or `syntax/`. Expected files mirror the same relative path.
|
|
24
24
|
|
|
25
25
|
## Running the suite
|
|
26
26
|
|
|
@@ -36,6 +36,12 @@ Run only the conformance suite:
|
|
|
36
36
|
node test/run-conformance.mjs
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
Summarize conformance coverage by category:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
npm run conformance:report
|
|
43
|
+
```
|
|
44
|
+
|
|
39
45
|
Run matching conformance cases by passing a filename or directory fragment:
|
|
40
46
|
|
|
41
47
|
```sh
|