Skip to content

Commit

Permalink
Fix for Jira bug I7-2115
Browse files Browse the repository at this point in the history
  • Loading branch information
ganelson committed May 18, 2022
1 parent 87b3b71 commit 47978f0
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 48 deletions.
34 changes: 19 additions & 15 deletions docs/CommandParserKit/S-prs.html
Expand Up @@ -147,6 +147,7 @@ <h1><a href="../index.html">

<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">inferfrom</span><span class="plain-syntax">; </span><span class="comment-syntax">The point from which the rest of the command must be inferred</span>
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">inferword</span><span class="plain-syntax">; </span><span class="comment-syntax">And the preposition inferred</span>
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">dont_infer_pronoun</span><span class="plain-syntax">; </span><span class="comment-syntax">Do not infer an "it"</span>
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">dont_infer</span><span class="plain-syntax">; </span><span class="comment-syntax">Another dull flag</span>

<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">cobj_flag</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
Expand Down Expand Up @@ -1744,7 +1745,7 @@ <h1><a href="../index.html">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">token</span><span class="plain-syntax"> == </span><span class="identifier-syntax">MULTI_TOKEN</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIHELD_TOKEN</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIEXCEPT_TOKEN</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIINSIDE_TOKEN</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">token_allows_multiple</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>

<span class="plain-syntax"> </span><span class="identifier-syntax">many_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">; </span><span class="identifier-syntax">and_parity</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; </span><span class="identifier-syntax">dont_infer</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">many_flag</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">; </span><span class="identifier-syntax">and_parity</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; </span><span class="identifier-syntax">dont_infer</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">; </span><span class="identifier-syntax">dont_infer_pronoun</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>&#167;28. Parse Token Letter C. </b>Parse descriptors (articles, pronouns, etc.) in the list.
</p>
Expand Down Expand Up @@ -1977,8 +1978,8 @@ <h1><a href="../index.html">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parser_trace</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">3</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" [Making new list from "</span><span class="plain-syntax">, (</span><span class="identifier-syntax">the</span><span class="plain-syntax">) </span><span class="identifier-syntax">single_object</span><span class="plain-syntax">, </span><span class="string-syntax">"]^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">DEBUG</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dont_infer</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; </span><span class="identifier-syntax">inferfrom</span><span class="plain-syntax">=0; </span><span class="comment-syntax">Don't print (inferences)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">jump</span><span class="plain-syntax"> </span><span class="identifier-syntax">ObjectList</span><span class="plain-syntax">; </span><span class="comment-syntax">And back around</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dont_infer</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; </span><span class="identifier-syntax">dont_infer_pronoun</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">; </span><span class="identifier-syntax">inferfrom</span><span class="plain-syntax">=0; </span><span class="comment-syntax">Don't print (inferences)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">jump</span><span class="plain-syntax"> </span><span class="identifier-syntax">ObjectList</span><span class="plain-syntax">; </span><span class="comment-syntax">And back around</span>
<span class="plain-syntax"> }</span>

<span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">--; </span><span class="comment-syntax">Word marker back to first not-understood word</span>
Expand Down Expand Up @@ -2290,8 +2291,9 @@ <h1><a href="../index.html">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><span class="identifier-syntax">dont_infer</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjudicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">context</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == -1) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="comment-syntax"> Adjudicate has made a multiple</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="comment-syntax"> Adjudicate has made a multiple</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> object, and we pass it on</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dont_infer_pronoun</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">; </span><span class="comment-syntax">See bug I7-2115 for discussion of this</span>
<span class="plain-syntax"> }</span>

<span class="plain-syntax"> </span><span class="comment-syntax">If i is non-zero here, one of two things is happening: either</span>
Expand Down Expand Up @@ -2507,7 +2509,7 @@ <h1><a href="../index.html">

<span class="plain-syntax"> #</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">DEBUG</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parser_trace</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">5</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[Gluing in inference with pattern code "</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="string-syntax">"]^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[Gluing in inference at "</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="string-syntax">" with pattern code "</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="string-syntax">"]^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">DEBUG</span>

<span class="plain-syntax"> </span><span class="comment-syntax">Conveniently, parse2--&gt;1 is the first word in both ZCODE and GLULX.</span>
Expand All @@ -2518,16 +2520,18 @@ <h1><a href="../index.html">
<span class="plain-syntax"> </span><span class="comment-syntax">(This is imperfect, but it's very seldom needed anyway.)</span>

<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">2</span><span class="plain-syntax"> &amp;&amp; </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">REPARSE_CODE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PronounNotice</span><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax">=1 : </span><span class="identifier-syntax">k</span><span class="plain-syntax">&lt;=</span><span class="identifier-syntax">LanguagePronouns</span><span class="plain-syntax">--&gt;0 : </span><span class="identifier-syntax">k</span><span class="plain-syntax">=</span><span class="identifier-syntax">k</span><span class="plain-syntax">+3)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LanguagePronouns</span><span class="plain-syntax">--&gt;(</span><span class="identifier-syntax">k</span><span class="plain-syntax">+2)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">--&gt;1 = </span><span class="identifier-syntax">LanguagePronouns</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">k</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">DEBUG</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parser_trace</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">5</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[Using pronoun '"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">address</span><span class="plain-syntax">) </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">--&gt;1, </span><span class="string-syntax">"']^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">DEBUG</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dont_infer_pronoun</span><span class="plain-syntax"> == </span><span class="reserved-syntax">false</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PronounNotice</span><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax">=1 : </span><span class="identifier-syntax">k</span><span class="plain-syntax">&lt;=</span><span class="identifier-syntax">LanguagePronouns</span><span class="plain-syntax">--&gt;0 : </span><span class="identifier-syntax">k</span><span class="plain-syntax">=</span><span class="identifier-syntax">k</span><span class="plain-syntax">+3)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">j</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LanguagePronouns</span><span class="plain-syntax">--&gt;(</span><span class="identifier-syntax">k</span><span class="plain-syntax">+2)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">--&gt;1 = </span><span class="identifier-syntax">LanguagePronouns</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">k</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">DEBUG</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parser_trace</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">5</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[Using pronoun '"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">address</span><span class="plain-syntax">) </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">--&gt;1, </span><span class="string-syntax">"']^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">Endif</span><span class="plain-syntax">; </span><span class="comment-syntax">DEBUG</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="comment-syntax">An inferred preposition.</span>
Expand Down

0 comments on commit 47978f0

Please sign in to comment.