From d95addef9476f4e572a022fcd7c3d2fa14713e8a Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Fri, 12 Mar 2021 10:55:57 +0000 Subject: [PATCH] New AP parser finally passes test suite --- docs/if-module/4-anl.html | 72 +- docs/if-module/4-as.html | 2 +- docs/if-module/4-pap.html | 8 +- docs/if-module/4-pc.html | 2 +- docs/if-module/5-tfg.html | 2 +- inform7/Downloads/preform-diagnostics.txt | 628 +++++++++--------- inform7/Figures/memory-diagnostics.txt | 36 +- inform7/Figures/preform-summary.txt | 18 +- inform7/Figures/timings-diagnostics.txt | 24 +- inform7/Tests/Groups/actions.testgroup | 19 +- .../Tests/Test Cases/ActionPatternParsing.txt | 2 + inform7/Tests/Test Cases/DoingSomethingIn.txt | 16 + .../_Results_Ideal/ActionPatternParsing.txt | 23 +- .../_Results_Ideal/DoingSomethingIn.txt | 24 + .../PM_NontextualUnderstandInAP.txt | 8 - .../_Results_Ideal/PM_APWithImmiscible.txt | 47 +- .../_Results_Ideal/PM_GoingWithoutObject.txt | 5 + .../PM_NontextualUnderstandInAP.txt | 9 - .../if-module/Chapter 4/Action Name Lists.w | 36 +- .../Chapter 4/Parse Action Patterns.w | 8 +- inform7/if-module/Chapter 4/Parse Clauses.w | 2 +- .../Chapter 5/Traverse for Grammar.w | 2 +- .../Figures/excerpts-diagnostics.txt | 16 +- 23 files changed, 554 insertions(+), 455 deletions(-) create mode 100644 inform7/Tests/Test Cases/DoingSomethingIn.txt create mode 100644 inform7/Tests/Test Cases/_Results_Ideal/DoingSomethingIn.txt delete mode 100644 inform7/Tests/Test Problems/PM_NontextualUnderstandInAP.txt delete mode 100644 inform7/Tests/Test Problems/_Results_Ideal/PM_NontextualUnderstandInAP.txt diff --git a/docs/if-module/4-anl.html b/docs/if-module/4-anl.html index a84d9cea1..a55f3cca4 100644 --- a/docs/if-module/4-anl.html +++ b/docs/if-module/4-anl.html @@ -100,7 +100,7 @@ list of anl_entry objects. int test_this_in_ap_match; } action_name_list; -action_name_list *ActionNameLists::new_list(anl_entry *first, int state) { +action_name_list *ActionNameLists::new_list(anl_entry *first, int state) { action_name_list *list = CREATE(action_name_list); list->entries = first; list->negation_state = state; @@ -165,7 +165,7 @@ action list. struct anl_entry *next_entry; next in this ANL list } anl_entry; -anl_entry *ActionNameLists::new_entry_at(wording W) { +anl_entry *ActionNameLists::new_entry_at(wording W) { anl_entry *entry = CREATE(anl_entry); entry->item = ActionNameLists::new_item(); int at = -1; @@ -463,13 +463,13 @@ the text leading to a list: return NULL; } -wording ActionNameLists::get_clause_wording(anl_entry *entry, int C) { +wording ActionNameLists::get_clause_wording(anl_entry *entry, int C) { for (anl_clause_text *c = (entry)?(entry->parsing_data.anl_clauses):NULL; c; c = c->next_clause) if (c->clause_ID == C) return c->clause_text; return EMPTY_WORDING; } -anl_entry *ActionNameLists::set_clause_wording(anl_entry *entry, int C, wording W) { +anl_entry *ActionNameLists::set_clause_wording(anl_entry *entry, int C, wording W) { if (entry == NULL) internal_error("no entry"); anl_clause_text *prev = NULL; for (anl_clause_text *c = (entry)?(entry->parsing_data.anl_clauses):NULL; c; c = c->next_clause) { @@ -560,7 +560,7 @@ the text leading to a list: return ActionNameLists::get_clause_wording(entry, IN_AP_CLAUSE); } -anl_entry *ActionNameLists::add_parameter(anl_entry *entry, wording W) { +anl_entry *ActionNameLists::add_parameter(anl_entry *entry, wording W) { int p = ActionNameLists::parc(entry); switch (p) { case 0: ActionNameLists::set_clause_wording(entry, NOUN_AP_CLAUSE, W); break; @@ -747,6 +747,7 @@ something other than something — or int anl_parsing_tense = IS_TENSE; int experimental_anl_system = FALSE; action_name_list *ActionNameLists::parse(wording W, int tense, int *sense) { + experimental_anl_system = TRUE; if (Wordings::mismatched_brackets(W)) return NULL; int t = anl_parsing_tense; anl_parsing_tense = tense; @@ -766,13 +767,13 @@ something other than something — or <action-list> ::= doing something/anything other than <excluded-list> | ==> { FALSE, RP[1] } doing something/anything except <excluded-list> | ==> { FALSE, RP[1] } - doing something/anything to/with <anl-to-tail> | ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) } - doing something/anything | ==> Construct ANL for anything24.1 - doing something/anything ... | ==> { fail } + doing something/anything to/with <anl-to-tail> | ==> Construct ANL for anything to24.1 + doing something/anything | ==> Construct ANL for anything24.2 + doing something/anything {...} | ==> { -, - }; wording TW = WR[1]; Construct ANL for doing something with a tail24.3 <anl> ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) } <excluded-list> ::= - <anl> to/with {<minimal-common-to-text>} | ==> Add to-clause to excluded ANL24.2; + <anl> to/with {<minimal-common-to-text>} | ==> Add to-clause to excluded ANL24.4; <anl> ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_NEGATED_LISTWISE) } <minimal-common-to-text> ::= @@ -781,7 +782,16 @@ something other than something — or ... -

§24.1. Construct ANL for anything24.1 = +

§24.1. Construct ANL for anything to24.1 = +

+ +
+    anl_entry *results = RP[1];
+    Extend the list to provide for clauses24.1.1;
+    ==> { TRUE, ActionNameLists::new_list(results, ANL_POSITIVE) }
+
+
  • This code is used in §24.
+

§24.2. Construct ANL for anything24.2 =

@@ -789,7 +799,17 @@ something other than something — or     ==> { TRUE, ActionNameLists::new_list(entry, ANL_POSITIVE) };
 
  • This code is used in §24.
-

§24.2. Add to-clause to excluded ANL24.2 = +

§24.3. Construct ANL for doing something with a tail24.3 = +

+ +
+    anl_entry *results = ActionNameLists::new_entry_at(W);
+    ActionNameLists::set_clause_wording(results, TAIL_AP_CLAUSE, TW);
+    Extend the list to provide for clauses24.1.1;
+    ==> { TRUE, ActionNameLists::new_list(results, ANL_POSITIVE) };
+
+
  • This code is used in §24.
+

§24.4. Add to-clause to excluded ANL24.4 =

@@ -799,7 +819,9 @@ something other than something — or         ==> { fail production };
     }
     ActionNameLists::add_parameter(entry, GET_RW(<excluded-list>, 1));
-    ==> { FALSE, ActionNameLists::new_list(entry, ANL_NEGATED_ITEMWISE) };
+    anl_entry *results = entry;
+    Extend the list to provide for clauses24.1.1;
+    ==> { FALSE, ActionNameLists::new_list(results, ANL_NEGATED_ITEMWISE) };
 
  • This code is used in §24.

§25. The trickiest form is: @@ -922,7 +944,7 @@ for instance, we don't want to count the "in" from "fixed in place". ActionNameLists::set_clause_wording(entry, TAIL_AP_CLAUSE, TW); anl_entry *results = entry; LOGIF(ACTION_PATTERN_PARSING, "Saw tail %W\n", TW); - Extend the list to provide for clauses28.1.1; + Extend the list to provide for clauses24.1.1; return results; } @@ -956,7 +978,7 @@ end, but it's syntactically valid.) <anl-entry-with-action> internal { anl_entry *results = NULL; Parse the wording into a list of results29.1; - if (experimental_anl_system) Extend the list to provide for clauses28.1.1; + if (experimental_anl_system) Extend the list to provide for clauses24.1.1; if (results) { ==> { -, results }; return TRUE; } @@ -975,6 +997,7 @@ end, but it's syntactically valid.) LOOP_OVER(an, action_name) { Ready the trial entry for another test29.1.1; wording RW = EMPTY_WORDING; + int abbreviated_to_tail = FALSE; Make the trial entry fit this action, if possible, leaving remaining text in RW29.1.2; Consider the trial entry for inclusion in the results list29.1.3; NoMatch: ; @@ -1005,9 +1028,15 @@ inelegant, but there's no elegant way to break out of nested loops in C. int it_optional = ActionNameNames::it_optional(an); int abbreviable = ActionNameNames::abbreviable(an); wording XW = ActionNameNames::tensed(an, anl_parsing_tense); - int w_m = Wordings::first_wn(W), x_m = Wordings::first_wn(XW); + int w_m = Wordings::first_wn(W), x_m = Wordings::first_wn(XW), n = 0; while ((w_m <= Wordings::last_wn(W)) && (x_m <= Wordings::last_wn(XW))) { - if (Lexer::word(x_m++) != Lexer::word(w_m++)) goto NoMatch; + if (Lexer::word(x_m++) != Lexer::word(w_m++)) { + if ((abbreviable) && (it_optional) && (n >= 1)) { + x_ended = TRUE; abbreviated_to_tail = TRUE; x_m--; w_m--; + } else goto NoMatch; + break; + } + n++; if (x_m > Wordings::last_wn(XW)) { x_ended = TRUE; break; } if (<object-pronoun>(Wordings::one_word(x_m))) { if (w_m > Wordings::last_wn(W)) x_ended = TRUE; else { @@ -1042,9 +1071,10 @@ inelegant, but there's no elegant way to break out of nested loops in C. Include the trial entry29.1.3.1; } else { if (experimental_anl_system) { - if (ActionSemantics::can_have_noun(an)) { - if (ActionNameLists::parse_to_tail(trial_entry, RW)) + if ((ActionSemantics::can_have_noun(an)) && (abbreviated_to_tail == FALSE)) { + if (ActionNameLists::parse_to_tail(trial_entry, RW)) { Include the trial entry29.1.3.1; + } } else { ActionNameLists::set_clause_wording(trial_entry, TAIL_AP_CLAUSE, RW); Include the trial entry29.1.3.1; @@ -1086,7 +1116,7 @@ the trial entry for future trials. trial_entry = ActionNameLists::new_entry_at(EMPTY_WORDING);

  • This code is used in §29.1.3 (five times).
-

§28.1.1. Extend the list to provide for clauses28.1.1 = +

§24.1.1. Extend the list to provide for clauses24.1.1 =

@@ -1103,11 +1133,11 @@ the trial entry for future trials.
             prev = entry;
         }
 
- +

§30.

-void ActionNameLists::explode(anl_entry *entry) {
+void ActionNameLists::explode(anl_entry *entry) {
     int tc = -1;
     if (ActionNameLists::has_clause(entry, TAIL_AP_CLAUSE)) tc = TAIL_AP_CLAUSE;
     else if (ActionNameLists::has_clause(entry, SECOND_AP_CLAUSE)) tc = SECOND_AP_CLAUSE;
diff --git a/docs/if-module/4-as.html b/docs/if-module/4-as.html
index f401d9877..476e115ea 100644
--- a/docs/if-module/4-as.html
+++ b/docs/if-module/4-as.html
@@ -185,7 +185,7 @@ preferred way to do that is to use activities for selecting missing parameters.
 

-int ActionSemantics::can_have_noun(action_name *an) {
+int ActionSemantics::can_have_noun(action_name *an) {
     if (an->semantics.max_parameters >= 1) return TRUE;
     return FALSE;
 }
diff --git a/docs/if-module/4-pap.html b/docs/if-module/4-pap.html
index 9c1f819a4..e2d25c7ef 100644
--- a/docs/if-module/4-pap.html
+++ b/docs/if-module/4-pap.html
@@ -566,7 +566,7 @@ to enable Inform to set up a stack frame if there isn't one already, and so on.
 

-<ap-six> ::=
+<ap-sixxxxx> ::=
     <ap-seven> in the presence of <s-ap-parameter> | ==> { 0, RP[1] }; APClauses::set_spec(RP[1], IN_THE_PRESENCE_OF_AP_CLAUSE, RP[2]);
     <ap-seven>                                       ==> { 0, RP[1] };
 
@@ -576,7 +576,7 @@ so what's left can't very efficiently be written in Preform.

-<ap-seven> internal {
+<ap-six> internal {
     if (Wordings::mismatched_brackets(W)) { ==> { fail nonterminal }; }
     if (parse_action_pattern_mode & SCANNING_ANL_ONLY) {
         action_name_list *list = ActionNameLists::parse(W, prevailing_ap_tense, NULL);
@@ -588,8 +588,8 @@ so what's left can't very efficiently be written in Preform.
     } else {
         LOGIF(ACTION_PATTERN_PARSING, "Parsing action pattern: %W\n", W);
         LOG_INDENT;
-        action_pattern *ap1 = ParseClauses::parse(W);
-        LOGIF(ACTION_PATTERN_PARSING, "Method 1 on %W gives $A\n", W, ap1);
+		action_pattern *ap1 = ParseClauses::parse(W);
+		LOGIF(ACTION_PATTERN_PARSING, "Method 1 on %W gives $A\n", W, ap1);
         action_pattern *ap2 = ParseClauses::experiment(W);
         LOGIF(ACTION_PATTERN_PARSING, "Method 2 on %W gives $A\n", W, ap2);
 		if ((ap1) && (ap2 == NULL)) {
diff --git a/docs/if-module/4-pc.html b/docs/if-module/4-pc.html
index ce0d79c87..df4ccc105 100644
--- a/docs/if-module/4-pc.html
+++ b/docs/if-module/4-pc.html
@@ -752,7 +752,7 @@ We treat words like "something" specially to avoid them being read as
             LOGIF(ACTION_PATTERN_PARSING, "Writing clause %d '%W'\n", c->clause_ID, c->clause_text);
             if (c->stv_to_match) APClauses::set_action_variable_spec(ap, c->stv_to_match, c->evaluation);
             else APClauses::set_spec(ap, c->clause_ID, c->evaluation);
-            Going::new_clause(ap, APClauses::clause(ap, c->clause_ID));
+			Going::new_clause(ap, APClauses::clause(ap, c->clause_ID));
         }
     return ap;
 }
diff --git a/docs/if-module/5-tfg.html b/docs/if-module/5-tfg.html
index 27ab6f17a..ae4dbbc1d 100644
--- a/docs/if-module/5-tfg.html
+++ b/docs/if-module/5-tfg.html
@@ -824,7 +824,7 @@ problem message for this case is now commented out.
                 "text",
                 "such as \"eternity\" or \"peruvian skies\".");
         else if (TEST_COMPILATION_MODE(SPECIFICATIONS_CMODE))
-            StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NontextualUnderstandInAP),
+            StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
                 "the topic here should be in the form of a textual description",
                 "as in 'asking about \"[something]\"'.");
         else
diff --git a/inform7/Downloads/preform-diagnostics.txt b/inform7/Downloads/preform-diagnostics.txt
index 7cddac14e..b8d277976 100644
--- a/inform7/Downloads/preform-diagnostics.txt
+++ b/inform7/Downloads/preform-diagnostics.txt
@@ -16,7 +16,7 @@
 
  internal nti 30 constraint (none) extremes [1, 1]
 
- internal hits 2894/22722 nti 31 constraint (none) extremes [1, 1]
+ internal hits 2894/22688 nti 31 constraint (none) extremes [1, 1]
 
  internal nti 6 constraint (none) extremes [1, 1]
 
@@ -4728,7 +4728,7 @@
         twelfth 
           constraint CS = {27} extremes [1, 1]
 
- internal hits 200/22490 nti r0 constraint CS = {r0} extremes [1, 1]
+ internal hits 200/22402 nti r0 constraint CS = {r0} extremes [1, 1]
 
  internal nti r1 constraint CS = {r1} extremes [1, 1]
 
@@ -4736,12 +4736,12 @@
 
  internal hits 0/258 nti 25 constraint (none) extremes [1, infinity)
 
- hits 36473/72946 nti 21 constraint (none) extremes [1, infinity)
+ hits 36284/72568 nti 21 constraint (none) extremes [1, infinity)
     English:
          {...} 
-          (hits 7867/36473) (matched long text) constraint (none) extremes [2, infinity)
+          (hits 7821/36284) (matched long text) constraint (none) extremes [2, infinity)
         {...} 
-          (hits 28606/28606) (matched long text) constraint (none) extremes [1, infinity)
+          (hits 28463/28463) (matched long text) constraint (none) extremes [1, infinity)
 
  nti 22 constraint (none) extremes [1, infinity)
     English:
@@ -4750,23 +4750,23 @@
         {...} 
           constraint (none) extremes [1, infinity)
 
- hits 83808/167616 nti 23 constraint (none) extremes [1, infinity)
+ hits 82877/165754 nti 23 constraint (none) extremes [1, infinity)
     English:
         
{...} - (hits 16123/48040) (matched long text) constraint (none) extremes [2, infinity) + (hits 16066/47391) (matched long text) constraint (none) extremes [2, infinity) {...} - (hits 67685/67685) (matched long text) constraint (none) extremes [1, infinity) + (hits 66811/66811) (matched long text) constraint (none) extremes [1, infinity) nti 24 constraint (none) extremes [2, infinity) English:
{...} constraint (none) extremes [2, infinity) -
internal hits 16572/99654 nti r2 constraint (none) extremes [1, 1] +
internal hits 16517/98332 nti r2 constraint (none) extremes [1, 1] - internal hits 20384/237512 nti r2 constraint (none) extremes [1, 1] + internal hits 20340/236494 nti r2 constraint (none) extremes [1, 1] - internal hits 2021/40684 nti r2 constraint (none) extremes [1, 1] + internal hits 2021/40590 nti r2 constraint (none) extremes [1, 1] nti r2 constraint CS = {r2} extremes [6, 6] English: @@ -4827,10 +4827,10 @@ other than constraint CS = {28} extremes [2, 2] - hits 16/21920 nti 29 constraint DS = {29} extremes [2, infinity) + hits 16/21832 nti 29 constraint DS = {29} extremes [2, infinity) English: not {...} - (hits 16/6087) (matched long text) constraint DS = {29} extremes [2, infinity) + (hits 16/6043) (matched long text) constraint DS = {29} extremes [2, infinity) hits 79/158 nti 30 constraint (none) extremes [1, infinity) English: @@ -4841,16 +4841,16 @@ {...} (hits 79/79) (matched: 'dvd carried by the person asked') constraint (none) extremes [1, infinity) - hits 0/21636 nti 31 constraint DS = {31} extremes [2, infinity) + hits 0/21548 nti 31 constraint DS = {31} extremes [2, infinity) English: no one {***} - (hits 0/6349) constraint DS = {31} extremes [2, infinity) + (hits 0/6333) constraint DS = {31} extremes [2, infinity) internal hits 92/1206 nti 25 constraint (none) extremes [1, 1] internal hits 7/56 nti 26 constraint (none) extremes [1, 1] - internal hits 602/21198 nti 27 constraint (none) extremes [1, 1] + internal hits 284/18534 nti 27 constraint (none) extremes [1, 1] internal nti 28 constraint (none) extremes [1, 1] @@ -4935,22 +4935,22 @@ internal nti 12 constraint DS = {12} extremes [1, infinity) - internal hits 635/16930 nti 13 constraint DS = {13} extremes [1, infinity) + internal hits 635/18736 nti 13 constraint DS = {13} extremes [1, infinity) internal hits 258/8488 nti 14 constraint DS = {14} extremes [1, infinity) - hits 67/4406 nti 13 constraint CS = {13} extremes [1, 1] + hits 67/4448 nti 13 constraint CS = {13} extremes [1, 1] English: always/certainly - (hits 10/1042) (matched: 'always') constraint CS = {13} extremes [1, 1] + (hits 10/1046) (matched: 'always') constraint CS = {13} extremes [1, 1] usually/normally - (hits 53/1032) (matched: 'usually') constraint CS = {13} extremes [1, 1] + (hits 53/1036) (matched: 'usually') constraint CS = {13} extremes [1, 1] rarely/seldom - (hits 0/979) constraint CS = {13} extremes [1, 1] + (hits 0/983) constraint CS = {13} extremes [1, 1] never - (hits 4/979) (matched: 'never') constraint CS = {13} extremes [1, 1] + (hits 4/983) (matched: 'never') constraint CS = {13} extremes [1, 1] initially - (hits 0/975) constraint CS = {13} extremes [1, 1] + (hits 0/979) constraint CS = {13} extremes [1, 1] hits 0/4304 nti 14 constraint DS = {14} extremes [1, infinity) English: @@ -5118,12 +5118,12 @@ (hits 0/981) constraint (none) extremes [1, infinity) - hits 85/1122 nti 29 constraint CS = {29} extremes [1, 1] + hits 83/1118 nti 29 constraint CS = {29} extremes [1, 1] English: thing/something - (hits 85/85) (matched: 'thing') constraint CS = {29} extremes [1, 1] + (hits 83/83) (matched: 'thing') constraint CS = {29} extremes [1, 1] - internal hits 476/23938 nti 24 constraint (none) extremes [1, 1] + internal hits 476/23876 nti 24 constraint (none) extremes [1, 1] hits 0/6 nti 22 constraint CS = {22} extremes [1, 2] English: @@ -5231,17 +5231,17 @@ hits 0/2764 nti 31 constraint DS = {13} extremes [2, infinity) English: {...} - (hits 0/1024) constraint DS = {13} extremes [2, infinity) + (hits 0/1026) constraint DS = {13} extremes [2, infinity) hits 67/2764 nti 6 constraint DS = {13} extremes [2, infinity) English: {...} - (hits 67/1179) (matched: 'usually table of general chitchat') constraint DS = {13} extremes [2, infinity) + (hits 67/1198) (matched: 'usually table of general chitchat') constraint DS = {13} extremes [2, infinity) - hits 691/24988 nti 30 constraint CS = {30} extremes [1, 1] + hits 691/25108 nti 30 constraint CS = {30} extremes [1, 1] English: which/who/that - (hits 691/5787) (matched: 'which') constraint CS = {30} extremes [1, 1] + (hits 691/5816) (matched: 'which') constraint CS = {30} extremes [1, 1] hits 2/2742 nti 7 constraint DS = {30} extremes [2, infinity) English: @@ -5271,7 +5271,7 @@ grammatical case (hits 1/1) (matched: 'grammatical case') constraint CS = {7} extremes [2, 2] - internal hits 2474/41934 nti 8 constraint (none) extremes [0, 0] + internal hits 2474/41942 nti 8 constraint (none) extremes [0, 0] internal hits 164/328 nti 9 constraint (none) extremes [1, infinity) @@ -5297,20 +5297,20 @@ (hits 5/5) (matched: 'value of kind k') constraint (none) extremes [1, infinity) - hits 5777/103758 nti r5 constraint (none) extremes [1, infinity) + hits 5788/103674 nti r5 constraint (none) extremes [1, infinity) English: ( ) - (hits 0/2059) constraint DS = {r5} & CW = {r2, r5} extremes [3, infinity) + (hits 0/2064) constraint DS = {r5} & CW = {r2, r5} extremes [3, infinity) ^ - (hits 1589/11278) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity) + (hits 1589/11280) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity) - (hits 201/9689) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity) + (hits 201/9691) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity) - (hits 3626/9488) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity) + (hits 3637/9490) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity) - (hits 2/16005) (matched: 'object-based rulebook') constraint DS = {r5} extremes [2, infinity) + (hits 2/16092) (matched: 'object-based rulebook') constraint DS = {r5} extremes [2, infinity) - (hits 359/5860) (matched long text) constraint CW = {r2, r5} extremes [1, infinity) + (hits 359/5851) (matched long text) constraint CW = {r2, r5} extremes [1, infinity) hits 40/338 nti 10 constraint (none) extremes [1, infinity) English: @@ -5326,9 +5326,9 @@ of kind (hits 81/315) (matched: 'sayable value of kind k') constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity) - internal hits 3626/18976 nti r5 constraint CW = {r2, r5} extremes [1, infinity) + internal hits 3637/18980 nti r5 constraint CW = {r2, r5} extremes [1, infinity) - hits 2/32010 nti r5 constraint DS = {r5} extremes [2, infinity) + hits 2/32184 nti r5 constraint DS = {r5} extremes [2, infinity) English: indexed text (hits 0/1020) constraint CS = {r5} extremes [2, 2] @@ -5339,17 +5339,17 @@ stored actions (hits 0/1020) constraint CS = {r5} extremes [2, 2] object-based rulebook producing - (hits 0/5032) constraint DS = {r5} extremes [5, infinity) + (hits 0/5097) constraint DS = {r5} extremes [5, infinity) object-based rulebook producing - (hits 0/1073) constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity) + (hits 0/1078) constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity) object-based rulebook (hits 2/1020) (matched: 'object-based rulebook') constraint CS = {r5} extremes [2, 2] action-based rulebook (hits 0/1018) constraint CS = {r5} extremes [2, 2] object-based rule producing - (hits 0/5032) constraint DS = {r5} extremes [5, infinity) + (hits 0/5097) constraint DS = {r5} extremes [5, infinity) object-based rule producing - (hits 0/1073) constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity) + (hits 0/1078) constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity) object-based rule (hits 0/1018) constraint CS = {r5} extremes [2, 2] action-based rule @@ -5357,7 +5357,7 @@ either-or property (hits 0/1018) constraint CS = {r5} extremes [2, 2] - internal hits 359/11720 nti r5 constraint CW = {r2, r5} extremes [1, infinity) + internal hits 359/11702 nti r5 constraint CW = {r2, r5} extremes [1, infinity) hits 150/300 nti r5 constraint (none) extremes [1, infinity) English: @@ -5402,7 +5402,7 @@ (hits 100/224) (matched: 'sayable value') constraint (none) extremes [1, infinity) - internal hits 1589/20082 nti r5 constraint CW = {r2, r5} extremes [1, 1] + internal hits 1589/20086 nti r5 constraint CW = {r2, r5} extremes [1, 1] internal hits 220/1414 nti r5 constraint CW = {r2, r5} extremes [1, 1] @@ -5479,7 +5479,7 @@ (hits 191/3215) (matched long text) constraint DS = {11} extremes [2, infinity) - (hits 8/3827) (matched long text) constraint DS = {12} extremes [3, infinity) + (hits 8/3512) (matched long text) constraint DS = {12} extremes [3, infinity) hits 191/2328 nti 11 constraint DS = {11} extremes [2, infinity) English: @@ -5494,12 +5494,12 @@ section {...} (hits 151/1124) (matched long text) constraint DS = {11} extremes [2, infinity) - hits 8/7654 nti 12 constraint DS = {12} extremes [3, infinity) + hits 8/7024 nti 12 constraint DS = {12} extremes [3, infinity) English: {...} begin/begins here - (hits 4/3827) (matched long text) constraint DS = {12} extremes [3, infinity) + (hits 4/3512) (matched long text) constraint DS = {12} extremes [3, infinity) {...} end/ends here - (hits 4/3823) (matched: 'the standard rules end here') constraint DS = {12} extremes [3, infinity) + (hits 4/3508) (matched: 'the standard rules end here') constraint DS = {12} extremes [3, infinity) hits 32/12958 nti 14 constraint (none) extremes [1, infinity) English: @@ -5508,7 +5508,7 @@ {...} (hits 0/6459) constraint (none) extremes [2, infinity) - (hits 0/6276) constraint DS = {13} extremes [4, infinity) + (hits 0/6302) constraint DS = {13} extremes [4, infinity) * constraint CS = {14} extremes [1, 1] * @@ -5537,12 +5537,12 @@ when {...} (hits 4/1102) (matched: 'when scene begins is a scene based rulebook') constraint DS = {15} extremes [2, infinity) - hits 0/12552 nti 13 constraint DS = {13} extremes [4, infinity) + hits 0/12604 nti 13 constraint DS = {13} extremes [4, infinity) English: include (- {###} in the preform grammar - (hits 0/117) constraint DS = {13} extremes [7, 7] + (hits 0/133) constraint DS = {13} extremes [7, 7] use {...} language element/elements - (hits 0/6276) constraint DS = {13} extremes [4, infinity) + (hits 0/6302) constraint DS = {13} extremes [4, infinity) hits 30/442 nti 21 constraint DS = {21} extremes [2, infinity) English: @@ -6122,7 +6122,7 @@ hits 0/856 nti 13 constraint DS = {13} extremes [3, infinity) English: defined by - (hits 0/204) constraint DS = {13} extremes [3, infinity) + (hits 0/210) constraint DS = {13} extremes [3, infinity) nti 6 constraint (none) extremes [1, infinity) English: @@ -6627,7 +6627,7 @@ hits 0/514 nti 12 constraint DS = {11, 12} extremes [4, infinity) English: {...} ( ) - (hits 0/37) constraint DS = {11, 12} extremes [4, infinity) + (hits 0/34) constraint DS = {11, 12} extremes [4, infinity) nti 11 constraint CS = {11} extremes [1, 1] English: @@ -7011,31 +7011,31 @@ {...} constraint (none) extremes [1, infinity) - hits 2097/23958 nti 12 constraint (none) extremes [1, infinity) + hits 2097/23850 nti 12 constraint (none) extremes [1, infinity) English: (hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1] minus - (hits 0/1887) constraint DS = {12} extremes [2, 2] + (hits 0/1866) constraint DS = {12} extremes [2, 2] ( ) - (hits 273/855) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4] + (hits 273/844) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4] - (hits 1564/5566) (matched: 'Represents geographical locations, both indoor + (hits 1564/5549) (matched: 'Represents geographical locations, both indoor and outdoor, which are not necessarily areas in a building. A player in one room is mostly unable to sense, or interact with, anything in a different room. Rooms are arranged in a map.') constraint (none) extremes [1, 1] - (hits 11/9971) (matched: 'plus infinity') constraint (none) extremes [1, infinity) + (hits 11/9917) (matched: 'plus infinity') constraint (none) extremes [1, infinity) (hits 78/273) (matched: 'false') constraint CS = {6} extremes [1, 1] - (hits 0/3176) constraint DS = {8} extremes [2, infinity) + (hits 0/3142) constraint DS = {8} extremes [2, infinity) unicode - (hits 0/4303) constraint DS = {12} extremes [2, infinity) + (hits 0/4226) constraint DS = {12} extremes [2, infinity) - (hits 0/2184) constraint DW = {9, 10, 11} extremes [2, 5] + (hits 0/2160) constraint DW = {9, 10, 11} extremes [2, 5] - (hits 0/9882) constraint (none) extremes [1, infinity) + (hits 0/9828) constraint (none) extremes [1, infinity) internal hits 680/1360 nti 30 constraint (none) extremes [1, 1] @@ -7048,33 +7048,33 @@ internal nti 31 constraint (none) extremes [1, infinity) - internal hits 0/19764 nti 6 constraint (none) extremes [1, infinity) + internal hits 0/19656 nti 6 constraint (none) extremes [1, infinity) - hits 11/19942 nti 30 constraint (none) extremes [1, infinity) + hits 11/19834 nti 30 constraint (none) extremes [1, infinity) English: _pi (hits 1/126) (matched: 'pi') constraint CS = {30} extremes [1, 1] _e (hits 1/125) (matched: 'e') constraint CS = {30} extremes [1, 1] plus infinity - (hits 4/26) (matched: 'plus infinity') constraint CS = {30} extremes [2, 2] + (hits 4/8) (matched: 'plus infinity') constraint CS = {30} extremes [2, 2] minus infinity - (hits 4/22) (matched: 'minus infinity') constraint CS = {30} extremes [2, 2] + (hits 4/4) (matched: 'minus infinity') constraint CS = {30} extremes [2, 2] - (hits 1/9961) (matched: '0.5') constraint (none) extremes [1, infinity) + (hits 1/9907) (matched: '0.5') constraint (none) extremes [1, infinity) - internal hits 1/19922 nti 7 constraint (none) extremes [1, infinity) + internal hits 1/19814 nti 7 constraint (none) extremes [1, infinity) - hits 0/4368 nti 11 constraint DW = {9, 10, 11} extremes [2, 5] + hits 0/4320 nti 11 constraint DW = {9, 10, 11} extremes [2, 5] English: minus - (hits 0/810) constraint DS = {9, 11} extremes [3, 5] + (hits 0/804) constraint DS = {9, 11} extremes [3, 5] - (hits 0/847) constraint DS = {9} extremes [2, 4] + (hits 0/844) constraint DS = {9} extremes [2, 4] (hits 0/242) constraint DS = {10} extremes [2, 2] - hits 0/1694 nti 9 constraint DS = {9} extremes [2, 4] + hits 0/1688 nti 9 constraint DS = {9} extremes [2, 4] English: hour/hours (hits 0/187) constraint DS = {9} extremes [2, 2] @@ -7121,12 +7121,12 @@ internal nti 12 constraint (none) extremes [1, infinity) - hits 0/6352 nti 8 constraint DS = {8} extremes [2, infinity) + hits 0/6284 nti 8 constraint DS = {8} extremes [2, infinity) English: { } constraint CS = {8} extremes [2, 2] { } - (hits 0/1965) constraint DS = {8} extremes [3, infinity) + (hits 0/1949) constraint DS = {8} extremes [3, infinity) nti 7 constraint (none) extremes [1, infinity) English: @@ -7146,47 +7146,47 @@ internal hits 4/16 nti 15 constraint (none) extremes [1, infinity) - internal hits 3209/8304 nti 16 constraint (none) extremes [1, infinity) + internal hits 3205/8242 nti 16 constraint (none) extremes [1, infinity) internal hits 1093/2190 nti 17 constraint (none) extremes [1, infinity) internal hits 4/8 nti 18 constraint (none) extremes [1, infinity) - internal hits 2037/5442 nti 19 constraint (none) extremes [1, infinity) + internal hits 1964/5234 nti 19 constraint (none) extremes [1, infinity) internal hits 1272/3058 nti 20 constraint (none) extremes [1, infinity) internal hits 529/1072 nti 21 constraint (none) extremes [1, infinity) - hits 320/1942 nti 22 constraint (none) extremes [1, infinity) + hits 243/1734 nti 22 constraint (none) extremes [1, infinity) English: - (hits 264/901) (matched long text) constraint (none) extremes [1, infinity) + (hits 191/797) (matched long text) constraint (none) extremes [1, infinity) - (hits 56/637) (matched long text) constraint (none) extremes [1, infinity) + (hits 52/606) (matched long text) constraint (none) extremes [1, infinity) internal hits 0/244 nti 23 constraint (none) extremes [1, infinity) internal hits 0/244 nti 24 constraint (none) extremes [1, infinity) - hits 2370/20982 nti 20 constraint (none) extremes [1, infinity) + hits 2370/20910 nti 20 constraint (none) extremes [1, infinity) English: - (hits 1797/10491) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint (none) extremes [1, infinity) + (hits 1797/10455) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint (none) extremes [1, infinity) nothing (hits 97/172) (matched: 'nothing') constraint CS = {20} extremes [1, 1] - (hits 449/8597) (matched: 'printing the name of a dark room') constraint (none) extremes [1, infinity) + (hits 449/8561) (matched: 'printing the name of a dark room') constraint (none) extremes [1, infinity) outcome - (hits 0/2947) constraint DS = {20} extremes [2, infinity) + (hits 0/2936) constraint DS = {20} extremes [2, infinity) option - (hits 26/2947) (matched: 'serial comma option') constraint DS = {20} extremes [2, infinity) + (hits 26/2936) (matched: 'serial comma option') constraint DS = {20} extremes [2, infinity) verb - (hits 1/2921) (matched: 'verb are') constraint DS = {20} extremes [2, infinity) + (hits 1/2910) (matched: 'verb are') constraint DS = {20} extremes [2, infinity) response ( ) - (hits 0/753) constraint DS = {20} extremes [5, infinity) + (hits 0/754) constraint DS = {20} extremes [5, infinity) - internal hits 449/17194 nti 25 constraint (none) extremes [1, infinity) + internal hits 449/17122 nti 25 constraint (none) extremes [1, infinity) internal hits 0/244 nti 26 constraint (none) extremes [1, infinity) @@ -7196,7 +7196,7 @@ internal nti 29 constraint (none) extremes [1, infinity) - internal hits 165/18614 nti 30 constraint (none) extremes [1, infinity) + internal hits 165/18578 nti 30 constraint (none) extremes [1, infinity) hits 34/1592 nti 31 constraint DS = {20} extremes [2, infinity) English: @@ -7205,115 +7205,115 @@ (hits 0/168) constraint DS = {20} extremes [2, infinity) - internal hits 796/21456 nti 6 constraint (none) extremes [1, infinity) + internal hits 796/21420 nti 6 constraint (none) extremes [1, infinity) - hits 651/21906 nti 7 constraint (none) extremes [1, infinity) + hits 651/21870 nti 7 constraint (none) extremes [1, infinity) English: - (hits 651/10953) (matched: 'unmarked for listing') constraint (none) extremes [1, infinity) + (hits 651/10935) (matched: 'unmarked for listing') constraint (none) extremes [1, infinity) - hits 1442/27654 nti 22 constraint (none) extremes [1, infinity) + hits 1442/27542 nti 22 constraint (none) extremes [1, infinity) English: not - (hits 0/2595) constraint DS = {22} extremes [3, infinity) + (hits 0/2598) constraint DS = {22} extremes [3, infinity) - (hits 0/6947) constraint (none) extremes [2, infinity) + (hits 0/6944) constraint (none) extremes [2, infinity) - (hits 1442/13827) (matched: 'marked for listing other') constraint (none) extremes [1, infinity) + (hits 1442/13771) (matched: 'marked for listing other') constraint (none) extremes [1, infinity) - hits 1513/29884 nti 21 constraint (none) extremes [1, infinity) + hits 1513/29772 nti 21 constraint (none) extremes [1, infinity) English: not - (hits 12/5026) (matched: 'not lockable') constraint DS = {21} extremes [2, infinity) + (hits 12/5024) (matched: 'not lockable') constraint DS = {21} extremes [2, infinity) - (hits 1430/2255) (matched: 'unmarked for listing') constraint CS = {r3} extremes [1, infinity) + (hits 1430/2252) (matched: 'unmarked for listing') constraint CS = {r3} extremes [1, infinity) not - (hits 0/3128) constraint DS = {21} extremes [3, infinity) + (hits 0/3132) constraint DS = {21} extremes [3, infinity) - (hits 71/7274) (matched: 'marked for listing other') constraint (none) extremes [2, infinity) + (hits 71/7271) (matched: 'marked for listing other') constraint (none) extremes [2, infinity) - internal hits 2217/19112 nti r3 constraint CS = {r3} extremes [1, infinity) + internal hits 2217/19100 nti r3 constraint CS = {r3} extremes [1, infinity) - hits 3653/90530 nti 8 constraint (none) extremes [1, infinity) + hits 3634/90368 nti 8 constraint (none) extremes [1, infinity) English: - (hits 2593/45265) (matched: 'value of kind k') constraint (none) extremes [1, infinity) + (hits 2599/45184) (matched: 'value of kind k') constraint (none) extremes [1, infinity) - (hits 1060/2059) (matched: 'the alfred cralle pool hall') constraint CW = {r2, r4} extremes [1, infinity) + (hits 1035/2038) (matched: 'the alfred cralle pool hall') constraint CW = {r2, r4} extremes [1, infinity) - hits 4/752 nti 9 constraint (none) extremes [1, infinity) + hits 8/864 nti 9 constraint (none) extremes [1, infinity) English: - (hits 4/376) (matched: 'person') constraint (none) extremes [1, infinity) + (hits 8/432) (matched: 'person') constraint (none) extremes [1, infinity) - hits 133/7796 nti 10 constraint CW = {r2, r4} extremes [1, infinity) + hits 133/7892 nti 10 constraint CW = {r2, r4} extremes [1, infinity) English: (hits 133/332) (matched: 'alfred cralle pool hall') constraint CW = {r2, r4} extremes [1, infinity) - hits 768/5204 nti 11 constraint (none) extremes [1, infinity) + hits 768/5176 nti 11 constraint (none) extremes [1, infinity) English: - (hits 768/2602) (matched: 'marked for listing other') constraint (none) extremes [1, infinity) + (hits 768/2588) (matched: 'marked for listing other') constraint (none) extremes [1, infinity) - hits 1652/38916 nti 12 constraint (none) extremes [1, infinity) + hits 1652/38810 nti 12 constraint (none) extremes [1, infinity) English: - (hits 1392/19458) (matched long text) constraint (none) extremes [1, infinity) + (hits 1392/19405) (matched long text) constraint (none) extremes [1, infinity) - (hits 260/4843) (matched long text) constraint (none) extremes [3, infinity) + (hits 260/4823) (matched long text) constraint (none) extremes [3, infinity) - hits 257/2144 nti 13 constraint (none) extremes [1, infinity) + hits 256/2108 nti 13 constraint (none) extremes [1, infinity) English: - (hits 257/1072) (matched: 'thing ( called the item being printed )') constraint (none) extremes [1, infinity) + (hits 256/1054) (matched: 'thing ( called the item being printed )') constraint (none) extremes [1, infinity) - hits 1649/41060 nti 23 constraint (none) extremes [1, infinity) + hits 1648/40918 nti 23 constraint (none) extremes [1, infinity) English: ( called ) - (hits 118/1426) (matched long text) constraint DS = {23} extremes [5, infinity) + (hits 118/1428) (matched long text) constraint DS = {23} extremes [5, infinity) - (hits 1531/20412) (matched: 'the alfred cralle pool hall') constraint (none) extremes [1, infinity) + (hits 1530/20341) (matched: 'the alfred cralle pool hall') constraint (none) extremes [1, infinity) - hits 1649/41060 nti 14 constraint (none) extremes [1, infinity) + hits 1648/40930 nti 14 constraint (none) extremes [1, infinity) English: - (hits 51/10665) (matched: 'at least two stamped envelopes') constraint (none) extremes [2, infinity) + (hits 51/10621) (matched: 'at least two stamped envelopes') constraint (none) extremes [2, infinity) - (hits 156/20479) (matched: 'something') constraint (none) extremes [1, infinity) + (hits 156/20414) (matched: 'something') constraint (none) extremes [1, infinity) - (hits 22/10614) (matched: 'something switched on') constraint (none) extremes [2, infinity) + (hits 22/10570) (matched: 'something switched on') constraint (none) extremes [2, infinity) - (hits 2/10592) (matched: 'the person') constraint (none) extremes [2, infinity) + (hits 2/10548) (matched: 'the person') constraint (none) extremes [2, infinity) ^ ^ - (hits 0/10590) constraint (none) extremes [2, infinity) + (hits 0/10546) constraint (none) extremes [2, infinity) - (hits 56/10590) (matched: 'the alfred cralle pool hall') constraint (none) extremes [2, infinity) + (hits 56/10546) (matched: 'the alfred cralle pool hall') constraint (none) extremes [2, infinity) - (hits 617/10534) (matched: 'a marked for listing person') constraint (none) extremes [2, infinity) + (hits 617/10490) (matched: 'a marked for listing person') constraint (none) extremes [2, infinity) - (hits 745/19626) (matched: 'marked for listing other people') constraint (none) extremes [1, infinity) + (hits 744/19561) (matched: 'marked for listing other people') constraint (none) extremes [1, infinity) - hits 1413/41026 nti 15 constraint (none) extremes [1, infinity) + hits 1412/40896 nti 15 constraint (none) extremes [1, infinity) English: - (hits 1029/20513) (matched: 'nancy johnson memorial square') constraint (none) extremes [1, infinity) + (hits 1028/20448) (matched: 'nancy johnson memorial square') constraint (none) extremes [1, infinity) - (hits 384/10236) (matched: 'marked for listing other people') constraint (none) extremes [2, infinity) + (hits 384/10192) (matched: 'marked for listing other people') constraint (none) extremes [2, infinity) - hits 2/284 nti 16 constraint (none) extremes [1, infinity) + hits 2/300 nti 16 constraint (none) extremes [1, infinity) English: - (hits 2/142) (matched: 'person') constraint (none) extremes [1, infinity) + (hits 2/150) (matched: 'person') constraint (none) extremes [1, infinity) - (hits 0/103) constraint (none) extremes [2, infinity) + (hits 0/111) constraint (none) extremes [2, infinity) - hits 56/7178 nti 17 constraint (none) extremes [1, infinity) + hits 56/7194 nti 17 constraint (none) extremes [1, infinity) English: (hits 56/129) (matched: 'alfred cralle pool hall') constraint CW = {r2, r4} extremes [1, infinity) - (hits 0/1422) constraint (none) extremes [2, infinity) + (hits 0/1430) constraint (none) extremes [2, infinity) internal hits 4743/9700 nti 18 constraint (none) extremes [0, 0] @@ -7366,38 +7366,38 @@ {...} (hits 35/35) (matched: 'random bystander') constraint (none) extremes [1, infinity) - internal hits 79/21636 nti 23 constraint (none) extremes [1, infinity) + internal hits 79/21548 nti 23 constraint (none) extremes [1, infinity) - internal hits 336/63004 nti 24 constraint (none) extremes [1, infinity) + internal hits 288/62786 nti 24 constraint (none) extremes [1, infinity) - hits 1949/4874 nti 25 constraint (none) extremes [1, infinity) + hits 1949/4838 nti 25 constraint (none) extremes [1, infinity) English:
- (hits 118/411) (matched long text) constraint (none) extremes [2, infinity) + (hits 119/399) (matched long text) constraint (none) extremes [2, infinity) - (hits 1831/2319) (matched long text) constraint (none) extremes [1, infinity) + (hits 1830/2300) (matched long text) constraint (none) extremes [1, infinity) - hits 3127/7822 nti 31 constraint (none) extremes [1, infinity) + hits 3127/7788 nti 31 constraint (none) extremes [1, infinity) English: variable/variables - (hits 2/464) (matched: 'text variables') constraint DS = {31} extremes [2, infinity) + (hits 2/459) (matched: 'text variables') constraint DS = {31} extremes [2, infinity) that/which vary/varies - (hits 59/376) (matched: 'action name based rule producing nothing that varies') constraint DS = {31} extremes [3, infinity) + (hits 59/371) (matched: 'action name based rule producing nothing that varies') constraint DS = {31} extremes [3, infinity) - (hits 2442/3850) (matched long text) constraint (none) extremes [1, infinity) + (hits 2443/3833) (matched long text) constraint (none) extremes [1, infinity) - (hits 221/1408) (matched: 'Represents geographical locations, both indoor + (hits 221/1390) (matched: 'Represents geographical locations, both indoor and outdoor, which are not necessarily areas in a building. A player in one room is mostly unable to sense, or interact with, anything in a different room. Rooms are arranged in a map.') constraint (none) extremes [1, infinity) - (hits 116/1187) (matched: 'for deciding whether all includes rules') constraint (none) extremes [1, infinity) + (hits 116/1169) (matched: 'for deciding whether all includes rules') constraint (none) extremes [1, infinity) - (hits 257/1071) (matched: 'thing ( called the item being printed )') constraint (none) extremes [1, infinity) + (hits 256/1053) (matched: 'thing ( called the item being printed )') constraint (none) extremes [1, infinity) - (hits 3/814) (matched: 'smelling') constraint (none) extremes [1, infinity) + (hits 3/797) (matched: 'smelling') constraint (none) extremes [1, infinity) - (hits 27/811) (matched long text) constraint (none) extremes [1, infinity) + (hits 27/794) (matched long text) constraint (none) extremes [1, infinity) hits 1252/3018 nti 26 constraint (none) extremes [1, infinity) English: @@ -7435,40 +7435,40 @@ (hits 0/1) constraint (none) extremes [1, infinity) - internal hits 8/18468 nti 29 constraint (none) extremes [0, 0] + internal hits 8/18432 nti 29 constraint (none) extremes [0, 0] - internal hits 2/9392 nti 30 constraint (none) extremes [0, 0] + internal hits 2/9366 nti 30 constraint (none) extremes [0, 0] - internal hits 9/18576 nti 31 constraint (none) extremes [0, 0] + internal hits 9/18540 nti 31 constraint (none) extremes [0, 0] - internal hits 0/18576 nti 6 constraint (none) extremes [0, 0] + internal hits 0/18540 nti 6 constraint (none) extremes [0, 0] - hits 8451/18864 nti 27 constraint (none) extremes [1, infinity) + hits 8451/18828 nti 27 constraint (none) extremes [1, infinity) English: ( ) (hits 0/1769) constraint DS = {27} extremes [3, infinity) - (hits 144/9432) (matched: 'the person reaching') constraint (none) extremes [1, infinity) + (hits 144/9414) (matched: 'the person reaching') constraint (none) extremes [1, infinity) - (hits 0/9288) constraint (none) extremes [1, infinity) + (hits 0/9270) constraint (none) extremes [1, infinity) - (hits 0/9288) constraint (none) extremes [1, infinity) + (hits 0/9270) constraint (none) extremes [1, infinity) - (hits 54/9288) (matched: 'abs function') constraint (none) extremes [1, infinity) + (hits 54/9270) (matched: 'abs function') constraint (none) extremes [1, infinity) - (hits 0/9234) constraint (none) extremes [1, infinity) - - (hits 18/9234) (matched: 'fixed in place') constraint (none) extremes [1, infinity) - (hits 0/9216) constraint (none) extremes [1, infinity) + + (hits 18/9216) (matched: 'fixed in place') constraint (none) extremes [1, infinity) + + (hits 0/9198) constraint (none) extremes [1, infinity) - (hits 20/9216) (matched: 'the remainder after dividing it by 2') constraint (none) extremes [1, infinity) + (hits 20/9198) (matched: 'the remainder after dividing it by 2') constraint (none) extremes [1, infinity) - (hits 9/9196) (matched: 'active') constraint (none) extremes [1, infinity) + (hits 9/9178) (matched: 'active') constraint (none) extremes [1, infinity) - (hits 116/9187) (matched: 'a supporter ( called the chaise )') constraint (none) extremes [1, infinity) + (hits 116/9169) (matched: 'a supporter ( called the chaise )') constraint (none) extremes [1, infinity) - (hits 0/1344) constraint DS = {26} extremes [2, infinity) + (hits 0/1338) constraint DS = {26} extremes [2, infinity) member/members of (hits 0/1743) constraint DS = {27} extremes [3, infinity) member/members of @@ -7476,35 +7476,35 @@ of (hits 2/1743) (matched: 'the destination of the player') constraint DS = {27} extremes [3, infinity) - (hits 0/4696) constraint (none) extremes [2, infinity) + (hits 0/4683) constraint (none) extremes [2, infinity) entry of/in/from (hits 0/1212) constraint DS = {27} extremes [4, infinity) - (hits 0/9069) constraint (none) extremes [1, infinity) + (hits 0/9051) constraint (none) extremes [1, infinity) - (hits 0/9069) constraint (none) extremes [1, infinity) + (hits 0/9051) constraint (none) extremes [1, infinity) - (hits 0/9069) constraint (none) extremes [1, infinity) + (hits 0/9051) constraint (none) extremes [1, infinity) - hits 4/18468 nti 25 constraint (none) extremes [1, infinity) + hits 4/18432 nti 25 constraint (none) extremes [1, infinity) English: where - (hits 4/2111) (matched long text) constraint DS = {25} extremes [3, infinity) + (hits 4/2104) (matched long text) constraint DS = {25} extremes [3, infinity) where - (hits 0/2107) constraint DS = {25} extremes [3, infinity) + (hits 0/2100) constraint DS = {25} extremes [3, infinity) - (hits 0/9230) constraint (none) extremes [1, infinity) + (hits 0/9212) constraint (none) extremes [1, infinity) - hits 5811/24150 nti 7 constraint (none) extremes [1, infinity) + hits 5811/24116 nti 7 constraint (none) extremes [1, infinity) English: - (hits 1637/6162) (matched: 'the room back the other way') constraint (none) extremes [2, infinity) + (hits 1637/6150) (matched: 'the room back the other way') constraint (none) extremes [2, infinity) - (hits 1066/10438) (matched: 'room back the other way') constraint (none) extremes [1, infinity) + (hits 1066/10421) (matched: 'room back the other way') constraint (none) extremes [1, infinity) - (hits 897/9372) (matched: 'within the player's sight') constraint (none) extremes [1, infinity) + (hits 897/9355) (matched: 'within the player's sight') constraint (none) extremes [1, infinity) - (hits 2211/8475) (matched: 'current item from the multiple object list') constraint (none) extremes [1, infinity) + (hits 2211/8458) (matched: 'current item from the multiple object list') constraint (none) extremes [1, infinity) nti 6 constraint (none) extremes [1, infinity) English: @@ -7520,31 +7520,31 @@ (hits 173/565) (matched: 'the second noun') constraint (none) extremes [1, infinity) - internal hits 1161/27698 nti 9 constraint (none) extremes [1, infinity) + internal hits 1137/27374 nti 9 constraint (none) extremes [1, infinity) - internal hits 897/18744 nti 10 constraint (none) extremes [1, infinity) + internal hits 897/18710 nti 10 constraint (none) extremes [1, infinity) - internal hits 2313/20016 nti 11 constraint (none) extremes [1, infinity) + internal hits 2296/19740 nti 11 constraint (none) extremes [1, infinity) - hits 105/18432 nti 7 constraint DS = {7} extremes [3, infinity) + hits 105/18396 nti 7 constraint DS = {7} extremes [3, infinity) English: of {...} - (hits 105/1361) (matched long text) constraint DS = {7} extremes [3, infinity) + (hits 105/1355) (matched long text) constraint DS = {7} extremes [3, infinity) - internal hits 493/18432 nti 12 constraint (none) extremes [1, infinity) + internal hits 493/18396 nti 12 constraint (none) extremes [1, infinity) - internal hits 477/18138 nti 13 constraint (none) extremes [1, infinity) + internal hits 477/18102 nti 13 constraint (none) extremes [1, infinity) - hits 139/2688 nti 26 constraint DS = {26} extremes [2, infinity) + hits 139/2676 nti 26 constraint DS = {26} extremes [2, infinity) English: entry - (hits 135/1344) (matched: 'a final response rule entry') constraint DS = {26} extremes [2, infinity) + (hits 135/1338) (matched: 'a final response rule entry') constraint DS = {26} extremes [2, infinity) in row of - (hits 0/364) constraint DS = {26} extremes [6, infinity) + (hits 0/365) constraint DS = {26} extremes [6, infinity) listed in (hits 2/1079) (matched: 'a topic listed in source') constraint DS = {26} extremes [4, infinity) corresponding to of in - (hits 0/182) constraint DS = {26} extremes [8, infinity) + (hits 0/183) constraint DS = {26} extremes [8, infinity) of in (hits 2/574) (matched long text) constraint DS = {26} extremes [5, infinity) @@ -7574,30 +7574,30 @@ to constraint DS = {29} extremes [3, infinity) - hits 260/10026 nti 17 constraint (none) extremes [3, infinity) + hits 260/9986 nti 17 constraint (none) extremes [3, infinity) English: - (hits 169/4128) (matched long text) constraint DS = {13} extremes [3, infinity) + (hits 169/4212) (matched long text) constraint DS = {13} extremes [3, infinity) - (hits 91/2741) (matched long text) constraint DS = {30} extremes [4, infinity) + (hits 91/2742) (matched long text) constraint DS = {30} extremes [4, infinity) - hits 448/30386 nti 28 constraint DS = {13} extremes [2, infinity) + hits 448/30990 nti 28 constraint DS = {13} extremes [2, infinity) English: - (hits 447/8439) (matched long text) constraint DS = {13} extremes [2, infinity) + (hits 447/9342) (matched long text) constraint DS = {13} extremes [2, infinity) not - (hits 1/5552) (matched: 'not carried by the person asked') constraint DS = {13, 28} extremes [3, infinity) + (hits 1/6264) (matched: 'not carried by the person asked') constraint DS = {13, 28} extremes [3, infinity) - hits 183/23574 nti 18 constraint DS = {30} extremes [3, infinity) + hits 183/23620 nti 18 constraint DS = {30} extremes [3, infinity) English: - (hits 0/2218) constraint DS = {29, 30} extremes [5, infinity) + (hits 0/2237) constraint DS = {29, 30} extremes [5, infinity) - (hits 32/3708) (matched long text) constraint DS = {14, 30} extremes [4, infinity) + (hits 32/3728) (matched long text) constraint DS = {14, 30} extremes [4, infinity) - (hits 151/5746) (matched: 'which provide the property initial appearance') constraint DS = {30} extremes [3, infinity) + (hits 151/5767) (matched: 'which provide the property initial appearance') constraint DS = {30} extremes [3, infinity) - internal hits 791/18374 nti 19 constraint (none) extremes [1, infinity) + internal hits 791/18338 nti 19 constraint (none) extremes [1, infinity) internal hits 1217/34624 nti 20 constraint (none) extremes [0, 0] @@ -7667,7 +7667,7 @@ (hits 0/1091) constraint DS = {11} extremes [3, infinity) - (hits 0/882) constraint DS = {12} extremes [4, infinity) + (hits 0/880) constraint DS = {12} extremes [4, infinity) (hits 28/1373) (matched long text) constraint (none) extremes [1, infinity) @@ -7743,7 +7743,7 @@ internal hits 2388/4776 nti 29 constraint (none) extremes [1, infinity) - internal hits 1193/4954 nti r4 constraint CW = {r2, r4} extremes [1, infinity) + internal hits 1168/4912 nti r4 constraint CW = {r2, r4} extremes [1, infinity) internal hits 4/252 nti 30 constraint (none) extremes [1, infinity) @@ -8014,7 +8014,7 @@ ( future action ) (hits 4/22) (matched long text) constraint DS = {12} extremes [5, infinity) ( {...} ) - (hits 0/28) constraint DS = {12} extremes [4, infinity) + (hits 0/23) constraint DS = {12} extremes [4, infinity) (hits 31/31) (matched: 'printing a refusal to act in the dark') constraint (none) extremes [1, infinity) @@ -8700,7 +8700,7 @@ story description (hits 1/3) (matched: 'story description') constraint CS = {13} extremes [2, 2] story creation year - (hits 1/1) (matched: 'story creation year') constraint CS = {13} extremes [3, 3] + (hits 1/2) (matched: 'story creation year') constraint CS = {13} extremes [3, 3] release number (hits 1/2) (matched: 'release number') constraint CS = {13} extremes [2, 2] @@ -8789,26 +8789,26 @@ matching key (hits 1/1) (matched: 'matching key') constraint CS = {18} extremes [2, 2] - hits 336/61800 nti 19 constraint DS = {19} extremes [1, infinity) + hits 288/61582 nti 19 constraint DS = {19} extremes [1, infinity) English: _something/anything {***} - (hits 255/13957) (matched long text) constraint DS = {19} extremes [1, infinity) + (hits 207/13869) (matched long text) constraint DS = {19} extremes [1, infinity) _somewhere/anywhere {***} - (hits 0/13702) constraint DS = {19} extremes [1, infinity) + (hits 0/13662) constraint DS = {19} extremes [1, infinity) _someone/anyone/somebody/anybody {***} - (hits 57/13702) (matched: 'someone') constraint DS = {19} extremes [1, infinity) + (hits 57/13662) (matched: 'someone') constraint DS = {19} extremes [1, infinity) _everything {***} - (hits 0/13645) constraint DS = {19} extremes [1, infinity) + (hits 0/13605) constraint DS = {19} extremes [1, infinity) _everywhere {***} - (hits 0/13645) constraint DS = {19} extremes [1, infinity) + (hits 0/13605) constraint DS = {19} extremes [1, infinity) _everyone/everybody {***} - (hits 0/13645) constraint DS = {19} extremes [1, infinity) + (hits 0/13605) constraint DS = {19} extremes [1, infinity) _nowhere {***} - (hits 24/13645) (matched: 'nowhere') constraint DS = {19} extremes [1, infinity) + (hits 24/13605) (matched: 'nowhere') constraint DS = {19} extremes [1, infinity) _nobody/no-one {***} - (hits 0/13621) constraint DS = {19} extremes [1, infinity) + (hits 0/13581) constraint DS = {19} extremes [1, infinity) _no _one {***} - (hits 0/13448) constraint DS = {19} extremes [2, infinity) + (hits 0/13408) constraint DS = {19} extremes [2, infinity) hits 0/2166 nti 20 constraint CS = {20} extremes [1, 1] English: @@ -9150,20 +9150,20 @@ {...} to (hits 378/378) (matched: 'giving it to') constraint DS = {26} extremes [2, infinity) - hits 1321/3214 nti 30 constraint (none) extremes [1, infinity) + hits 595/1406 nti 30 constraint (none) extremes [1, infinity) English: doing something/anything other than - (hits 0/270) constraint DS = {30} extremes [5, infinity) + (hits 0/98) constraint DS = {30} extremes [5, infinity) doing something/anything except - (hits 0/368) constraint DS = {30} extremes [4, infinity) + (hits 0/134) constraint DS = {30} extremes [4, infinity) doing something/anything to/with - (hits 0/368) constraint DS = {30} extremes [4, infinity) + (hits 0/134) constraint DS = {30} extremes [4, infinity) doing something/anything constraint CS = {30} extremes [2, 2] doing something/anything {...} - (hits 0/664) constraint DS = {30} extremes [3, infinity) + (hits 0/276) constraint DS = {30} extremes [3, infinity) - (hits 1321/1607) (matched long text) constraint (none) extremes [1, infinity) + (hits 595/703) (matched long text) constraint (none) extremes [1, infinity) nti 29 constraint (none) extremes [1, infinity) English: @@ -9181,19 +9181,19 @@ {...} constraint (none) extremes [1, infinity) - hits 471/942 nti 30 constraint (none) extremes [1, infinity) + hits 186/372 nti 30 constraint (none) extremes [1, infinity) English: - (hits 0/339) constraint (none) extremes [2, infinity) + (hits 0/135) constraint (none) extremes [2, infinity) - (hits 471/471) (matched long text) constraint (none) extremes [1, infinity) + (hits 186/186) (matched long text) constraint (none) extremes [1, infinity) - hits 471/942 nti 31 constraint (none) extremes [1, infinity) + hits 186/372 nti 31 constraint (none) extremes [1, infinity) English: {...} - (hits 471/471) (matched long text) constraint (none) extremes [1, infinity) + (hits 186/186) (matched long text) constraint (none) extremes [1, infinity) - internal hits 12/8636 nti 6 constraint (none) extremes [1, infinity) + internal hits 0/3202 nti 6 constraint (none) extremes [1, infinity) nti 31 constraint DS = {31} extremes [2, infinity) English: @@ -9202,94 +9202,94 @@ in {...} constraint DS = {31} extremes [2, infinity) - hits 12/6166 nti 6 constraint DS = {6} extremes [2, infinity) + nti 6 constraint DS = {6} extremes [2, infinity) English: fixed in place {***} - (hits 0/973) constraint DS = {6} extremes [3, infinity) + constraint DS = {6} extremes [3, infinity) is/are/was/were/been/listed in {***} - (hits 0/1264) constraint DS = {6} extremes [2, infinity) + constraint DS = {6} extremes [2, infinity) in {...} - (hits 12/1264) (matched: 'in the public library') constraint DS = {6} extremes [2, infinity) + constraint DS = {6} extremes [2, infinity) internal nti 7 constraint (none) extremes [0, 0] - hits 1321/3214 nti 8 constraint (none) extremes [1, infinity) + hits 595/1406 nti 8 constraint (none) extremes [1, infinity) English: - (hits 0/256) constraint DS = {27} extremes [3, infinity) + (hits 0/102) constraint DS = {27} extremes [3, infinity) - (hits 1321/1607) (matched long text) constraint (none) extremes [1, infinity) + (hits 595/703) (matched long text) constraint (none) extremes [1, infinity) - hits 0/2820 nti 27 constraint DS = {27} extremes [2, infinity) + hits 0/1076 nti 27 constraint DS = {27} extremes [2, infinity) English: , _or - (hits 0/725) constraint DS = {27} extremes [3, infinity) + (hits 0/276) constraint DS = {27} extremes [3, infinity) _,/or - (hits 0/854) constraint DS = {27} extremes [2, infinity) + (hits 0/332) constraint DS = {27} extremes [2, infinity) - hits 1321/3214 nti 9 constraint (none) extremes [1, infinity) + hits 595/1406 nti 9 constraint (none) extremes [1, infinity) English: - (hits 0/1607) constraint (none) extremes [1, infinity) + (hits 0/703) constraint (none) extremes [1, infinity) - (hits 0/1607) constraint (none) extremes [1, infinity) + (hits 0/703) constraint (none) extremes [1, infinity) - (hits 0/1053) constraint (none) extremes [2, infinity) + (hits 0/446) constraint (none) extremes [2, infinity) - (hits 1321/1607) (matched long text) constraint (none) extremes [1, infinity) + (hits 595/703) (matched long text) constraint (none) extremes [1, infinity) - internal hits 0/3214 nti 10 constraint (none) extremes [1, infinity) + internal hits 0/1406 nti 10 constraint (none) extremes [1, infinity) - internal hits 1321/3214 nti 11 constraint (none) extremes [1, infinity) + internal hits 595/1406 nti 11 constraint (none) extremes [1, infinity) - hits 6/530 nti 7 constraint CS = {7} extremes [1, 1] + hits 7/676 nti 7 constraint CS = {7} extremes [1, 1] English: is - (hits 6/120) (matched: 'is') constraint CS = {7} extremes [1, 1] + (hits 7/143) (matched: 'is') constraint CS = {7} extremes [1, 1] not - (hits 0/114) constraint CS = {7} extremes [1, 1] + (hits 0/136) constraint CS = {7} extremes [1, 1] - hits 0/518 nti 8 constraint (none) extremes [2, infinity) + hits 0/662 nti 8 constraint (none) extremes [2, infinity) English: _in _the _presence _of {...} - (hits 0/59) constraint DS = {8} extremes [5, infinity) + (hits 0/80) constraint DS = {8} extremes [5, infinity) _in {...} - (hits 0/175) constraint DS = {8} extremes [2, infinity) + (hits 0/222) constraint DS = {8} extremes [2, infinity) {...} - (hits 0/259) constraint (none) extremes [2, infinity) + (hits 0/331) constraint (none) extremes [2, infinity) - internal hits 0/518 nti 12 constraint (none) extremes [1, infinity) + internal hits 0/662 nti 12 constraint (none) extremes [1, infinity) hits 1/180 nti 9 constraint CS = {9} extremes [1, 1] English: going (hits 1/13) (matched: 'going') constraint CS = {9} extremes [1, 1] - hits 0/34 nti 10 constraint CS = {10} extremes [1, 1] + hits 0/16 nti 10 constraint CS = {10} extremes [1, 1] English: nowhere - (hits 0/6) constraint CS = {10} extremes [1, 1] + (hits 0/3) constraint CS = {10} extremes [1, 1] somewhere - (hits 0/6) constraint CS = {10} extremes [1, 1] + (hits 0/3) constraint CS = {10} extremes [1, 1] - internal hits 1261/31740 nti 13 constraint (none) extremes [0, 0] + internal hits 1197/31612 nti 13 constraint (none) extremes [0, 0] - internal hits 1568/3136 nti 14 constraint (none) extremes [0, 0] + internal hits 1278/2556 nti 14 constraint (none) extremes [0, 0] - hits 420/1568 nti 15 constraint (none) extremes [1, infinity) + hits 302/1278 nti 15 constraint (none) extremes [1, infinity) English: ^ - (hits 0/784) constraint (none) extremes [1, infinity) + (hits 0/639) constraint (none) extremes [1, infinity) ^ - (hits 0/784) constraint (none) extremes [1, infinity) + (hits 0/639) constraint (none) extremes [1, infinity) - (hits 49/784) (matched: 'the current working sack') constraint (none) extremes [1, infinity) + (hits 25/639) (matched: 'the current working sack') constraint (none) extremes [1, infinity) - (hits 59/735) (matched: 'the second noun') constraint (none) extremes [1, infinity) + (hits 42/614) (matched: 'the second noun') constraint (none) extremes [1, infinity) - (hits 312/676) (matched long text) constraint (none) extremes [1, infinity) + (hits 235/572) (matched long text) constraint (none) extremes [1, infinity) - internal hits 3/20060 nti 16 constraint (none) extremes [1, infinity) + internal hits 3/19990 nti 16 constraint (none) extremes [1, infinity) hits 28/2746 nti 17 constraint (none) extremes [1, infinity) English: @@ -9306,46 +9306,46 @@ (hits 0/1091) constraint DS = {11} extremes [3, infinity) - hits 0/1764 nti 20 constraint DS = {12} extremes [4, infinity) + hits 0/1760 nti 20 constraint DS = {12} extremes [4, infinity) English: - (hits 0/882) constraint DS = {12} extremes [4, infinity) + (hits 0/880) constraint DS = {12} extremes [4, infinity) - hits 556/21408 nti 7 constraint (none) extremes [1, infinity) + hits 556/21338 nti 7 constraint (none) extremes [1, infinity) English: asking to try - (hits 0/1022) constraint DS = {7} extremes [5, infinity) + (hits 0/1023) constraint DS = {7} extremes [5, infinity) trying - (hits 23/2495) (matched long text) constraint DS = {7} extremes [3, infinity) + (hits 23/2484) (matched long text) constraint DS = {7} extremes [3, infinity) an actor trying - (hits 0/1825) constraint DS = {7} extremes [4, infinity) + (hits 0/1826) constraint DS = {7} extremes [4, infinity) an actor - (hits 408/2472) (matched long text) constraint DS = {7} extremes [3, infinity) + (hits 408/2461) (matched long text) constraint DS = {7} extremes [3, infinity) trying - (hits 0/3414) constraint DS = {7} extremes [2, infinity) + (hits 0/3391) constraint DS = {7} extremes [2, infinity) - (hits 60/10273) (matched long text) constraint (none) extremes [1, infinity) + (hits 60/10238) (matched long text) constraint (none) extremes [1, infinity) - (hits 65/5450) (matched long text) constraint (none) extremes [2, infinity) + (hits 65/5425) (matched long text) constraint (none) extremes [2, infinity) hits 28/2746 nti 13 constraint (none) extremes [1, infinity) English: we are asking to try (hits 0/231) constraint DS = {13} extremes [7, infinity) asking to try - (hits 0/593) constraint DS = {13} extremes [5, infinity) + (hits 0/595) constraint DS = {13} extremes [5, infinity) trying - (hits 0/945) constraint DS = {13} extremes [3, infinity) + (hits 0/947) constraint DS = {13} extremes [3, infinity) an actor trying - (hits 0/930) constraint DS = {13} extremes [4, infinity) + (hits 0/932) constraint DS = {13} extremes [4, infinity) an actor - (hits 3/945) (matched: 'an actor smelling') constraint DS = {13} extremes [3, infinity) + (hits 3/947) (matched: 'an actor smelling') constraint DS = {13} extremes [3, infinity) we are trying - (hits 0/930) constraint DS = {13} extremes [4, infinity) + (hits 0/932) constraint DS = {13} extremes [4, infinity) trying - (hits 0/948) constraint DS = {13} extremes [2, infinity) + (hits 0/950) constraint DS = {13} extremes [2, infinity) we are - (hits 0/942) constraint DS = {13} extremes [3, infinity) + (hits 0/944) constraint DS = {13} extremes [3, infinity) (hits 25/1370) (matched long text) constraint (none) extremes [1, infinity) @@ -9389,24 +9389,24 @@ we have (hits 0/1091) constraint DS = {11} extremes [3, infinity) - hits 0/1764 nti 12 constraint DS = {12} extremes [4, infinity) + hits 0/1760 nti 12 constraint DS = {12} extremes [4, infinity) English: we have not asked to try (hits 0/136) constraint DS = {12} extremes [8, infinity) has not tried - (hits 0/539) constraint DS = {12} extremes [5, infinity) + (hits 0/537) constraint DS = {12} extremes [5, infinity) an actor has not tried (hits 0/342) constraint DS = {12} extremes [6, infinity) an actor has not - (hits 0/539) constraint DS = {12} extremes [5, infinity) + (hits 0/537) constraint DS = {12} extremes [5, infinity) we have not tried - (hits 0/539) constraint DS = {12} extremes [5, infinity) + (hits 0/537) constraint DS = {12} extremes [5, infinity) we have not - (hits 0/882) constraint DS = {12} extremes [4, infinity) + (hits 0/880) constraint DS = {12} extremes [4, infinity) - internal hits 94/13140 nti 21 constraint (none) extremes [1, infinity) + internal hits 94/13090 nti 21 constraint (none) extremes [1, infinity) - internal hits 584/24342 nti 22 constraint (none) extremes [1, infinity) + internal hits 584/24272 nti 22 constraint (none) extremes [1, infinity) internal nti 23 constraint (none) extremes [1, infinity) @@ -9415,45 +9415,45 @@ doing it constraint CS = {11} extremes [2, 2] - hits 584/1390 nti 13 constraint (none) extremes [1, infinity) + hits 584/1390 nti 12 constraint (none) extremes [1, infinity) English: when/while - (hits 11/326) (matched long text) constraint DS = {13} extremes [3, infinity) + (hits 11/323) (matched long text) constraint DS = {12} extremes [3, infinity) (hits 573/684) (matched long text) constraint (none) extremes [1, infinity) {...} when/while - (hits 0/84) constraint DS = {13} extremes [3, infinity) + (hits 0/84) constraint DS = {12} extremes [3, infinity) {...} when/while {...} - (hits 0/84) constraint DS = {13} extremes [3, infinity) + (hits 0/84) constraint DS = {12} extremes [3, infinity) internal hits 19/38 nti 24 constraint (none) extremes [1, infinity) - hits 584/1406 nti 12 constraint (none) extremes [1, infinity) + nti 13 constraint (none) extremes [0, infinity) English: in the presence of - (hits 1/52) (matched long text) constraint DS = {12} extremes [6, infinity) + constraint DS = {13} extremes [5, infinity) - (hits 583/702) (matched long text) constraint (none) extremes [1, infinity) + constraint (none) extremes [0, 0] - internal hits 584/1406 nti 25 constraint (none) extremes [1, infinity) + internal hits 584/1406 nti 25 constraint (none) extremes [1, infinity) - hits 391/848 nti 14 constraint (none) extremes [1, infinity) + hits 202/416 nti 14 constraint (none) extremes [1, infinity) English: something/anything - (hits 156/157) (matched: 'something') constraint CS = {14} extremes [1, 1] + (hits 79/79) (matched: 'something') constraint CS = {14} extremes [1, 1] something/anything else - (hits 0/8) constraint CS = {14} extremes [2, 2] + (hits 0/1) constraint CS = {14} extremes [2, 2] - (hits 235/268) (matched long text) constraint (none) extremes [1, infinity) + (hits 123/129) (matched long text) constraint (none) extremes [1, infinity) - hits 8/16 nti 15 constraint CS = {15} extremes [1, 1] + hits 5/10 nti 15 constraint CS = {15} extremes [1, 1] English: something/anything - (hits 6/8) (matched: 'something') constraint CS = {15} extremes [1, 1] + (hits 4/5) (matched: 'something') constraint CS = {15} extremes [1, 1] it - (hits 2/2) (matched: 'it') constraint CS = {15} extremes [1, 1] + (hits 1/1) (matched: 'it') constraint CS = {15} extremes [1, 1] - internal hits 0/5210 nti 26 constraint (none) extremes [1, infinity) + internal hits 0/4000 nti 26 constraint (none) extremes [1, infinity) hits 21/186 nti 16 constraint DS = {16} extremes [1, infinity) English: @@ -9783,18 +9783,18 @@ (hits 0/509) constraint (none) extremes [2, infinity) text - (hits 0/319) constraint DS = {13, 14} extremes [3, infinity) + (hits 0/339) constraint DS = {13, 14} extremes [3, infinity) binary - (hits 0/319) constraint DS = {13, 14} extremes [3, infinity) + (hits 0/339) constraint DS = {13, 14} extremes [3, infinity) - (hits 0/431) constraint DS = {13} extremes [2, infinity) + (hits 0/451) constraint DS = {13} extremes [2, infinity) - hits 0/862 nti 13 constraint DS = {13} extremes [2, infinity) + hits 0/902 nti 13 constraint DS = {13} extremes [2, infinity) English: {file ...} ( owned by ) (hits 0/77) constraint DS = {13} extremes [7, infinity) {file ...} - (hits 0/431) constraint DS = {13} extremes [2, infinity) + (hits 0/451) constraint DS = {13} extremes [2, infinity) nti 12 constraint (none) extremes [1, infinity) English: @@ -9832,9 +9832,9 @@ hits 447/2552 nti 16 constraint DS = {13, 16} extremes [6, infinity) English: {...} ( ) - (hits 424/885) (matched long text) constraint DS = {13, 16} extremes [6, infinity) + (hits 424/889) (matched long text) constraint DS = {13, 16} extremes [6, infinity) {...} -- -- - (hits 23/461) (matched long text) constraint DS = {13, 16} extremes [6, infinity) + (hits 23/465) (matched long text) constraint DS = {13, 16} extremes [6, infinity) hits 480/1188 nti 13 constraint DS = {13} extremes [3, 3] English: @@ -9960,3 +9960,5 @@ nti 22 constraint (none) extremes [0, 0] + nti 23 constraint (none) extremes [0, 0] + diff --git a/inform7/Figures/memory-diagnostics.txt b/inform7/Figures/memory-diagnostics.txt index e6cafbad4..6c053f69b 100644 --- a/inform7/Figures/memory-diagnostics.txt +++ b/inform7/Figures/memory-diagnostics.txt @@ -1,17 +1,17 @@ -Total memory consumption was 260175K = 254 MB +Total memory consumption was 259375K = 253 MB -62.7% was used for 1348015 objects, in 279852 frames in 204 x 800K = 163200K = 159 MB: +62.6% was used for 1340427 objects, in 278953 frames in 203 x 800K = 162400K = 158 MB: 9.7% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes - 5.4% text_stream_array 2595 x 100 = 259500 objects, 14615040 bytes - 3.9% parse_node 131134 objects, 10490720 bytes + 5.5% text_stream_array 2595 x 100 = 259500 objects, 14615040 bytes + 3.9% parse_node 130245 objects, 10419600 bytes 2.7% verb_conjugation 160 objects, 7425280 bytes - 2.6% parse_node_annotation_array 434 x 500 = 217000 objects, 6957888 bytes + 2.6% parse_node_annotation_array 432 x 500 = 216000 objects, 6925824 bytes 2.4% linked_list 11782 objects, 6597920 bytes 2.3% inter_symbol_array 70 x 1024 = 71680 objects, 6310080 bytes - 1.2% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes + 1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes 1.1% map_data 670 objects, 3178480 bytes - 0.9% kind_array 66 x 1000 = 66000 objects, 2642112 bytes + 0.9% kind_array 65 x 1000 = 65000 objects, 2602080 bytes 0.7% inter_schema_token 13492 objects, 1942848 bytes 0.6% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes 0.5% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes @@ -39,14 +39,14 @@ Total memory consumption was 260175K = 254 MB 0.1% scan_directory 70 objects, 288960 bytes 0.1% noun 2379 objects, 285480 bytes ---- inference_subject 665 objects, 260680 bytes - ---- anl_entry_array 4 x 1000 = 4000 objects, 224128 bytes ---- inter_annotation_array 1 x 8192 objects, 196640 bytes ---- linguistic_stock_item 3315 objects, 159120 bytes ---- binary_predicate 321 objects, 156648 bytes ---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes ---- index_lexicon_entry 395 objects, 142200 bytes - ---- nonterminal 767 objects, 141128 bytes + ---- nonterminal 768 objects, 141312 bytes ---- documentation_ref 1275 objects, 112200 bytes + ---- anl_entry_array 2 x 1000 = 2000 objects, 112064 bytes ---- inference 1703 objects, 108992 bytes ---- hierarchy_location 730 objects, 105120 bytes ---- noun_usage 2401 objects, 96040 bytes @@ -55,7 +55,6 @@ Total memory consumption was 260175K = 254 MB ---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes ---- kind_variable_declaration 1652 objects, 79296 bytes ---- inter_tree 6 objects, 78624 bytes - ---- ap_clause_array 3 x 400 = 1200 objects, 76896 bytes ---- inter_schema 1509 objects, 72432 bytes ---- rulebook 407 objects, 71632 bytes ---- spatial_data 670 objects, 64320 bytes @@ -66,22 +65,22 @@ Total memory consumption was 260175K = 254 MB ---- ph_stack_frame_box 577 objects, 55392 bytes ---- kind_constructor 77 objects, 54824 bytes ---- property_inference_data 1315 objects, 52600 bytes + ---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes ---- text_substitution 436 objects, 48832 bytes ---- grammar_line 230 objects, 46000 bytes ---- table 7 objects, 45528 bytes ---- inter_node_list 750 objects, 42000 bytes - ---- action_pattern_array 10 x 100 = 1000 objects, 40320 bytes - ---- anl_clause_text_array 1 x 1000 objects, 40032 bytes ---- activity_list_array 1 x 1000 objects, 40032 bytes + ---- anl_clause_text_array 1 x 1000 objects, 40032 bytes ---- response_message 407 objects, 35816 bytes ---- production_list 623 objects, 34888 bytes ---- regions_data 670 objects, 32160 bytes - ---- action_name_list_array 2 x 1000 = 2000 objects, 32064 bytes ---- HTML_tag_array 1 x 1000 objects, 32032 bytes ---- property_permission 96 objects, 30720 bytes ---- verb_sense 403 objects, 29016 bytes ---- stacked_variable_owner_array 6 x 100 = 600 objects, 28992 bytes ---- heading 198 objects, 28512 bytes + ---- action_pattern_array 7 x 100 = 700 objects, 28224 bytes ---- counting_data 670 objects, 26800 bytes ---- parsing_data 670 objects, 21440 bytes ---- bp_runtime_implementation 321 objects, 20544 bytes @@ -92,6 +91,7 @@ Total memory consumption was 260175K = 254 MB ---- action_name 90 objects, 18000 bytes ---- parse_node_tree 20 objects, 17280 bytes ---- match_avinue_array 1 x 1000 objects, 16032 bytes + ---- action_name_list_array 1 x 1000 objects, 16032 bytes ---- linked_list_item_array 1 x 1000 objects, 16032 bytes ---- to_phrase_request 59 objects, 15576 bytes ---- method 323 objects, 15504 bytes @@ -124,8 +124,8 @@ Total memory consumption was 260175K = 254 MB ---- inbuild_copy 35 objects, 3640 bytes ---- command_line_switch 43 objects, 3440 bytes ---- property_setting_bp_data 84 objects, 3360 bytes - ---- instance_usage_array 1 x 200 objects, 3232 bytes ---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes + ---- instance_usage_array 1 x 200 objects, 3232 bytes ---- method_set 100 objects, 3200 bytes ---- definition 44 objects, 3168 bytes ---- compatibility_specification 66 objects, 3168 bytes @@ -134,8 +134,8 @@ Total memory consumption was 260175K = 254 MB ---- either_or_property_data 62 objects, 2976 bytes ---- submodule_request 72 objects, 2880 bytes ---- inter_construct 32 objects, 2560 bytes - ---- parentage_inference_data 79 objects, 2528 bytes ---- part_of_inference_data 79 objects, 2528 bytes + ---- parentage_inference_data 79 objects, 2528 bytes ---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes ---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes ---- equation_symbol 30 objects, 2400 bytes @@ -229,9 +229,9 @@ Total memory consumption was 260175K = 254 MB ---- loop_over_scope 1 object, 40 bytes ---- parse_name_notice 1 object, 40 bytes -37.2% was used for memory not allocated for objects: +37.3% was used for memory not allocated for objects: - 15.8% text stream storage 42247328 bytes in 265813 claims + 15.9% text stream storage 42247328 bytes in 265813 claims 3.4% dictionary storage 9278976 bytes in 16372 claims ---- sorting 1056 bytes in 3 claims 2.7% source text 7200000 bytes in 3 claims @@ -247,5 +247,5 @@ Total memory consumption was 260175K = 254 MB ---- emitter array storage 12320 bytes in 8 claims ---- code generation workspace for objects 9200 bytes in 9 claims -20.3% was overhead - 54243912 bytes = 52972K = 51 MB +20.2% was overhead - 53869600 bytes = 52607K = 51 MB diff --git a/inform7/Figures/preform-summary.txt b/inform7/Figures/preform-summary.txt index a0da251e1..8951f288a 100644 --- a/inform7/Figures/preform-summary.txt +++ b/inform7/Figures/preform-summary.txt @@ -1,25 +1,25 @@ - hits 2097/23958 nti 12 constraint (none) extremes [1, infinity) + hits 2097/23850 nti 12 constraint (none) extremes [1, infinity) English: (@1)=1 (hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1] (@1)minus (@2)=1 - (hits 0/1887) constraint DS = {12} extremes [2, 2] + (hits 0/1866) constraint DS = {12} extremes [2, 2] (@1)=1 (@2)( (@3)=2 (@4)) - (hits 273/855) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4] + (hits 273/844) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4] (@1)=1 - (hits 1564/5566) (matched: 'Represents geographical locations, both indoor + (hits 1564/5549) (matched: 'Represents geographical locations, both indoor and outdoor, which are not necessarily areas in a building. A player in one room is mostly unable to sense, or interact with, anything in a different room. Rooms are arranged in a map.') constraint (none) extremes [1, 1] =1 - (hits 11/9971) (matched: 'plus infinity') constraint (none) extremes [1, infinity) + (hits 11/9917) (matched: 'plus infinity') constraint (none) extremes [1, infinity) (@1)=1 (hits 78/273) (matched: 'false') constraint CS = {6} extremes [1, 1] =1 - (hits 0/3176) constraint DS = {8} extremes [2, infinity) + (hits 0/3142) constraint DS = {8} extremes [2, infinity) (@1)unicode =1 - (hits 0/4303) constraint DS = {12} extremes [2, infinity) + (hits 0/4226) constraint DS = {12} extremes [2, infinity) =1 - (hits 0/2184) constraint DW = {9, 10, 11} extremes [2, 5] + (hits 0/2160) constraint DW = {9, 10, 11} extremes [2, 5] =1 - (hits 0/9882) constraint (none) extremes [1, infinity) + (hits 0/9828) constraint (none) extremes [1, infinity) diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt index 5a2a79a90..dbf2dcc92 100644 --- a/inform7/Figures/timings-diagnostics.txt +++ b/inform7/Figures/timings-diagnostics.txt @@ -1,29 +1,29 @@ 100.0% in inform7 run - 67.3% in compilation to Inter - 26.3% in //Phrases::Manager::compile_first_block// + 67.0% in compilation to Inter + 25.7% in //Phrases::Manager::compile_first_block// 8.4% in //Phrases::Manager::compile_as_needed// - 7.0% in //Strings::compile_responses// - 6.1% in //InferenceSubjects::emit_all// + 6.9% in //Strings::compile_responses// + 6.2% in //InferenceSubjects::emit_all// 4.2% in //MajorNodes::pre_pass// 3.3% in //MajorNodes::pass_1// 1.9% in //Phrases::Manager::RulePrintingRule_routine// 1.9% in //Phrases::Manager::rulebooks_array// 1.0% in //RTVerbs::ConjugateVerb// 0.8% in //Phrases::Manager::traverse// - 0.7% in //Phrases::Manager::parse_rule_parameters// + 0.5% in //Phrases::Manager::compile_rulebooks// 0.5% in //World::stage_V// 0.3% in //MajorNodes::pass_2// - 0.3% in //Phrases::Manager::compile_rulebooks// + 0.3% in //Phrases::Manager::parse_rule_parameters// 0.3% in //RTRelations::compile_defined_relations// 0.1% in //PL::Parsing::Verbs::compile_all// 0.1% in //RTKinds::compile_data_type_support_routines// 0.1% in //Task::make_built_in_kind_constructors// 0.1% in //World::stages_II_and_III// - 2.9% not specifically accounted for - 30.3% in running Inter pipeline - 9.8% in inter step 2/12: link - 9.5% in step preparation - 7.2% in inter step 12/12: generate inform6 -> auto.inf + 3.2% not specifically accounted for + 30.5% in running Inter pipeline + 9.8% in step preparation + 9.6% in inter step 2/12: link + 7.1% in inter step 12/12: generate inform6 -> auto.inf 0.3% in inter step 9/12: make-identifiers-unique 0.1% in inter step 10/12: reconcile-verbs 0.1% in inter step 11/12: eliminate-redundant-labels @@ -31,6 +31,6 @@ 0.1% in inter step 6/12: assimilate 0.1% in inter step 7/12: resolve-external-symbols 0.1% in inter step 8/12: inspect-plugs - 2.3% not specifically accounted for + 2.5% not specifically accounted for 1.9% in supervisor 0.4% not specifically accounted for diff --git a/inform7/Tests/Groups/actions.testgroup b/inform7/Tests/Groups/actions.testgroup index 8ea282b6e..f2e28819c 100644 --- a/inform7/Tests/Groups/actions.testgroup +++ b/inform7/Tests/Groups/actions.testgroup @@ -1,22 +1,23 @@ ActionPatternParsing -NPCAsking APRegionAdaptation -Locks -TinyForest C12RuleSorting1 C12RuleSorting2 C12RuleSorting3 C12RuleSorting4 C12RuleSorting5 -StoredActionsWithValues -RelDynamicPointer -ConstantStoredActionsWithTopics -InheritedStoredActions -TableDefinedSAs -ForLengthsOfTime C9ScenesPastTenseActions CHS +ConstantStoredActionsWithTopics +DoingSomethingIn +ForLengthsOfTime +InheritedStoredActions +Locks +NPCAsking RegionBoundary +RelDynamicPointer +StoredActionsWithValues +TableDefinedSAs +TinyForest PM_ActionBothValues PM_ActionVarAnd PM_ActionVarOverspecific diff --git a/inform7/Tests/Test Cases/ActionPatternParsing.txt b/inform7/Tests/Test Cases/ActionPatternParsing.txt index d8e1e8fad..510382651 100644 --- a/inform7/Tests/Test Cases/ActionPatternParsing.txt +++ b/inform7/Tests/Test Cases/ActionPatternParsing.txt @@ -50,6 +50,8 @@ Test pattern (internal) with list looking or taking inventory in the Laboratory Test pattern (internal) with list looking or taking inventory in the presence of Hans in the Laboratory. Test pattern (internal) with list looking in in in in in in in in in in in in in in in in in in in in. Test pattern (internal) with list going from the Laboratory to the Castle. +Test pattern (internal) with list listening. +Test pattern (internal) with list listening in the presence of Hans. Test pattern (internal) with list gluttony. Test pattern (internal) with list gluttony in the Laboratory. diff --git a/inform7/Tests/Test Cases/DoingSomethingIn.txt b/inform7/Tests/Test Cases/DoingSomethingIn.txt new file mode 100644 index 000000000..b89479d68 --- /dev/null +++ b/inform7/Tests/Test Cases/DoingSomethingIn.txt @@ -0,0 +1,16 @@ +Place is a room. + +The radio is here. The radio is a device. + +Hans is a man in the Place. + +Instead of listening in the presence of the radio: say "Ugh." + +Before doing something in the Place: + say "Sure..."; + continue the action. + +Before asking someone to try doing something in the presence of a person: + say "Nope." + +Test me with "listen / hans, take radio". diff --git a/inform7/Tests/Test Cases/_Results_Ideal/ActionPatternParsing.txt b/inform7/Tests/Test Cases/_Results_Ideal/ActionPatternParsing.txt index dd4aa6e6f..fce4a1cba 100644 --- a/inform7/Tests/Test Cases/_Results_Ideal/ActionPatternParsing.txt +++ b/inform7/Tests/Test Cases/_Results_Ideal/ActionPatternParsing.txt @@ -139,26 +139,37 @@ (4). +0 : going [noun: from the laboratory to the castle] - 33. list gluttony + 33. list listening + Action name list for: listening + (1). +0 : listening to + + + 34. list listening in the presence of Hans + Action name list for: listening in the presence of hans + (1). +0 : listening to [in: the presence of hans] [in-presence: hans] + (2). +0 : listening to [in-presence: hans] + + + 35. list gluttony Action name list for: gluttony (1). +0 : gluttony - 34. list gluttony in the Laboratory + 36. list gluttony in the Laboratory Action name list for: gluttony in the laboratory (1). +0 : gluttony [in: the laboratory] - 35. experimental looking + 37. experimental looking experimental looking: - 36. experimental taking inventory + 38. experimental taking inventory experimental taking inventory: - 37. experimental looking in the Laboratory + 39. experimental looking in the Laboratory experimental looking in the laboratory: - 38. experimental gluttony in the Laboratory + 40. experimental gluttony in the Laboratory experimental gluttony in the laboratory: > > Radiation Laboratory diff --git a/inform7/Tests/Test Cases/_Results_Ideal/DoingSomethingIn.txt b/inform7/Tests/Test Cases/_Results_Ideal/DoingSomethingIn.txt new file mode 100644 index 000000000..b3ad4ee54 --- /dev/null +++ b/inform7/Tests/Test Cases/_Results_Ideal/DoingSomethingIn.txt @@ -0,0 +1,24 @@ + Place + Welcome + An Interactive Fiction + Release 1 / Serial number 160428 / Inform 7 build 9Z99 (I6/v6.34) SD + + Sure... + + Place + You can see a radio and Hans here. + +> > Place + (Testing.) + + >[1] listen + Sure... + + Ugh. + + >[2] hans, take radio + Nope. + + Hans has better things to do. + +> > \ No newline at end of file diff --git a/inform7/Tests/Test Problems/PM_NontextualUnderstandInAP.txt b/inform7/Tests/Test Problems/PM_NontextualUnderstandInAP.txt deleted file mode 100644 index 96fa99a92..000000000 --- a/inform7/Tests/Test Problems/PM_NontextualUnderstandInAP.txt +++ /dev/null @@ -1,8 +0,0 @@ -Place is a room. - -Bob is a man in Place. - -The player carries a ball. - -Instead of asking Bob about the "ball" (this is the Bob recognizes rule): - say "'Looks like a basketball.'" diff --git a/inform7/Tests/Test Problems/_Results_Ideal/PM_APWithImmiscible.txt b/inform7/Tests/Test Problems/_Results_Ideal/PM_APWithImmiscible.txt index 84d1f2650..e92d01e27 100644 --- a/inform7/Tests/Test Problems/_Results_Ideal/PM_APWithImmiscible.txt +++ b/inform7/Tests/Test Problems/_Results_Ideal/PM_APWithImmiscible.txt @@ -1,27 +1,30 @@ -Inform 7 build 6L28 has started. +Inform 7 v10.1.0 has started. I've now read your source text, which is 179 words long. -I've also read Standard Rules by Graham Nelson, which is 42597 words long. -I've also read English Language by Graham Nelson, which is 2288 words long. -Problem__ PM_APWithImmiscible +I've also read Basic Inform by Graham Nelson, which is 7687 words long. +I've also read English Language by Graham Nelson, which is 2328 words long. +I've also read Standard Rules by Graham Nelson, which is 32067 words long. +Problem__ PM_APWithDisjunction >--> You wrote 'Instead of dropping the CD or inserting the CD into the jewel - box' (source text, line 5), which seems to introduce a rule taking effect - only 'dropping the CD or inserting the CD into the jewel box'. But this is - a combination of actions which cannot be mixed. The only alternatives where - 'or' is allowed are cases where a choice of actions is given but applying - to the same objects in each case. (So 'taking or dropping the CD' is - allowed, but 'dropping the CD or inserting the CD into the jewel box' is - not, because the alternatives there would make different use of objects - from each other.) -Problem__ PM_APWithImmiscible + box' (source text, line 5), which seems to introduce a rule, but the + circumstances ('dropping the CD or inserting the CD into the jewel box') + seem to be too general for me to understand in a single rule. I can + understand a choice of of actions, in a list such as 'taking or dropping + the ball', but there can only be one set of noun(s) supplied. So 'taking + the ball or taking the bat' is disallowed. You can get around this by using + named actions ('Taking the ball is being mischievous. Taking the bat is + being mischievous. Instead of being mischievous...'), or it may be less + bother just to write more than one rule. +Problem__ PM_APWithDisjunction >--> You wrote 'Instead of inserting the CD into the jewel box or dropping - the CD' (source text, line 8), which seems to introduce a rule taking - effect only 'inserting the CD into the jewel box or dropping the CD'. But - this is a combination of actions which cannot be mixed. The only - alternatives where 'or' is allowed are cases where a choice of actions is - given but applying to the same objects in each case. (So 'taking or - dropping the CD' is allowed, but 'dropping the CD or inserting the CD into - the jewel box' is not, because the alternatives there would make different - use of objects from each other.) + the CD' (source text, line 8), which seems to introduce a rule, but the + circumstances ('inserting the CD into the jewel box or dropping the CD') + seem to be too general for me to understand in a single rule. I can + understand a choice of of actions, in a list such as 'taking or dropping + the ball', but there can only be one set of noun(s) supplied. So 'taking + the ball or taking the bat' is disallowed. You can get around this by using + named actions ('Taking the ball is being mischievous. Taking the bat is + being mischievous. Instead of being mischievous...'), or it may be less + bother just to write more than one rule. Problem__ PM_APWithImmiscible >--> You wrote 'Instead of inserting the CD into the jewel box or looking' (source text, line 11), which seems to introduce a rule taking effect only @@ -79,4 +82,4 @@ Problem__ PM_APWithImmiscible dropping the CD' is allowed, but 'dropping the CD or inserting the CD into the jewel box' is not, because the alternatives there would make different use of objects from each other.) -Inform 7 has finished: 22 centiseconds used. +Inform 7 has finished. diff --git a/inform7/Tests/Test Problems/_Results_Ideal/PM_GoingWithoutObject.txt b/inform7/Tests/Test Problems/_Results_Ideal/PM_GoingWithoutObject.txt index 996d545eb..183995e23 100644 --- a/inform7/Tests/Test Problems/_Results_Ideal/PM_GoingWithoutObject.txt +++ b/inform7/Tests/Test Problems/_Results_Ideal/PM_GoingWithoutObject.txt @@ -7,4 +7,9 @@ Problem__ PM_GoingWithoutObject >--> In the sentence 'Before going to 10' (source text, line 3), '10' seems to be intended as something the player might be going to, but it doesn't make sense in that context. +Problem__ PM_APUnknown + >--> You wrote 'Before going to 10' (source text, line 3), which seems to + introduce a rule taking effect only if the action is 'going to 10'. But + that did not make sense as a description of an action. I am unable to place + this rule into any rulebook. Inform 7 has finished. diff --git a/inform7/Tests/Test Problems/_Results_Ideal/PM_NontextualUnderstandInAP.txt b/inform7/Tests/Test Problems/_Results_Ideal/PM_NontextualUnderstandInAP.txt deleted file mode 100644 index d1dba42d6..000000000 --- a/inform7/Tests/Test Problems/_Results_Ideal/PM_NontextualUnderstandInAP.txt +++ /dev/null @@ -1,9 +0,0 @@ -Inform 7 build 6M38 has started. -I've now read your source text, which is 33 words long. -I've also read Standard Rules by Graham Nelson, which is 42506 words long. -I've also read English Language by Graham Nelson, which is 2288 words long. -Problem__ PM_NontextualUnderstandInAP - >--> You wrote 'Instead of asking Bob about the "ball" (this is the Bob - recognizes rule)' (source text, line 7): but the topic here should be in - the form of a textual description, as in 'asking about "[something]"'. -Inform 7 has finished: 72 centiseconds used. diff --git a/inform7/if-module/Chapter 4/Action Name Lists.w b/inform7/if-module/Chapter 4/Action Name Lists.w index 737c745ce..1dfb391aa 100644 --- a/inform7/if-module/Chapter 4/Action Name Lists.w +++ b/inform7/if-module/Chapter 4/Action Name Lists.w @@ -622,6 +622,7 @@ The test group |:anl| is helpful in catching errors here. int anl_parsing_tense = IS_TENSE; int experimental_anl_system = FALSE; action_name_list *ActionNameLists::parse(wording W, int tense, int *sense) { + experimental_anl_system = TRUE; if (Wordings::mismatched_brackets(W)) return NULL; int t = anl_parsing_tense; anl_parsing_tense = tense; @@ -640,9 +641,9 @@ action_name_list *ActionNameLists::parse(wording W, int tense, int *sense) { ::= doing something/anything other than | ==> { FALSE, RP[1] } doing something/anything except | ==> { FALSE, RP[1] } - doing something/anything to/with | ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) } + doing something/anything to/with | ==> @ doing something/anything | ==> @ - doing something/anything ... | ==> { fail } + doing something/anything {...} | ==> { -, - }; wording TW = WR[1]; @ ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) } ::= @@ -654,10 +655,21 @@ action_name_list *ActionNameLists::parse(wording W, int tense, int *sense) { ... to/with ... | ==> { fail } ... +@ = + anl_entry *results = RP[1]; + @; + ==> { TRUE, ActionNameLists::new_list(results, ANL_POSITIVE) } + @ = anl_entry *entry = ActionNameLists::new_entry_at(W); ==> { TRUE, ActionNameLists::new_list(entry, ANL_POSITIVE) }; +@ = + anl_entry *results = ActionNameLists::new_entry_at(W); + ActionNameLists::set_clause_wording(results, TAIL_AP_CLAUSE, TW); + @; + ==> { TRUE, ActionNameLists::new_list(results, ANL_POSITIVE) }; + @ = anl_entry *entry = RP[1]; if ((entry == NULL) || @@ -665,7 +677,9 @@ action_name_list *ActionNameLists::parse(wording W, int tense, int *sense) { ==> { fail production }; } ActionNameLists::add_parameter(entry, GET_RW(, 1)); - ==> { FALSE, ActionNameLists::new_list(entry, ANL_NEGATED_ITEMWISE) }; + anl_entry *results = entry; + @; + ==> { FALSE, ActionNameLists::new_list(results, ANL_NEGATED_ITEMWISE) }; @ The trickiest form is: @@ -814,6 +828,7 @@ end, but it's syntactically valid.) LOOP_OVER(an, action_name) { @; wording RW = EMPTY_WORDING; + int abbreviated_to_tail = FALSE; @; @; NoMatch: ; @@ -835,9 +850,15 @@ inelegant, but there's no elegant way to break out of nested loops in C. int it_optional = ActionNameNames::it_optional(an); int abbreviable = ActionNameNames::abbreviable(an); wording XW = ActionNameNames::tensed(an, anl_parsing_tense); - int w_m = Wordings::first_wn(W), x_m = Wordings::first_wn(XW); + int w_m = Wordings::first_wn(W), x_m = Wordings::first_wn(XW), n = 0; while ((w_m <= Wordings::last_wn(W)) && (x_m <= Wordings::last_wn(XW))) { - if (Lexer::word(x_m++) != Lexer::word(w_m++)) goto NoMatch; + if (Lexer::word(x_m++) != Lexer::word(w_m++)) { + if ((abbreviable) && (it_optional) && (n >= 1)) { + x_ended = TRUE; abbreviated_to_tail = TRUE; x_m--; w_m--; + } else goto NoMatch; + break; + } + n++; if (x_m > Wordings::last_wn(XW)) { x_ended = TRUE; break; } if ((Wordings::one_word(x_m))) { if (w_m > Wordings::last_wn(W)) x_ended = TRUE; else { @@ -868,9 +889,10 @@ inelegant, but there's no elegant way to break out of nested loops in C. @; } else { if (experimental_anl_system) { - if (ActionSemantics::can_have_noun(an)) { - if (ActionNameLists::parse_to_tail(trial_entry, RW)) + if ((ActionSemantics::can_have_noun(an)) && (abbreviated_to_tail == FALSE)) { + if (ActionNameLists::parse_to_tail(trial_entry, RW)) { @; + } } else { ActionNameLists::set_clause_wording(trial_entry, TAIL_AP_CLAUSE, RW); @; diff --git a/inform7/if-module/Chapter 4/Parse Action Patterns.w b/inform7/if-module/Chapter 4/Parse Action Patterns.w index 75b4b4955..506e3a45f 100644 --- a/inform7/if-module/Chapter 4/Parse Action Patterns.w +++ b/inform7/if-module/Chapter 4/Parse Action Patterns.w @@ -444,7 +444,7 @@ to enable Inform to set up a stack frame if there isn't one already, and so on. A quick one: the optional "in the presence of". = - ::= + ::= in the presence of | ==> { 0, RP[1] }; APClauses::set_spec(RP[1], IN_THE_PRESENCE_OF_AP_CLAUSE, RP[2]); ==> { 0, RP[1] }; @@ -453,7 +453,7 @@ Much of the complexity is gone now, but much potential ambiguity remains, and so what's left can't very efficiently be written in Preform. = - internal { + internal { if (Wordings::mismatched_brackets(W)) { ==> { fail nonterminal }; } if (parse_action_pattern_mode & SCANNING_ANL_ONLY) { action_name_list *list = ActionNameLists::parse(W, prevailing_ap_tense, NULL); @@ -465,8 +465,8 @@ so what's left can't very efficiently be written in Preform. } else { LOGIF(ACTION_PATTERN_PARSING, "Parsing action pattern: %W\n", W); LOG_INDENT; - action_pattern *ap1 = ParseClauses::parse(W); - LOGIF(ACTION_PATTERN_PARSING, "Method 1 on %W gives $A\n", W, ap1); +// action_pattern *ap1 = ParseClauses::parse(W); +// LOGIF(ACTION_PATTERN_PARSING, "Method 1 on %W gives $A\n", W, ap1); action_pattern *ap2 = ParseClauses::experiment(W); LOGIF(ACTION_PATTERN_PARSING, "Method 2 on %W gives $A\n", W, ap2); /* if ((ap1) && (ap2 == NULL)) { diff --git a/inform7/if-module/Chapter 4/Parse Clauses.w b/inform7/if-module/Chapter 4/Parse Clauses.w index 45ef3e9de..2bd6d4992 100644 --- a/inform7/if-module/Chapter 4/Parse Clauses.w +++ b/inform7/if-module/Chapter 4/Parse Clauses.w @@ -615,7 +615,7 @@ action_pattern *ParseClauses::experiment(wording W) { LOGIF(ACTION_PATTERN_PARSING, "Writing clause %d '%W'\n", c->clause_ID, c->clause_text); if (c->stv_to_match) APClauses::set_action_variable_spec(ap, c->stv_to_match, c->evaluation); else APClauses::set_spec(ap, c->clause_ID, c->evaluation); - Going::new_clause(ap, APClauses::clause(ap, c->clause_ID)); +// Going::new_clause(ap, APClauses::clause(ap, c->clause_ID)); } return ap; } diff --git a/inform7/if-module/Chapter 5/Traverse for Grammar.w b/inform7/if-module/Chapter 5/Traverse for Grammar.w index e176b90d8..70b349473 100644 --- a/inform7/if-module/Chapter 5/Traverse for Grammar.w +++ b/inform7/if-module/Chapter 5/Traverse for Grammar.w @@ -613,7 +613,7 @@ void PL::Parsing::understand_block(wording W, understanding_reference *ur, wordi "text", "such as \"eternity\" or \"peruvian skies\"."); else if (TEST_COMPILATION_MODE(SPECIFICATIONS_CMODE)) - StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NontextualUnderstandInAP), + StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible), "the topic here should be in the form of a textual description", "as in 'asking about \"[something]\"'."); else diff --git a/services/lexicon-module/Figures/excerpts-diagnostics.txt b/services/lexicon-module/Figures/excerpts-diagnostics.txt index c5ae1ea7c..cf8751bc1 100644 --- a/services/lexicon-module/Figures/excerpts-diagnostics.txt +++ b/services/lexicon-module/Figures/excerpts-diagnostics.txt @@ -1,15 +1,15 @@ Size of lexicon: 3098 excerpt meanings - Stored among 840 words out of total vocabulary of 10569 + Stored among 840 words out of total vocabulary of 10570 710 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: 107235 - of which unsuccessful: 89577 - of which successful: 17658 +Number of attempts to retrieve: 106268 + of which unsuccessful: 88665 + of which successful: 17603 -Total attempts to match against excerpt meanings: 253759 - of which, total with incorrect hash codes: 231602 - of which, total with correct hash codes: 22157 - of which, total which matched: 19424 +Total attempts to match against excerpt meanings: 253387 + of which, total with incorrect hash codes: 231381 + of which, total with correct hash codes: 22006 + of which, total which matched: 19273