mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 08:34:22 +03:00
Introduced adjective meaning families
This commit is contained in:
parent
dd39e6bd8e
commit
94485a2f75
|
@ -845,7 +845,7 @@ further sub-cases later.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pred</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_ENUMERATIVE_meaning</span></a><span class="plain-syntax">(</span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">AdjectiveMeanings::has_ENUMERATIVE_meaning</span></a><span class="plain-syntax">(</span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::obtain</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">) == </span><span class="identifier-syntax">WITH_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::Using::assertion_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_EOOwnerMutable</span><span class="plain-syntax">),</span>
|
||||
|
|
|
@ -190,7 +190,7 @@ is to store them and sit on them.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pred</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="6-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">AdjectiveMeanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ImplicationValueProperty</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that's an implication where the outcome is an adjective other than "</span>
|
||||
|
@ -339,7 +339,7 @@ no better a certainty level.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPLICATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"$D => $T (certainty %d; changed state %d)\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-></span><span class="element-syntax">if_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-></span><span class="element-syntax">then_pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">imp</span><span class="plain-syntax">-></span><span class="element-syntax">implied_likelihood</span><span class="plain-syntax">, </span><span class="identifier-syntax">conclusion_state</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">conclusion_prop</span><span class="plain-syntax"> = </span><a href="6-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">conclusion_prop</span><span class="plain-syntax"> = </span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">AdjectiveMeanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-imp.html#SP6_1_1" class="named-paragraph-link"><span class="named-paragraph">Check that the conclusion is not impossible</span><span class="named-paragraph-number">6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
|
|
|
@ -206,7 +206,7 @@ though only if it has a positive sense and has a nominal meaning.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ADJECTIVE_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pred</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</span><span class="plain-syntax">) == </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax"> = </span><a href="6-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_ENUMERATIVE_meaning</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax"> = </span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">AdjectiveMeanings::has_ENUMERATIVE_meaning</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pred</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">q</span><span class="plain-syntax">) </span><a href="4-rpt.html#SP1" class="function-link"><span class="function-syntax">Refiner::give_spec_to_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -130,8 +130,8 @@ MathJax = {
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">AdjectivalPredicates::infer_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><a href="6-am.html#SP17" class="function-link"><span class="function-syntax">Adjectives::Meanings::first_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="6-am.html#SP25" class="function-link"><span class="function-syntax">Adjectives::Meanings::get_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><a href="6-am.html#SP18" class="function-link"><span class="function-syntax">AdjectiveMeanings::first_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="6-am.html#SP26" class="function-link"><span class="function-syntax">AdjectiveMeanings::get_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</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">D</span><span class="plain-syntax">) *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -139,7 +139,7 @@ MathJax = {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Checker::kind_of_term</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </span><span class="identifier-syntax">vta</span><span class="plain-syntax">, </span><span class="identifier-syntax">tck</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">aph</span><span class="plain-syntax">) && (</span><a href="6-am.html#SP12" class="function-link"><span class="function-syntax">Adjectives::Meanings::applicable_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</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">aph</span><span class="plain-syntax">) && (</span><a href="6-am.html#SP13" class="function-link"><span class="function-syntax">AdjectiveMeanings::applicable_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::get_nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">tck</span><span class="plain-syntax">-></span><span class="identifier-syntax">log_to_I6_text</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Adjective '%W' undefined on %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Propositions::Checker::problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">UnaryMisapplied_CALCERROR</span><span class="plain-syntax">,</span>
|
||||
|
@ -152,7 +152,7 @@ MathJax = {
|
|||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Next, asserting \(adjective(t)\). We know that \(t\) evaluates to a kind
|
||||
of value over which \(adjective\) is defined, or the proposition would
|
||||
not have survived type-checking. But only some adjectives can be asserted;
|
||||
"open" can, but "visible" can't, for instance. <span class="extract"><span class="extract-syntax">Adjectives::Meanings::assert</span></span> returns a
|
||||
"open" can, but "visible" can't, for instance. <span class="extract"><span class="extract-syntax">AdjectiveMeanings::assert</span></span> returns a
|
||||
success flag.
|
||||
</p>
|
||||
|
||||
|
@ -180,15 +180,15 @@ success flag.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">ots</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">ox</span><span class="plain-syntax">) </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">Adjectives::Meanings::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">ox</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">Adjectives::Meanings::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ots</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</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">ox</span><span class="plain-syntax">) </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><a href="6-am.html#SP15" class="function-link"><span class="function-syntax">AdjectiveMeanings::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">ox</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><a href="6-am.html#SP15" class="function-link"><span class="function-syntax">AdjectiveMeanings::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ots</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</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">found</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">Assert::issue_couldnt_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">AdjectivalPredicates::testable</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">AdjectivalPredicates::testable</span></span>:<br/><a href="6-tap.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="6-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">AdjectiveMeanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -197,7 +197,7 @@ success flag.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TERM_DOMAIN_CALCULUS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">about</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = </span><a href="6-tap.html#SP4" class="function-link"><span class="function-syntax">AdjectivalPredicates::parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="6-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="6-am.html#SP14" class="function-link"><span class="function-syntax">AdjectiveMeanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">possession_marker</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::get_possession_marker</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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">sense</span><span class="plain-syntax">) {</span>
|
||||
|
@ -223,7 +223,7 @@ success flag.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOW_ATOM_FALSE_TASK:</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="constant-syntax">NOW_ADJECTIVE_FALSE_TASK</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="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="identifier-syntax">schema</span><span class="plain-syntax"> = </span><a href="6-am.html#SP30" class="function-link"><span class="function-syntax">Adjectives::Meanings::get_i6_schema</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">atask</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="identifier-syntax">schema</span><span class="plain-syntax"> = </span><a href="6-am.html#SP31" class="function-link"><span class="function-syntax">AdjectiveMeanings::get_i6_schema</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">atask</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Access:
|
||||
|
@ -232,13 +232,13 @@ success flag.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">AdjectivalPredicates::to_adjective</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">AdjectivalPredicates::to_adjective</span></span>:<br/><a href="6-tap.html#SP2">§2</a>, <a href="6-tap.html#SP3">§3</a><br/>Refine Parse Tree - <a href="4-rpt.html#SP6">§6</a><br/>Assertions - <a href="4-ass.html#SP6_3_13">§6.3.13</a><br/>Implications - <a href="4-imp.html#SP3_2_3">§3.2.3</a>, <a href="4-imp.html#SP6_1">§6.1</a><br/>Calculus Utilities - <a href="6-cu.html#SP8_2">§8.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">up</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">up</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::from_lcon</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">lcon</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">AdjectivalPredicates::parity</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">AdjectivalPredicates::parity</span></span>:<br/><a href="6-tap.html#SP2">§2</a>, <a href="6-tap.html#SP3">§3</a><br/>Refine Parse Tree - <a href="4-rpt.html#SP6">§6</a><br/>Implications - <a href="4-imp.html#SP6_1">§6.1</a><br/>Calculus Utilities - <a href="6-cu.html#SP8_2">§8.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">up</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null adjective tested for positivity"</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">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</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">up</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</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">Lcon::get_sense</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">lcon</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEGATIVE_SENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -250,7 +250,7 @@ reverse its sense.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">AdjectivalPredicates::flip_parity</span><span class="plain-syntax">(</span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">up</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null adjective flipped"</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">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-adjective flipped"</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">up</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-adjective flipped"</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">Lcon::get_sense</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">lcon</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEGATIVE_SENSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">lcon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lcon::set_sense</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">lcon</span><span class="plain-syntax">, </span><span class="identifier-syntax">POSITIVE_SENSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
|
|
|
@ -137,7 +137,7 @@ will be called.
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">CreationPredicates::is_calling_up_atom</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">CreationPredicates::is_calling_up_atom</span></span>:<br/><a href="6-tcp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</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">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">predicate</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">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</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">up</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -145,7 +145,7 @@ will be called.
|
|||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">CreationPredicates::what_kind_of_calling</span><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</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">prop</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">predicate</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">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">assert_kind</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">up</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">assert_kind</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -160,7 +160,7 @@ will be called.
|
|||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">CreationPredicates::get_calling_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</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">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">predicate</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">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">calling_name</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">up</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">calling_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -199,7 +199,7 @@ since (alone among binary predicates) it has no distinct reversal.
|
|||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">CreationPredicates::what_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</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">prop</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">predicate</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">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_kind_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">assert_kind</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">up</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">is_a_kind_up_family</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="identifier-syntax">assert_kind</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -273,9 +273,9 @@ again.
|
|||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::adj_to_noun_conversion</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Terms::adj_to_noun_conversion</span></span>:<br/>Propositions - <a href="4-prp.html#SP29">§29</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectivalPredicates::to_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">tr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">prn</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Rvalues::from_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_variable</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -85,6 +85,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">adjective_iname_holder_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">adjective_meaning_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">adjective_meaning_family_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">application_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">by_routine_bp_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">equivalence_bp_data_CLASS</span>
|
||||
|
@ -101,6 +102,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_iname_holder</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">application</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">generalisation</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">by_routine_bp_data</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -336,7 +336,7 @@ so on. Those absolute basics are made here.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Parsing::Tokens::Values::time</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Parsing::Tokens::Values::compile_type_gprs</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTVerbs::ConjugateVerb</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Adjectives::Meanings::agreements</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">AdjectiveMeanings::agreements</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">debugging</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Parsing::TestScripts::write_text</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -909,12 +909,12 @@ problem message for this case is now commented out.
|
|||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">AdjectivalPredicates::parity</span><span class="plain-syntax">(</span><span class="identifier-syntax">Propositions::first_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Specifications::to_proposition</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectivalPredicates::to_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">Propositions::first_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Specifications::to_proposition</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">q</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">RetryValue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gv_is</span><span class="plain-syntax"> = </span><span class="constant-syntax">GV_IS_PROPERTY_NAME</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gv_prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -389,7 +389,7 @@ of Inform.
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">DEFINITIONAL_PHRASE_EFF</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="3-phr.html#SP11" class="function-link"><span class="function-syntax">Phrases::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, &</span><span class="identifier-syntax">total_phrases_compiled</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">total_phrases_to_compile</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::compile_support_code</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::compile_support_code</span><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_5" class="paragraph-anchor"></a><b>§11.5. </b>As we'll see, it's legal in Inform to define "To..." phrases with vague
|
||||
|
|
|
@ -147,7 +147,7 @@ earlier invocation list (in what may be another setting entirely).
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_modal_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">say_verb_negated_ANNOT</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</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="named-paragraph-container code-font"><a href="6-ci.html#SP2_1_1" class="named-paragraph-link"><span class="named-paragraph">Otherwise, use the standard way to compile an invoked phrase</span><span class="named-paragraph-number">2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -545,7 +545,7 @@ no subsequent lines are looked at.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_modal_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">say_verb_negated_ANNOT</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</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="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_phrase_invoked</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tokens_packet</span><span class="plain-syntax"> </span><span class="identifier-syntax">tokens</span><span class="plain-syntax">;</span>
|
||||
|
@ -566,7 +566,7 @@ no subsequent lines are looked at.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_modal_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">say_verb_negated_ANNOT</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_say_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</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="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_phrase_invoked</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tokens_packet</span><span class="plain-syntax"> </span><span class="identifier-syntax">tokens</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -2273,7 +2273,7 @@ of defined adjectives. So:
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">LW</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">aph</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">Adjectives::Meanings::write_adjective_test_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">aph</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">AdjectiveMeanings::write_adjective_test_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">aph</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::unlocated_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You tried to use '(+' and '+)' to expand to the Inform 6 routine "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"address of an adjective, but it was an adjective with no meaning."</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -550,7 +550,7 @@ different contexts. We want to quote all of those.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%d. "</span><span class="plain-syntax">, </span><span class="identifier-syntax">nc</span><span class="plain-syntax">-</span><span class="identifier-syntax">ac</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::print_to_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::print_to_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">am</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">ac</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-li.html#SP7_11_3_2" class="named-paragraph-link"><span class="named-paragraph">End definition text</span><span class="named-paragraph-number">7.11.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -98,6 +98,9 @@ which use this module:
|
|||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">KnowledgeModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-iaa.html#SP1" class="function-link"><span class="function-syntax">InstanceAdjectives::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ep.html#SP12" class="function-link"><span class="function-syntax">Properties::EitherOr::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ma.html#SP10" class="function-link"><span class="function-syntax">Properties::Measurement::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-spr.html#SP1" class="function-link"><span class="function-syntax">Properties::SameRelations::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-spr2.html#SP1" class="function-link"><span class="function-syntax">Properties::SettingRelations::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-cr.html#SP1" class="function-link"><span class="function-syntax">Properties::ComparativeRelations::start</span></a><span class="plain-syntax">();</span>
|
||||
|
|
|
@ -85,9 +85,30 @@ or speak of "something blue", whereas "number" is not a coinciding property,
|
|||
and we would not ordinarily write "the ball is 4".<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>
|
||||
</p>
|
||||
|
||||
<p class="commentary">These instances make "enumerative adjectives" because they arise from
|
||||
enumerations such as:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The ball can be red, green or blue.</p>
|
||||
</blockquote>
|
||||
|
||||
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> A quirk in English does allow this, implicitly construing number as an
|
||||
age property, but we don't go there in Inform.
|
||||
<a href="#fnref:1" title="return to text"> ↩</a></p></li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">enumerative_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> defined by a property like "colour" with named values</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">InstanceAdjectives::start</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">enumerative_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new_family</span><span class="plain-syntax">(2);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">enumerative_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_ADJM_MTID</span><span class="plain-syntax">, </span><a href="2-iaa.html#SP4" class="function-link"><span class="function-syntax">InstanceAdjectives::assert</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::is_enumerative</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">am</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">enumerative_amf</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Let's reconstruct the chain of events, shall we? It has been found that an
|
||||
instance, though a noun, must be used as an adjective: for example, "red".
|
||||
Inform has run through the permissions for the property ("colour") in
|
||||
|
@ -106,7 +127,7 @@ following function: twice with the domain <span class="extract"><span class="ext
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::make_adjectival</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">InstanceAdjectives::make_adjectival</span></span>:<br/>Instance Subjects - <a href="4-is2.html#SP1">§1</a><br/>Kind Subjects - <a href="4-ks.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::make_adjectival</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">InstanceAdjectives::make_adjectival</span></span>:<br/>Instance Subjects - <a href="4-is2.html#SP1">§1</a><br/>Kind Subjects - <a href="4-ks.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">singleton</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-iaa.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Find the kind domain within which the adjective applies</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -129,21 +150,21 @@ following function: twice with the domain <span class="extract"><span class="ext
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><a href="2-ins.html#SP5" class="function-link"><span class="function-syntax">Instances::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">ENUMERATIVE_KADJ</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">NW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_adjective</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="constant-syntax">4</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">singleton</span><span class="plain-syntax">) </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">singleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">set</span><span class="plain-syntax">) </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">set</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">enumerative_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">NW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_adjective</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="constant-syntax">4</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">singleton</span><span class="plain-syntax">) </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">singleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">set</span><span class="plain-syntax">) </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">set</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-iaa.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write I6 schemas for asserting and testing this use of the instance</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"GProperty(%k, *1, %n) == %d"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">enumeration_index</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"WriteGProperty(%k, *1, %n, %d)"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">enumeration_index</span><span class="plain-syntax">);</span>
|
||||
|
@ -156,18 +177,6 @@ following function: twice with the domain <span class="extract"><span class="ext
|
|||
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceAdjectives::as_adjective</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_adjective</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceAdjectives::parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::compiling_soon</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Asserting such an adjective simply asserts its property. We refuse to assert
|
||||
the falseness of such an adjective since it's unclear what to infer from, e.g.,
|
||||
|
@ -176,9 +185,10 @@ good basis for choosing which.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceAdjectives::assert</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">InstanceAdjectives::assert</span></span>:<br/><a href="2-iaa.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</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">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">detailed_meaning</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="3-cp.html#SP5" class="function-link"><span class="function-syntax">Properties::Conditions::get_coinciding_property</span></a><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"enumerative adjective on non-property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
|
|
|
@ -114,7 +114,7 @@ possible values these are.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">option</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</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">adj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">adj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">adj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">I</span><span class="plain-syntax">)?</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</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">common_kind</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">common_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -108,7 +108,7 @@ the previous section.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::ComparativeRelations::stock</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::ComparativeRelations::stock</span></span>:<br/><a href="3-cr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</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">n</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ma.html#SP13" class="function-link"><span class="function-syntax">Properties::Measurement::create_comparatives</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ma.html#SP14" class="function-link"><span class="function-syntax">Properties::Measurement::create_comparatives</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -118,7 +118,7 @@ the previous section.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">comparative_bp_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::ComparativeRelations::initialise</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::ComparativeRelations::initialise</span></span>:<br/>Measurement Adjectives - <a href="3-ma.html#SP13_2">§13.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::ComparativeRelations::initialise</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::ComparativeRelations::initialise</span></span>:<br/>Measurement Adjectives - <a href="3-ma.html#SP14_2">§14.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sign</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">comparative_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">comparative_bp_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="element-syntax">comparison_sign</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sign</span><span class="plain-syntax">; </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="element-syntax">comparative_property</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -219,7 +219,7 @@ around), but not to break one.
|
|||
<span class="plain-syntax"> </span><a href="3-ep.html#SP7" class="function-link"><span class="function-syntax">Properties::EitherOr::make_stored_in_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_negation</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::get_negation</span></span>:<br/><a href="3-ep.html#SP15_1">§15.1</a>, <a href="3-ep.html#SP15_2">§15.2</a>, <a href="3-ep.html#SP17">§17</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_2">§21.2</a>, <a href="3-prp.html#SP22">§22</a>, <a href="3-prp.html#SP25">§25</a>, <a href="3-prp.html#SP26">§26</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP4">§4</a><br/>Property Permissions - <a href="5-pp.html#SP7">§7</a><br/>Inferences - <a href="5-inf.html#SP12">§12</a>, <a href="5-inf.html#SP14">§14</a>, <a href="5-inf.html#SP15">§15</a>, <a href="5-inf.html#SP17">§17</a><br/>Complete Model World - <a href="5-cmw.html#SP1_2_2">§1.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_negation</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::get_negation</span></span>:<br/><a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a>, <a href="3-ep.html#SP15">§15</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_2">§21.2</a>, <a href="3-prp.html#SP22">§22</a>, <a href="3-prp.html#SP25">§25</a>, <a href="3-prp.html#SP26">§26</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP4">§4</a><br/>Property Permissions - <a href="5-pp.html#SP7">§7</a><br/>Inferences - <a href="5-inf.html#SP12">§12</a>, <a href="5-inf.html#SP14">§14</a>, <a href="5-inf.html#SP15">§15</a>, <a href="5-inf.html#SP17">§17</a><br/>Complete Model World - <a href="5-cmw.html#SP1_2_2">§1.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-EO property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">negation</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -227,7 +227,7 @@ around), but not to break one.
|
|||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::stored_in_negation</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::stored_in_negation</span></span>:<br/><a href="3-ep.html#SP15_1">§15.1</a>, <a href="3-ep.html#SP15_2">§15.2</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP3">§3</a>, <a href="3-epv.html#SP4">§4</a><br/>Inferences - <a href="5-inf.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::stored_in_negation</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::stored_in_negation</span></span>:<br/><a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP3">§3</a>, <a href="3-epv.html#SP4">§4</a><br/>Inferences - <a href="5-inf.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-EO property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">stored_in_negation</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -321,76 +321,73 @@ change the strings of compiled code here without making a matching change in
|
|||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Either/or properties as adjectives. </b>What makes either/or properties linguistically interesting is their use as
|
||||
adjectives: an open door, a transparent container. Adjectival
|
||||
meanings arising in this way are of the <span class="extract"><span class="extract-syntax">EORP_KADJ</span></span> kind, and the following
|
||||
meanings arising in this way are of the <span class="extract"><span class="extract-syntax">either_or_property_amf</span></span> kind, and the following
|
||||
is called every time an either/or property is created, to create its matching
|
||||
adjectival meaning:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::create_adjective_from_property</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::create_adjective_from_property</span></span>:<br/><a href="3-ep.html#SP3">§3</a>, <a href="3-ep.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> defined by an either/or property like "closed"</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::start</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::start</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new_family</span><span class="plain-syntax">(1);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-ep.html#SP14" class="function-link"><span class="function-syntax">Properties::EitherOr::ADJ_assert</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPILING_SOON_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-ep.html#SP13" class="function-link"><span class="function-syntax">Properties::EitherOr::compiling_soon</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">INDEX_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-ep.html#SP15" class="function-link"><span class="function-syntax">Properties::EitherOr::ADJ_index</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::is_either_or_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">am</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::create_adjective_from_property</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::create_adjective_from_property</span></span>:<br/><a href="3-ep.html#SP3">§3</a>, <a href="3-ep.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">EORP_KADJ</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">adjective_registered</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::get_aph_from_am</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">adjective_registered</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::get_aph_from_am</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">adjectival_meaning_registered</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::make_new_adjective_sense_from_property</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::make_new_adjective_sense_from_property</span></span>:<br/><a href="3-ep.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::make_new_adjective_sense_from_property</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::make_new_adjective_sense_from_property</span></span>:<br/><a href="3-ep.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">adjective_registered</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">Adjectives::Meanings::applicable_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">AdjectiveMeanings::applicable_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">EORP_KADJ</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">either_or_property_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>And here are the methods which define <span class="extract"><span class="extract-syntax">EORP</span></span> adjectives. They arise other
|
||||
than by parsing, as we've seen, so:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>Compiling tests or assertions of these adjectives is easy, because it just
|
||||
means using their schemata in the usual way...
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::ADJ_compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>...but writing those schemata is not so easy, partly because of the way
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>...but writing those schemata is not so easy, partly because of the way
|
||||
either/or properties may be paired, partly because of the attribute storage
|
||||
optimisation applied to some but not all of them.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::ADJ_compiling_soon</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</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">am</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Unregistered adjectival either/or property in either/or atom"</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::compiling_soon</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::compiling_soon</span></span>:<br/><a href="3-ep.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">detailed_meaning</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Unregistered adjectival either/or property in either/or atom"</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">Adjectives::Meanings::get_ready_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_ready_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</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">AdjectiveMeanings::get_ready_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_ready_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::get_domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::get_domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ep.html#SP15_1" class="named-paragraph-link"><span class="named-paragraph">Set the schemata for an either/or property adjective with objects as domain</span><span class="named-paragraph-number">15.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ep.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Set the schemata for an either/or property adjective with objects as domain</span><span class="named-paragraph-number">13.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ep.html#SP15_2" class="named-paragraph-link"><span class="named-paragraph">Set the schemata for an either/or property adjective with some other domain</span><span class="named-paragraph-number">15.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ep.html#SP13_2" class="named-paragraph-link"><span class="named-paragraph">Set the schemata for an either/or property adjective with some other domain</span><span class="named-paragraph-number">13.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15_1" class="paragraph-anchor"></a><b>§15.1. </b>The "objects" domain is not really very different, but it's the one used
|
||||
<p class="commentary firstcommentary"><a id="SP13_1" class="paragraph-anchor"></a><b>§13.1. </b>The "objects" domain is not really very different, but it's the one used
|
||||
overwhelmingly most often, so we will call the relevant routines directly rather
|
||||
than accessing them via the unifying routines <span class="extract"><span class="extract-syntax">GProperty</span></span> and <span class="extract"><span class="extract-syntax">WriteGProperty</span></span> —
|
||||
which would work just as well, but more slowly.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the schemata for an either/or property adjective with objects as domain</span><span class="named-paragraph-number">15.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the schemata for an either/or property adjective with objects as domain</span><span class="named-paragraph-number">13.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -398,78 +395,82 @@ which would work just as well, but more slowly.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">neg</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GetEitherOrProperty(*1, %n) == false"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, true)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, false)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GetEitherOrProperty(*1, %n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, false)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, true)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ep.html#SP15">§15</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15_2" class="paragraph-anchor"></a><b>§15.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the schemata for an either/or property adjective with some other domain</span><span class="named-paragraph-number">15.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ep.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_2" class="paragraph-anchor"></a><b>§13.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the schemata for an either/or property adjective with some other domain</span><span class="named-paragraph-number">13.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ep.html#SP7" class="function-link"><span class="function-syntax">Properties::EitherOr::stored_in_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">neg</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GProperty(%k, *1, %n) == false"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(%k, *1, %n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(%k, *1, %n, true)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">neg</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="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GProperty(%k, *1, %n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(%k, *1, %n, true)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(%k, *1, %n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ep.html#SP15">§15</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>To assert an adjective like "open" is to draw an inference about its
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ep.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>To assert an adjective like "open" is to draw an inference about its
|
||||
property.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::ADJ_assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::ADJ_assert</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::ADJ_assert</span></span>:<br/><a href="3-ep.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">detailed_meaning</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">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_negated_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">World::Inferences::draw_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>And finally:
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>And finally:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::ADJ_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::ADJ_index</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::ADJ_index</span></span>:<br/><a href="3-ep.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">detailed_meaning</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">neg</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"either/or property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP13" class="function-link"><span class="function-syntax">Properties::permission_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
|
||||
|
|
|
@ -87,7 +87,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#3">Chapter 3: Properties</a></li><li><b>Measurement Adjectives</b></li></ul></div>
|
||||
<p class="purpose">To define adjectives such as large, wide or roomy, which make implicit comparisons of the size of some numerical property, and which (unlike other adjectives) lead to comparative and superlative forms.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-ma.html#SP4">§4. Measurements</a></li><li><a href="3-ma.html#SP9">§9. Adjectives arising from measurements</a></li><li><a href="3-ma.html#SP12">§12. Support routines for measurement</a></li><li><a href="3-ma.html#SP13">§13. Comparative forms</a></li><li><a href="3-ma.html#SP14">§14. Late registration of prepositions comparing properties</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-ma.html#SP4">§4. Measurements</a></li><li><a href="3-ma.html#SP9">§9. Adjectives arising from measurements</a></li><li><a href="3-ma.html#SP13">§13. Support routines for measurement</a></li><li><a href="3-ma.html#SP14">§14. Comparative forms</a></li><li><a href="3-ma.html#SP15">§15. Late registration of prepositions comparing properties</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>A typical example would be:
|
||||
</p>
|
||||
|
@ -174,7 +174,7 @@ comparison, \(t\) itself is a member; in strict comparison, it isn't.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Measurement::weak_comparison_bp</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::weak_comparison_bp</span></span>:<br/><a href="3-ma.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shape</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Measurement::weak_comparison_bp</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::weak_comparison_bp</span></span>:<br/><a href="3-ma.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shape</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">operator</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> solely to placate gcc</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">shape</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MEASURE_T_OR_MORE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">operator</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R_numerically_greater_than_or_equal_to</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -185,7 +185,7 @@ comparison, \(t\) itself is a member; in strict comparison, it isn't.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">operator</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Measurement::strict_comparison</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::strict_comparison</span></span>:<br/><a href="3-ma.html#SP10_4_2">§10.4.2</a>, <a href="3-ma.html#SP13_1">§13.1</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">§5.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shape</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Measurement::strict_comparison</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::strict_comparison</span></span>:<br/><a href="3-ma.html#SP11_4_2">§11.4.2</a>, <a href="3-ma.html#SP14_1">§14.1</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">§5.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shape</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">operator</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> solely to placate gcc</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">shape</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MEASURE_T_OR_MORE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">operator</span><span class="plain-syntax"> = </span><span class="string-syntax">">"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -231,7 +231,7 @@ definition structure stands incomplete for a while. Filling it in is called
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::validate</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::validate</span></span>:<br/><a href="3-ma.html#SP5">§5</a>, <a href="3-ma.html#SP6">§6</a>, <a href="3-ma.html#SP11">§11</a>, <a href="3-ma.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::validate</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::validate</span></span>:<br/><a href="3-ma.html#SP5">§5</a>, <a href="3-ma.html#SP6">§6</a>, <a href="3-ma.html#SP12">§12</a>, <a href="3-ma.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</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">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">name_of_property_to_compare</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Fill in the missing property name, P</span><span class="named-paragraph-number">7.1</span></a></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">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">region_threshold_evaluated</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
|
@ -308,7 +308,7 @@ and issue a problem.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::is_valid</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::is_valid</span></span>:<br/><a href="3-ma.html#SP5">§5</a>, <a href="3-ma.html#SP11">§11</a>, <a href="3-ma.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::is_valid</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::is_valid</span></span>:<br/><a href="3-ma.html#SP5">§5</a>, <a href="3-ma.html#SP12">§12</a>, <a href="3-ma.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</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">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">region_threshold_evaluated</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -361,27 +361,41 @@ always to match <property-name>, and the text in the range must match
|
|||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Measurement::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</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">sense</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">measurement_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> defined by numerical comparison with a property value</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><measurement-adjective-definition></span><span class="plain-syntax">(</span><span class="identifier-syntax">CONW</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::start</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::start</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">measurement_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new_family</span><span class="plain-syntax">(3);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">measurement_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-ma.html#SP12" class="function-link"><span class="function-syntax">Properties::Measurement::ADJ_assert</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">measurement_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPILING_SOON_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-ma.html#SP12" class="function-link"><span class="function-syntax">Properties::Measurement::compiling_soon</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">measurement_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARSE_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-ma.html#SP11" class="function-link"><span class="function-syntax">Properties::Measurement::ADJ_parse</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::ADJ_parse</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::ADJ_parse</span></span>:<br/><a href="3-ma.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> **</span><span class="identifier-syntax">result</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</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">sense</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><measurement-adjective-definition></span><span class="plain-syntax">(</span><span class="identifier-syntax">CONW</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shape</span><span class="plain-syntax"> = </span><span class="function-syntax"><<r>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><measurement-adjective-definition></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">THRESW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><measurement-range></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Reject some overly elaborate attempts to define overly elaborate measurements</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Allow an exact measurement to be created only if we can already parse the threshold</span><span class="named-paragraph-number">10.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Reject some overly elaborate attempts to define overly elaborate measurements</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Allow an exact measurement to be created only if we can already parse the threshold</span><span class="named-paragraph-number">11.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP10_3" class="named-paragraph-link"><span class="named-paragraph">Initialise the measurement definition</span><span class="named-paragraph-number">10.3</span></a></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">shape</span><span class="plain-syntax"> != </span><span class="constant-syntax">MEASURE_T_EXACTLY</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP10_4" class="named-paragraph-link"><span class="named-paragraph">Create the superlative form</span><span class="named-paragraph-number">10.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP10_5" class="named-paragraph-link"><span class="named-paragraph">Create the adjectival meaning arising from this measurement</span><span class="named-paragraph-number">10.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">headword_as_adjective</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP11_3" class="named-paragraph-link"><span class="named-paragraph">Initialise the measurement definition</span><span class="named-paragraph-number">11.3</span></a></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">shape</span><span class="plain-syntax"> != </span><span class="constant-syntax">MEASURE_T_EXACTLY</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP11_4" class="named-paragraph-link"><span class="named-paragraph">Create the superlative form</span><span class="named-paragraph-number">11.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP11_5" class="named-paragraph-link"><span class="named-paragraph">Create the adjectival meaning arising from this measurement</span><span class="named-paragraph-number">11.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">headword_as_adjective</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10_1" class="paragraph-anchor"></a><b>§10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject some overly elaborate attempts to define overly elaborate measurements</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP11_1" class="paragraph-anchor"></a><b>§11.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject some overly elaborate attempts to define overly elaborate measurements</span><span class="named-paragraph-number">11.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -392,7 +406,7 @@ always to match <property-name>, and the text in the range must match
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"as in 'Definition: a container is large if its carrying capacity is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"10 or more.': 'fairly large' would not be allowed because it would "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"make no sense to talk about 'fairly larger' or 'fairly largest'."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -403,7 +417,7 @@ always to match <property-name>, and the text in the range must match
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"or more.' is fine, but so 'Definition: a container (called the bag) "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"is large if its carrying capacity is 10 or more.' is not - then again, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"there's very little call for it."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">sense</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
|
@ -415,11 +429,11 @@ always to match <property-name>, and the text in the range must match
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"its carrying capacity is 10 or more.' is not - of course a similar "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"effect could be achieved by 'Definition: a container is modest if its "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"carrying capacity is 9 or less.'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_2" class="paragraph-anchor"></a><b>§10.2. </b>Perhaps this is a good point to say why we allow any exact measurements at
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_2" class="paragraph-anchor"></a><b>§11.2. </b>Perhaps this is a good point to say why we allow any exact measurements at
|
||||
all. After all, if we didn't, a definition like:
|
||||
</p>
|
||||
|
||||
|
@ -427,11 +441,11 @@ all. After all, if we didn't, a definition like:
|
|||
<p>Definition: a person is handy if his carrying capacity is 7.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">...would still work; and "handy" would then be created as a <span class="extract"><span class="extract-syntax">CONDITION_KADJ</span></span>
|
||||
<p class="commentary">...would still work; and "handy" would then be created as a <span class="extract"><span class="extract-syntax">condition_amf</span></span>
|
||||
adjective. So why not let that happen?
|
||||
</p>
|
||||
|
||||
<p class="commentary">The answer is that our <span class="extract"><span class="extract-syntax">MEASUREMENT_KADJ</span></span> adjectives behave exactly the same
|
||||
<p class="commentary">The answer is that our <span class="extract"><span class="extract-syntax">measurement_amf</span></span> adjectives behave exactly the same
|
||||
at run-time, but can also be asserted true in the model world at compile-time.
|
||||
In particular, we could write:
|
||||
</p>
|
||||
|
@ -440,20 +454,20 @@ In particular, we could write:
|
|||
<p>Peter is a handy person.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">This can't be done with general <span class="extract"><span class="extract-syntax">CONDITION_KADJ</span></span> adjectives, because conditions
|
||||
<p class="commentary">This can't be done with general <span class="extract"><span class="extract-syntax">condition_amf</span></span> adjectives, because conditions
|
||||
can't normally be unravelled at compile time.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Allow an exact measurement to be created only if we can already parse the threshold</span><span class="named-paragraph-number">10.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Allow an exact measurement to be created only if we can already parse the threshold</span><span class="named-paragraph-number">11.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">shape</span><span class="plain-syntax"> == </span><span class="constant-syntax">MEASURE_T_EXACTLY</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-literal></span><span class="plain-syntax">(</span><span class="identifier-syntax">THRESW</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-literal></span><span class="plain-syntax">(</span><span class="identifier-syntax">THRESW</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_3" class="paragraph-anchor"></a><b>§10.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Initialise the measurement definition</span><span class="named-paragraph-number">10.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_3" class="paragraph-anchor"></a><b>§11.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Initialise the measurement definition</span><span class="named-paragraph-number">11.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -475,19 +489,19 @@ can't normally be unravelled at compile time.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">CompilationUnits::current</span><span class="plain-syntax">(), </span><span class="identifier-syntax">ADJECTIVE_MEANINGS_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="identifier-syntax">mdef_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">MEASUREMENT_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_4" class="paragraph-anchor"></a><b>§10.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the superlative form</span><span class="named-paragraph-number">10.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_4" class="paragraph-anchor"></a><b>§11.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the superlative form</span><span class="named-paragraph-number">11.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="identifier-syntax">superlative</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Grading::make_superlative</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">headword</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP10_4_1" class="named-paragraph-link"><span class="named-paragraph">Feed the preamble for the superlative phrase into the lexer</span><span class="named-paragraph-number">10.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP10_4_2" class="named-paragraph-link"><span class="named-paragraph">Feed the body of the superlative phrase into the lexer</span><span class="named-paragraph-number">10.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP11_4_1" class="named-paragraph-link"><span class="named-paragraph">Feed the preamble for the superlative phrase into the lexer</span><span class="named-paragraph-number">11.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP11_4_2" class="named-paragraph-link"><span class="named-paragraph">Feed the body of the superlative phrase into the lexer</span><span class="named-paragraph-number">11.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RuleSubtrees::register_recently_lexed_phrases</span><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_4_1" class="paragraph-anchor"></a><b>§10.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Feed the preamble for the superlative phrase into the lexer</span><span class="named-paragraph-number">10.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_4_1" class="paragraph-anchor"></a><b>§11.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Feed the preamble for the superlative phrase into the lexer</span><span class="named-paragraph-number">11.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -499,8 +513,8 @@ can't normally be unravelled at compile time.
|
|||
<span class="plain-syntax"> </span><span class="character-syntax">':'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP10_4">§10.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_4_2" class="paragraph-anchor"></a><b>§10.4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Feed the body of the superlative phrase into the lexer</span><span class="named-paragraph-number">10.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP11_4">§11.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_4_2" class="paragraph-anchor"></a><b>§11.4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Feed the body of the superlative phrase into the lexer</span><span class="named-paragraph-number">11.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -511,40 +525,40 @@ can't normally be unravelled at compile time.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Sentences::make_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">), </span><span class="character-syntax">'.'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP10_4">§10.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_5" class="paragraph-anchor"></a><b>§10.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the adjectival meaning arising from this measurement</span><span class="named-paragraph-number">10.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP11_4">§11.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_5" class="paragraph-anchor"></a><b>§11.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the adjectival meaning arising from this measurement</span><span class="named-paragraph-number">11.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">MEASUREMENT_KADJ</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">measurement_amf</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_measurement_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">), </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="identifier-syntax">headword_as_adjective</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::ADJ_compiling_soon</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::compiling_soon</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::compiling_soon</span></span>:<br/><a href="3-ma.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">, </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_measurement_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">detailed_meaning</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">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">region_threshold_evaluated</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">property_schema_written</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">headword_as_adjective</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"%n(*1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">mdef_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">property_schema_written</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::ADJ_compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::ADJ_assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::ADJ_assert</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::ADJ_assert</span></span>:<br/><a href="3-ma.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_measurement_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">detailed_meaning</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ma.html#SP7" class="function-link"><span class="function-syntax">Properties::Measurement::validate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-ma.html#SP8" class="function-link"><span class="function-syntax">Properties::Measurement::is_valid</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -555,12 +569,8 @@ can't normally be unravelled at compile time.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::ADJ_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Support routines for measurement. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Support routines for measurement. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::compile_MADJ_routines</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
|
@ -571,7 +581,7 @@ can't normally be unravelled at compile time.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_call_parameter</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Frames::current_stack_frame</span><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::get_domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">headword_as_adjective</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::get_domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">headword_as_adjective</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lvalues::new_LOCAL_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">lv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">evaluated_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lvalues::new_PROPERTY_VALUE</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax">), </span><span class="identifier-syntax">var</span><span class="plain-syntax">);</span>
|
||||
|
@ -600,12 +610,12 @@ can't normally be unravelled at compile time.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Comparative forms. </b>For timing reasons, these are made all at once, and later than when the headword
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Comparative forms. </b>For timing reasons, these are made all at once, and later than when the headword
|
||||
adjectives and superlatives are made.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::create_comparatives</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::create_comparatives</span></span>:<br/>Comparative Relations - <a href="3-cr.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::create_comparatives</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::create_comparatives</span></span>:<br/>Comparative Relations - <a href="3-cr.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">, </span><span class="reserved-syntax">measurement_definition</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ma.html#SP7" class="function-link"><span class="function-syntax">Properties::Measurement::validate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">);</span>
|
||||
|
@ -618,16 +628,16 @@ adjectives and superlatives are made.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Grading::make_quiddity</span><span class="plain-syntax">(</span><span class="identifier-syntax">H</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">()))); </span><span class="comment-syntax"> "tallness"</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">schema_to_compare_property_values</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Work out property comparison schema</span><span class="named-paragraph-number">13.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP13_2" class="named-paragraph-link"><span class="named-paragraph">Construct a BP named for the quiddity and tested using the comparative schema</span><span class="named-paragraph-number">13.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP14_1" class="named-paragraph-link"><span class="named-paragraph">Work out property comparison schema</span><span class="named-paragraph-number">14.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP14_2" class="named-paragraph-link"><span class="named-paragraph">Construct a BP named for the quiddity and tested using the comparative schema</span><span class="named-paragraph-number">14.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1" class="paragraph-anchor"></a><b>§13.1. </b>This schema compares the property values:
|
||||
<p class="commentary firstcommentary"><a id="SP14_1" class="paragraph-anchor"></a><b>§14.1. </b>This schema compares the property values:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Work out property comparison schema</span><span class="named-paragraph-number">13.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Work out property comparison schema</span><span class="named-paragraph-number">14.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -636,8 +646,8 @@ adjectives and superlatives are made.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">schema_to_compare_property_values</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(*1.%n %s *2.%n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">operation</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_2" class="paragraph-anchor"></a><b>§13.2. </b>The relation arising from "tall" would be called the "tallness relation", for
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_2" class="paragraph-anchor"></a><b>§14.2. </b>The relation arising from "tall" would be called the "tallness relation", for
|
||||
instance. Note that we don't say anything about the domain of \(x\) and \(y\)
|
||||
in \(T(x, y)\). That's because we a value property like "height" may exist
|
||||
for more than one kind of object, and there is not necessarily any unifying
|
||||
|
@ -647,7 +657,7 @@ multiple-inheritance, and it allows containers and doors to share lockability
|
|||
behaviour despite being of mutually incompatible kinds.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Construct a BP named for the quiddity and tested using the comparative schema</span><span class="named-paragraph-number">13.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Construct a BP named for the quiddity and tested using the comparative schema</span><span class="named-paragraph-number">14.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -660,16 +670,16 @@ behaviour despite being of mutually incompatible kinds.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">schema_to_compare_property_values</span><span class="plain-syntax">, </span><span class="identifier-syntax">WordAssemblages::lit_1</span><span class="plain-syntax">(</span><span class="identifier-syntax">quiddity</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">relname</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="3-cr.html#SP2" class="function-link"><span class="function-syntax">Properties::ComparativeRelations::initialise</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">region_shape</span><span class="plain-syntax">, </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ma.html#SP14" class="function-link"><span class="function-syntax">Properties::Measurement::register_comparative</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">comparative_form</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ma.html#SP15" class="function-link"><span class="function-syntax">Properties::Measurement::register_comparative</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">comparative_form</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Late registration of prepositions comparing properties. </b>The following routines, used only when all the properties have been
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Late registration of prepositions comparing properties. </b>The following routines, used only when all the properties have been
|
||||
created, make suitable comparatives ("bigger than", etc.) and
|
||||
prepositional usages to test property-equality ("the same height as").
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::register_comparative</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::register_comparative</span></span>:<br/><a href="3-ma.html#SP13_2">§13.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">root</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Measurement::register_comparative</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::Measurement::register_comparative</span></span>:<br/><a href="3-ma.html#SP14_2">§14.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">root</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">verb_meaning</span><span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::regular</span><span class="plain-syntax">(</span><span class="identifier-syntax">root</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">preposition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prep</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Prepositions::make</span><span class="plain-syntax">(</span><span class="identifier-syntax">PreformUtilities::merge</span><span class="plain-syntax">(</span><span class="function-syntax"><comparative-property-construction></span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">,</span>
|
||||
|
@ -677,7 +687,7 @@ prepositional usages to test property-equality ("the same height as").
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Verbs::add_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">copular_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">prep</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">vm</span><span class="plain-syntax">, </span><span class="identifier-syntax">SVO_FS_BIT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>When the source text creates a measurement adjective, such as:
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>When the source text creates a measurement adjective, such as:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
|
@ -692,7 +702,7 @@ prepositional usages to test property-equality ("the same height as").
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">than</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> Peter is taller than Claude</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>And when Inform creates a value property, that also makes a preposition:
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>And when Inform creates a value property, that also makes a preposition:
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -507,7 +507,7 @@ important enough to have their own section: here, all we do is...
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::permission_list</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Properties::permission_list</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP17">§17</a><br/>Property Permissions - <a href="5-pp.html#SP6">§6</a>, <a href="5-pp.html#SP8_3">§8.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::permission_list</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Properties::permission_list</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP15">§15</a><br/>Property Permissions - <a href="5-pp.html#SP6">§6</a>, <a href="5-pp.html#SP8_3">§8.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">applicable_to</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::set_permission_list</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Properties::set_permission_list</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP8_3">§8.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax">) {</span>
|
||||
|
@ -818,7 +818,7 @@ we find it, we compile it and return <span class="extract"><span class="extract-
|
|||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. Emitting to Inter. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Properties::iname</span></span>:<br/><a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_1">§21.1</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_3">§2.3</a><br/>Either-Or Properties - <a href="3-ep.html#SP15_1">§15.1</a>, <a href="3-ep.html#SP15_2">§15.2</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">§5.1</a><br/>Measurement Adjectives - <a href="3-ma.html#SP13_1">§13.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">§2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP11">§11</a><br/>Emit Property Values - <a href="3-epv.html#SP4">§4</a><br/>Instance Counting - <a href="5-ic.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Properties::iname</span></span>:<br/><a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_1">§21.1</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_3">§2.3</a><br/>Either-Or Properties - <a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">§5.1</a><br/>Measurement Adjectives - <a href="3-ma.html#SP14_1">§14.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">§2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP11">§11</a><br/>Emit Property Values - <a href="3-epv.html#SP4">§4</a><br/>Instance Counting - <a href="5-ic.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find iname for null property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">stored_in_negation</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
|
|
|
@ -226,13 +226,13 @@ might not actually accept it; it might be redundant, or contradictory.)
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Inferences::draw_property</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">World::Inferences::draw_property</span></span>:<br/>Instances as Adjectives - <a href="2-iaa.html#SP4">§4</a><br/>Either-Or Properties - <a href="3-ep.html#SP16">§16</a><br/>Measurement Adjectives - <a href="3-ma.html#SP11">§11</a><br/>Setting Property Relation - <a href="3-spr2.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Inferences::draw_property</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">World::Inferences::draw_property</span></span>:<br/>Instances as Adjectives - <a href="2-iaa.html#SP4">§4</a><br/>Either-Or Properties - <a href="3-ep.html#SP14">§14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP12">§12</a><br/>Setting Property Relation - <a href="3-spr2.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP6" class="function-link"><span class="function-syntax">World::Inferences::create_property_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP18" class="function-link"><span class="function-syntax">World::Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Inferences::draw_negated_property</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">World::Inferences::draw_negated_property</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Inferences::draw_negated_property</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">World::Inferences::draw_negated_property</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP6" class="function-link"><span class="function-syntax">World::Inferences::create_property_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">certainty</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">certainty</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -314,7 +314,7 @@ property — when indexing who can own it.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Permissions::index</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">World::Permissions::index</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::Permissions::index</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">World::Permissions::index</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ac</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">s</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">s</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="identifier-syntax">s</span><span class="plain-syntax"> <= </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="identifier-syntax">s</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -80,6 +80,10 @@ which use this module:
|
|||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RuntimeModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-abp.html#SP1" class="function-link"><span class="function-syntax">Phrases::Phrasal::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-abc.html#SP1" class="function-link"><span class="function-syntax">Phrases::Condition::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-abrp.html#SP2" class="function-link"><span class="function-syntax">Phrases::RawPhrasal::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-abrc.html#SP2" class="function-link"><span class="function-syntax">Phrases::RawCondition::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">EMIT_ARRAY_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"emitter array storage"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">PARTITION_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"initial state for relations in groups"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::reason_name</span><span class="plain-syntax">(</span><span class="constant-syntax">RELATION_CONSTRUCTION_MREASON</span><span class="plain-syntax">, </span><span class="string-syntax">"relation bitmap storage"</span><span class="plain-syntax">);</span>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -12,6 +12,14 @@
|
|||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
@ -64,32 +72,43 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#3">Chapter 3: Calculated Adjectives</a></li><li><b>Adjectives by Condition</b></li></ul></div>
|
||||
<p class="purpose">Defining an adjective with an I7 condition.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>This is a family of adjective meanings.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Condition::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">condition_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> defined by a condition in I7 source text</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Condition::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Phrases::Condition::start</span></span>:<br/>Runtime Module - <a href="1-rm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">condition_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new_family</span><span class="plain-syntax">(7);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">condition_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPILE_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-abc.html#SP2" class="function-link"><span class="function-syntax">Phrases::Condition::ADJ_compile</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">condition_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARSE_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-abc.html#SP2" class="function-link"><span class="function-syntax">Phrases::Condition::ADJ_parse</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Condition::ADJ_parse</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Phrases::Condition::ADJ_parse</span></span>:<br/><a href="3-abc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> **</span><span class="identifier-syntax">result</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</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">sense</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">sense</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><a href="3-ad.html#SP6" class="function-link"><span class="function-syntax">Phrases::Adjectives::def_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONDITION_KADJ</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">condition_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">condition_to_match</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sense</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">domain_calling</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Condition::ADJ_compiling_soon</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Condition::ADJ_compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Condition::ADJ_compile</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Phrases::Condition::ADJ_compile</span></span>:<br/><a href="3-abc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">detailed_meaning</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">) {</span>
|
||||
|
@ -98,42 +117,34 @@
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">condition_to_match</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-condition>(def-></span><span class="element-syntax">condition_to_match</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-condition>(def-></span><span class="element-syntax">condition_to_match</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Dash::validate_conditional_clause</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Error on: %W = $T"</span><span class="plain-syntax">, </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">condition_to_match</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::definition_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_DefinitionBadCondition</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::definition_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_DefinitionBadCondition</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="identifier-syntax">node</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that condition makes no sense to me"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"although the preamble to the definition was properly "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"written. There must be something wrong after 'if'."</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="identifier-syntax">format</span><span class="plain-syntax"> == -1) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NOT_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">def</span><span class="plain-syntax">-></span><span class="identifier-syntax">format</span><span class="plain-syntax"> == -1) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NOT_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</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">def</span><span class="plain-syntax">-></span><span class="identifier-syntax">format</span><span class="plain-syntax"> == -1) </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">def</span><span class="plain-syntax">-></span><span class="identifier-syntax">format</span><span class="plain-syntax"> == -1) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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="identifier-syntax">LocalVariables::alias_pronoun</span><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Condition::ADJ_assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Condition::ADJ_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-abp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ad.html">ad</a></li><li class="progresssection"><a href="3-abrp.html">abrp</a></li><li class="progresssection"><a href="3-abrc.html">abrc</a></li><li class="progresssection"><a href="3-abp.html">abp</a></li><li class="progresscurrent">abc</li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progressnext"><a href="4-fc.html">❯</a></li></ul></div>
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
@ -69,6 +77,13 @@ And here's another one.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrase_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> defined by an explicit but nameless rule</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Phrasal::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Phrases::Phrasal::start</span></span>:<br/>Runtime Module - <a href="1-rm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">phrase_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new_family</span><span class="plain-syntax">(6);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrase_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARSE_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-abp.html#SP1" class="function-link"><span class="function-syntax">Phrases::Phrasal::ADJ_parse</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Phrasal::define_adjective_by_phrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CW</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">;</span>
|
||||
|
@ -76,45 +91,31 @@ And here's another one.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</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">def</span><span class="plain-syntax">-></span><span class="element-syntax">definition_node</span><span class="plain-syntax"> == </span><span class="identifier-syntax">p</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Adjectives::Meanings::get_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PHRASE_KADJ</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</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">def</span><span class="plain-syntax">-></span><span class="element-syntax">definition_node</span><span class="plain-syntax"> == </span><span class="identifier-syntax">p</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">AdjectiveMeanings::get_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax">) == </span><span class="identifier-syntax">phrase_amf</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"(%n(*1))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Phrases::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">CW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">domain_calling</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::get_domain_forcing</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::get_domain_forcing</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</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">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(*</span><span class="identifier-syntax">K</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Phrasal::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Phrasal::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> **</span><span class="identifier-syntax">result</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</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">sense</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">sense</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><a href="3-ad.html#SP6" class="function-link"><span class="function-syntax">Phrases::Adjectives::def_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">PHRASE_KADJ</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrase_amf</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">), </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">domain_calling</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">7</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Phrasal::ADJ_compiling_soon</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Phrasal::ADJ_compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Phrasal::ADJ_assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Phrasal::ADJ_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">7</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
|
@ -77,42 +85,35 @@
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::RawCondition::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_condition_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> defined by an explicit I6 schema</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawCondition::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Phrases::RawCondition::start</span></span>:<br/>Runtime Module - <a href="1-rm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_condition_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new_family</span><span class="plain-syntax">(4);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_condition_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARSE_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-abrc.html#SP2" class="function-link"><span class="function-syntax">Phrases::RawCondition::ADJ_parse</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawCondition::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> **</span><span class="identifier-syntax">result</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</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">sense</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (!(</span><span class="function-syntax"><inform6-condition-adjective-definition></span><span class="plain-syntax">(</span><span class="identifier-syntax">CONW</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">sense</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (!(</span><span class="function-syntax"><inform6-condition-adjective-definition></span><span class="plain-syntax">(</span><span class="identifier-syntax">CONW</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_wn</span><span class="plain-syntax"> = </span><span class="function-syntax"><<r>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">IN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><inform6-condition-adjective-definition></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><a href="3-ad.html#SP6" class="function-link"><span class="function-syntax">Phrases::Adjectives::def_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">I6_CONDITION_KADJ</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_condition_amf</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">), </span><span class="identifier-syntax">IN</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Word::dequote</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_wn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"(%N)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_wn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawCondition::ADJ_compiling_soon</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawCondition::ADJ_compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawCondition::ADJ_assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawCondition::ADJ_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
|
@ -79,7 +87,20 @@ This little grammar catches definitions delegated to Inform 6 routines.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::RawPhrasal::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_routine_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> defined by a named I6 routine</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawPhrasal::start</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Phrases::RawPhrasal::start</span></span>:<br/>Runtime Module - <a href="1-rm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_routine_amf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::new_family</span><span class="plain-syntax">(5);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_routine_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARSE_ADJM_MTID</span><span class="plain-syntax">, </span><a href="3-abrp.html#SP2" class="function-link"><span class="function-syntax">Phrases::RawPhrasal::ADJ_parse</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawPhrasal::is_by_Inter_function</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">am</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">inter_routine_amf</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawPhrasal::ADJ_parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> **</span><span class="identifier-syntax">result</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">setting</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">EW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
|
@ -87,49 +108,34 @@ This little grammar catches definitions delegated to Inform 6 routines.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">setting</span><span class="plain-syntax"> = </span><span class="function-syntax"><<r>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><inform6-routine-adjective-definition></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><inform6-routine-adjective-definition></span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">sense</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">sense</span><span class="plain-syntax"> != </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rname_wn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Word::dequote</span><span class="plain-syntax">(</span><span class="identifier-syntax">rname_wn</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><a href="3-ad.html#SP6" class="function-link"><span class="function-syntax">Phrases::Adjectives::def_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">I6_ROUTINE_KADJ</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">), </span><span class="identifier-syntax">EW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_routine_amf</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">def</span><span class="plain-syntax">), </span><span class="identifier-syntax">EW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">am_of_def</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">9</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="constant-syntax">9</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::set_domain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</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">setting</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"*=-(%N(*1, -1))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rname_wn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"*=-(%N(*1, true))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rname_wn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"*=-(%N(*1, false))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rname_wn</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="identifier-syntax">Adjectives::Meanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::pass_task_to_support_routine</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::set_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"*=-(%N(*1))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rname_wn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawPhrasal::ADJ_compiling_soon</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawPhrasal::ADJ_compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">emit_flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawPhrasal::ADJ_assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::RawPhrasal::ADJ_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
|
@ -279,12 +279,12 @@ offer the new adjective around and see if anybody claims it.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_format</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_format</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">CALLW</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">am</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unclaimed adjective definition"</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">neg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::negate</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::Meanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">, </span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="constant-syntax">5</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">neg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::negate</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AdjectiveMeanings::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">, </span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="constant-syntax">5</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ad.html#SP4">§4</a>.</li></ul>
|
||||
|
@ -323,7 +323,7 @@ offer the new adjective around and see if anybody claims it.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Adjectives::def_new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Phrases::Adjectives::def_new</span></span>:<br/>Adjectives by Raw Phrase - <a href="3-abrp.html#SP2">§2</a><br/>Adjectives by Raw Condition - <a href="3-abrc.html#SP2">§2</a><br/>Adjectives by Phrase - <a href="3-abp.html#SP1">§1</a><br/>Adjectives by Condition - <a href="3-abc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Adjectives::def_new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Phrases::Adjectives::def_new</span></span>:<br/>Adjectives by Raw Phrase - <a href="3-abrp.html#SP2">§2</a><br/>Adjectives by Raw Condition - <a href="3-abrc.html#SP2">§2</a><br/>Adjectives by Phrase - <a href="3-abp.html#SP1">§1</a><br/>Adjectives by Condition - <a href="3-abc.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">definition</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax">-></span><span class="element-syntax">format</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -1969,10 +1969,10 @@ against "value".)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="2-rvl.html#SP3" class="function-link"><span class="function-syntax">Rvalues::to_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">new_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-dsc.html#SP8" class="function-link"><span class="function-syntax">Descriptions::number_of_adjectives_applied_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">new_value</span><span class="plain-syntax">) == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectivalPredicates::to_adjective</span><span class="plain-syntax">(</span><a href="2-dsc.html#SP8" class="function-link"><span class="function-syntax">Descriptions::first_unary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">new_value</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">Adjectives::Meanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Conditions::get_coinciding_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">Adjectives::Meanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Adjectives::Meanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">AdjectiveMeanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Conditions::get_coinciding_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">AdjectiveMeanings::has_ENUMERATIVE_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">AdjectiveMeanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">make_check</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
|
|
|
@ -459,7 +459,7 @@ possible adjective name it can see.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">au_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ADJECTIVE_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">au</span><span class="plain-syntax">, </span><span class="identifier-syntax">au_prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectivalPredicates::to_adjective</span><span class="plain-syntax">(</span><span class="identifier-syntax">au</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">Adjectives::Meanings::applicable_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">AdjectiveMeanings::applicable_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 257518K = 251 MB
|
||||
|
||||
62.4% was used for 1341256 objects, in 273984 frames in 201 x 800K = 160800K = 157 MB:
|
||||
62.4% was used for 1341282 objects, in 274010 frames in 201 x 800K = 160800K = 157 MB:
|
||||
|
||||
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.5% text_stream_array 2592 x 100 = 259200 objects, 14598144 bytes
|
||||
|
@ -29,8 +29,8 @@ Total memory consumption was 257518K = 251 MB
|
|||
0.2% dictionary 16348 objects, 784704 bytes
|
||||
0.2% dict_entry_array 233 x 100 = 23300 objects, 753056 bytes
|
||||
0.2% package_request 7931 objects, 697928 bytes
|
||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% local_variable_array 45 x 100 = 4500 objects, 505440 bytes
|
||||
0.1% inference_subject 664 objects, 430272 bytes
|
||||
0.1% verb_usage 1128 objects, 388032 bytes
|
||||
|
@ -92,7 +92,7 @@ Total memory consumption was 257518K = 251 MB
|
|||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- to_phrase_request 59 objects, 15576 bytes
|
||||
---- adjective_iname_holder 320 objects, 15360 bytes
|
||||
---- method 305 objects, 14640 bytes
|
||||
---- method 317 objects, 15216 bytes
|
||||
---- plugin 23 objects, 13432 bytes
|
||||
---- literal_text 147 objects, 12936 bytes
|
||||
---- stopwatch_timer 148 objects, 11840 bytes
|
||||
|
@ -120,32 +120,32 @@ Total memory consumption was 257518K = 251 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
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- compatibility_specification 66 objects, 3168 bytes
|
||||
---- inform_extension 19 objects, 3040 bytes
|
||||
---- property_of_value_storage 93 objects, 2976 bytes
|
||||
---- submodule_request 72 objects, 2880 bytes
|
||||
---- method_set 82 objects, 2624 bytes
|
||||
---- method_set 89 objects, 2848 bytes
|
||||
---- inter_construct 32 objects, 2560 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- semver_range 22 objects, 2288 bytes
|
||||
---- use_option 29 objects, 1856 bytes
|
||||
---- pronoun_usage 42 objects, 1680 bytes
|
||||
---- activity_crossref_array 1 x 100 objects, 1632 bytes
|
||||
---- plugin_call_array 1 x 100 objects, 1632 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- activity_crossref_array 1 x 100 objects, 1632 bytes
|
||||
---- kind_interaction 39 objects, 1560 bytes
|
||||
---- inter_annotation_form 37 objects, 1480 bytes
|
||||
---- pipeline_step 12 objects, 1440 bytes
|
||||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- scene 1 object, 1344 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
|
@ -156,17 +156,17 @@ Total memory consumption was 257518K = 251 MB
|
|||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- runtime_kind_structure 13 objects, 832 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- target_vm 6 objects, 816 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- generated_segment 25 objects, 800 bytes
|
||||
---- inter_data_type 14 objects, 784 bytes
|
||||
---- submodule_identity 23 objects, 736 bytes
|
||||
---- implication 13 objects, 728 bytes
|
||||
---- rulebook_outcome 17 objects, 680 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- nascent_array 7 objects, 616 bytes
|
||||
---- inbuild_search_result 15 objects, 600 bytes
|
||||
---- named_rulebook_outcome 15 objects, 600 bytes
|
||||
|
@ -181,46 +181,47 @@ Total memory consumption was 257518K = 251 MB
|
|||
---- article_usage 8 objects, 384 bytes
|
||||
---- source_file 5 objects, 360 bytes
|
||||
---- inbuild_genre 7 objects, 336 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- inform_pipeline 4 objects, 256 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- test_scenario 1 object, 208 bytes
|
||||
---- compilation_unit 5 objects, 200 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- compilation_unit 5 objects, 200 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 176 bytes
|
||||
---- code_generation_target 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- pointer_allocation 2 objects, 160 bytes
|
||||
---- link_instruction 4 objects, 160 bytes
|
||||
---- code_generation_target 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- element_activation 4 objects, 128 bytes
|
||||
---- codegen_pipeline 1 object, 128 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- inform_kit_ittt 2 objects, 96 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- list_together_routine 2 objects, 80 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- list_together_routine 2 objects, 80 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- blorb_figure 1 object, 48 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- by_routine_bp_data 1 object, 40 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
|
||||
37.5% was used for memory not allocated for objects:
|
||||
|
||||
16.0% text stream storage 42223560 bytes in 265554 claims
|
||||
16.0% text stream storage 42223548 bytes in 265554 claims
|
||||
3.5% dictionary storage 9266176 bytes in 16348 claims
|
||||
---- sorting 1048 bytes in 3 claims
|
||||
2.7% source text 7200000 bytes in 3 claims
|
||||
|
@ -237,5 +238,5 @@ Total memory consumption was 257518K = 251 MB
|
|||
---- emitter array storage 14368 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
20.1% was overhead - 53259872 bytes = 52011K = 50 MB
|
||||
20.1% was overhead - 53258848 bytes = 52010K = 50 MB
|
||||
|
||||
|
|
|
@ -1,36 +1,35 @@
|
|||
100.0% in inform7 run
|
||||
67.3% in compilation to Inter
|
||||
25.9% in //Phrases::Manager::compile_first_block//
|
||||
8.6% in //Phrases::Manager::compile_as_needed//
|
||||
7.2% in //Strings::compile_responses//
|
||||
6.4% in //World::Compile::compile//
|
||||
3.7% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
66.7% in compilation to Inter
|
||||
25.5% in //Phrases::Manager::compile_first_block//
|
||||
8.5% in //Phrases::Manager::compile_as_needed//
|
||||
7.0% in //Strings::compile_responses//
|
||||
6.2% in //World::Compile::compile//
|
||||
3.8% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.9% in //Phrases::Manager::rulebooks_array//
|
||||
1.1% in //RTVerbs::ConjugateVerb//
|
||||
0.8% in //Phrases::Manager::traverse//
|
||||
0.6% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.4% in //Phrases::Manager::compile_rulebooks//
|
||||
0.4% in //World::complete//
|
||||
0.7% in //Phrases::Manager::traverse//
|
||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.5% in //World::complete//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //RTRelations::compile_defined_relations//
|
||||
0.3% in //Phrases::Manager::compile_rulebooks//
|
||||
0.1% in //PL::Parsing::Verbs::compile_all//
|
||||
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||
0.1% in //RTRelations::compile_defined_relations//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
3.3% not specifically accounted for
|
||||
30.2% in running Inter pipeline
|
||||
10.3% in step preparation
|
||||
9.5% in inter step 2/12: link
|
||||
3.4% not specifically accounted for
|
||||
30.9% in running Inter pipeline
|
||||
10.1% in step preparation
|
||||
9.9% in inter step 2/12: link
|
||||
7.2% 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
|
||||
0.1% in inter step 4/12: parse-linked-matter
|
||||
0.1% in inter step 5/12: resolve-conditional-compilation
|
||||
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
|
||||
1.7% not specifically accounted for
|
||||
1.9% in supervisor
|
||||
0.5% not specifically accounted for
|
||||
2.1% not specifically accounted for
|
||||
2.0% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
|
|
|
@ -624,7 +624,7 @@ further sub-cases later.
|
|||
@<Case 13 - X OF Y vs ADJECTIVE@> =
|
||||
if (global_pass_state.pass == 1) return;
|
||||
unary_predicate *pred = Node::get_predicate(py);
|
||||
if (Adjectives::Meanings::has_ENUMERATIVE_meaning(AdjectivalPredicates::to_adjective(pred))) {
|
||||
if (AdjectiveMeanings::has_ENUMERATIVE_meaning(AdjectivalPredicates::to_adjective(pred))) {
|
||||
property *prn = Properties::Valued::obtain(Node::get_text(px->down->next));
|
||||
if (Node::get_type(px->down) == WITH_NT) {
|
||||
Problems::Using::assertion_problem(Task::syntax_tree(), _p_(PM_EOOwnerMutable),
|
||||
|
|
|
@ -96,7 +96,7 @@ void Assertions::Implications::new(parse_node *px, parse_node *py) {
|
|||
|
||||
@<Check that the conclusion involves only a single either/or property@> =
|
||||
unary_predicate *pred = Node::get_predicate(py);
|
||||
property *prn = Adjectives::Meanings::has_EORP_meaning(AdjectivalPredicates::to_adjective(pred), NULL);
|
||||
property *prn = AdjectiveMeanings::has_EORP_meaning(AdjectivalPredicates::to_adjective(pred), NULL);
|
||||
if (prn == NULL) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_ImplicationValueProperty),
|
||||
"that's an implication where the outcome is an adjective other than "
|
||||
|
@ -222,7 +222,7 @@ int Assertions::Implications::check_implications_of(inference_subject *domain,
|
|||
LOGIF(IMPLICATIONS, "$D => $T (certainty %d; changed state %d)\n",
|
||||
imp->if_spec, imp->then_pn, imp->implied_likelihood, conclusion_state);
|
||||
|
||||
property *conclusion_prop = Adjectives::Meanings::has_EORP_meaning(
|
||||
property *conclusion_prop = AdjectiveMeanings::has_EORP_meaning(
|
||||
AdjectivalPredicates::to_adjective(pred), NULL);
|
||||
@<Check that the conclusion is not impossible@>;
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ int Refiner::nominalise_adjective(parse_node *p) {
|
|||
if ((p) && (Node::get_type(p) == ADJECTIVE_NT)) {
|
||||
unary_predicate *pred = Node::get_predicate(p);
|
||||
if (AdjectivalPredicates::parity(pred) == TRUE) {
|
||||
instance *q = Adjectives::Meanings::has_ENUMERATIVE_meaning(
|
||||
instance *q = AdjectiveMeanings::has_ENUMERATIVE_meaning(
|
||||
AdjectivalPredicates::to_adjective(pred));
|
||||
if (q) Refiner::give_spec_to_noun(p, Rvalues::from_instance(q));
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[Adjectives::Meanings::] Adjective Meanings.
|
||||
[AdjectiveMeanings::] Adjective Meanings.
|
||||
|
||||
One individual meaning which an adjective can have.
|
||||
|
||||
|
@ -46,16 +46,26 @@ This enables "non-empty" for texts (say) to be defined identically with
|
|||
"empty" for texts, but with the |meaning_parity| flag set to |FALSE|
|
||||
rather than |TRUE|.
|
||||
|
||||
@d CONDITION_KADJ 1 /* defined by a condition in I7 source text */
|
||||
@d PHRASE_KADJ 2 /* defined by an explicit but nameless rule */
|
||||
@d I6_ROUTINE_KADJ 3 /* defined by a named I6 routine */
|
||||
@d I6_CONDITION_KADJ 4 /* defined by an explicit I6 schema */
|
||||
@d MEASUREMENT_KADJ 5 /* defined by numerical comparison with a property value */
|
||||
@d ENUMERATIVE_KADJ 6 /* defined by a property like "colour" with named values */
|
||||
@d EORP_KADJ 7 /* defined by an either/or property like "closed" */
|
||||
=
|
||||
typedef struct adjective_meaning_family {
|
||||
struct method_set *methods;
|
||||
int parsing_priority;
|
||||
CLASS_DEFINITION
|
||||
} adjective_meaning_family;
|
||||
|
||||
adjective_meaning_family *AdjectiveMeanings::new_family(int N) {
|
||||
adjective_meaning_family *f = CREATE(adjective_meaning_family);
|
||||
f->parsing_priority = N;
|
||||
f->methods = Methods::new_set();
|
||||
return f;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
typedef struct adjective_meaning {
|
||||
struct adjective_meaning_family *family;
|
||||
|
||||
struct wording adjective_index_text; /* text to use in the Phrasebook index */
|
||||
struct parse_node *defined_at; /* from what sentence this came (if it did) */
|
||||
|
||||
|
@ -72,7 +82,6 @@ typedef struct adjective_meaning {
|
|||
int meaning_parity; /* meaning understood positively? */
|
||||
struct adjective_meaning *am_negated_from; /* if explicitly constructed as such */
|
||||
|
||||
int adjective_form; /* one of the |*_KADJ| constants: see below */
|
||||
general_pointer detailed_meaning; /* to the relevant structure */
|
||||
int task_via_support_routine[NO_ADJECTIVE_TASKS + 1];
|
||||
struct i6_schema i6s_to_transfer_to_SR[NO_ADJECTIVE_TASKS + 1]; /* where |TRUE| */
|
||||
|
@ -130,7 +139,7 @@ which is why the |adjective_meaning| structure contains these -- see below.
|
|||
adjectival phrase in sorted order, so:
|
||||
|
||||
@d LOOP_OVER_SORTED_MEANINGS(aph, am)
|
||||
for (am = Adjectives::Meanings::get_sorted_definition_list(aph); am; am=am->next_sorted)
|
||||
for (am = AdjectiveMeanings::get_sorted_definition_list(aph); am; am=am->next_sorted)
|
||||
|
||||
@h Symbols.
|
||||
|
||||
|
@ -142,10 +151,10 @@ typedef struct adjective_compilation_data {
|
|||
|
||||
@
|
||||
|
||||
@d ADJECTIVE_COMPILATION_LINGUISTICS_CALLBACK Adjectives::Meanings::initialise
|
||||
@d ADJECTIVE_COMPILATION_LINGUISTICS_CALLBACK AdjectiveMeanings::initialise
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::initialise(adjective *adj) {
|
||||
void AdjectiveMeanings::initialise(adjective *adj) {
|
||||
adj->adjective_compilation.aph_package = Hierarchy::package(CompilationUnits::current(), ADJECTIVES_HAP);
|
||||
adj->adjective_compilation.aph_iname = Hierarchy::make_iname_in(ADJECTIVE_HL, adj->adjective_compilation.aph_package);
|
||||
}
|
||||
|
@ -158,7 +167,7 @@ typedef struct adjective_iname_holder {
|
|||
CLASS_DEFINITION
|
||||
} adjective_iname_holder;
|
||||
|
||||
inter_name *Adjectives::Meanings::iname(adjective *aph, int task, int weak_id) {
|
||||
inter_name *AdjectiveMeanings::iname(adjective *aph, int task, int weak_id) {
|
||||
adjective_iname_holder *aih;
|
||||
LOOP_OVER(aih, adjective_iname_holder)
|
||||
if ((aih->aph_held == aph) && (aih->task_code == task) && (aih->weak_ID_of_domain == weak_id))
|
||||
|
@ -174,10 +183,10 @@ inter_name *Adjectives::Meanings::iname(adjective *aph, int task, int weak_id) {
|
|||
|
||||
@h The block of definitions.
|
||||
|
||||
@d ADJECTIVE_MEANING_LINGUISTICS_CALLBACK Adjectives::Meanings::new_block
|
||||
@d ADJECTIVE_MEANING_LINGUISTICS_CALLBACK AdjectiveMeanings::new_block
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::new_block(adjective *adj) {
|
||||
void AdjectiveMeanings::new_block(adjective *adj) {
|
||||
adj->adjective_meanings.possible_meanings = NULL;
|
||||
adj->adjective_meanings.sorted_meanings = NULL;
|
||||
}
|
||||
|
@ -194,7 +203,7 @@ in the case of texts and table names.) It's convenient and costs little
|
|||
memory to keep the sorted list as a second linked list.
|
||||
|
||||
=
|
||||
adjective *Adjectives::Meanings::declare(adjective_meaning *am,
|
||||
adjective *AdjectiveMeanings::declare(adjective_meaning *am,
|
||||
wording W, int route) {
|
||||
adjective *aph = Adjectives::declare(W, NULL);
|
||||
adjective_meaning *aml = aph->adjective_meanings.possible_meanings;
|
||||
|
@ -213,14 +222,14 @@ and it can only be declared once. So every AM belongs to one and only one
|
|||
APH, which we can read off as follows:
|
||||
|
||||
=
|
||||
adjective *Adjectives::Meanings::get_aph_from_am(adjective_meaning *am) {
|
||||
adjective *AdjectiveMeanings::get_aph_from_am(adjective_meaning *am) {
|
||||
return am->owning_adjective;
|
||||
}
|
||||
|
||||
@ And here we log the unsorted meaning list.
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::log_meanings(adjective *aph) {
|
||||
void AdjectiveMeanings::log_meanings(adjective *aph) {
|
||||
adjective_meaning *am;
|
||||
int n;
|
||||
if (aph == NULL) { LOG("<null-APH>\n"); return; }
|
||||
|
@ -259,17 +268,17 @@ unsorted list, which is helpful since we may need to call this routine
|
|||
early in the run when sorting cannot yet be done.
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::applicable_to(adjective *aph, kind *K) {
|
||||
int AdjectiveMeanings::applicable_to(adjective *aph, kind *K) {
|
||||
if (aph) {
|
||||
adjective_meaning *am;
|
||||
for (am = aph->adjective_meanings.possible_meanings; am; am = am->next_meaning) {
|
||||
if (am->domain_infs == NULL) {
|
||||
if (am->setting_domain) @<Issue a problem for a circularity@>;
|
||||
am->setting_domain = TRUE;
|
||||
Adjectives::Meanings::set_definition_domain(am, TRUE);
|
||||
AdjectiveMeanings::set_definition_domain(am, TRUE);
|
||||
am->setting_domain = FALSE;
|
||||
}
|
||||
kind *am_kind = Adjectives::Meanings::get_domain(am);
|
||||
kind *am_kind = AdjectiveMeanings::get_domain(am);
|
||||
if (Kinds::Behaviour::is_object(am_kind)) {
|
||||
if (K == NULL) return TRUE;
|
||||
if (Kinds::Behaviour::is_object(K)) return TRUE;
|
||||
|
@ -300,18 +309,18 @@ Does a given APH have any interpretation as an enumerated property value,
|
|||
or an either/or property? If so we return the earliest known.
|
||||
|
||||
=
|
||||
instance *Adjectives::Meanings::has_ENUMERATIVE_meaning(adjective *aph) {
|
||||
instance *AdjectiveMeanings::has_ENUMERATIVE_meaning(adjective *aph) {
|
||||
adjective_meaning *am;
|
||||
for (am = aph->adjective_meanings.possible_meanings; am; am = am->next_meaning)
|
||||
if (am->adjective_form == ENUMERATIVE_KADJ)
|
||||
if (InstanceAdjectives::is_enumerative(am))
|
||||
return RETRIEVE_POINTER_instance(am->detailed_meaning);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
property *Adjectives::Meanings::has_EORP_meaning(adjective *aph, int *sense) {
|
||||
property *AdjectiveMeanings::has_EORP_meaning(adjective *aph, int *sense) {
|
||||
if (aph)
|
||||
for (adjective_meaning *am = aph->adjective_meanings.possible_meanings; am; am = am->next_meaning)
|
||||
if (am->adjective_form == EORP_KADJ) {
|
||||
if (Properties::EitherOr::is_either_or_adjective(am)) {
|
||||
if (sense) *sense = am->meaning_parity;
|
||||
return RETRIEVE_POINTER_property(am->detailed_meaning);
|
||||
}
|
||||
|
@ -335,7 +344,7 @@ sentence asserts a truth, not a falsity. It then calls the following
|
|||
routine, with |parity| equal to |TRUE|.
|
||||
|
||||
What happens is that the list of definitions for "fixed in place" is
|
||||
strictly checked in logical precedence order, and that |Adjectives::Meanings::assert| is
|
||||
strictly checked in logical precedence order, and that |AdjectiveMeanings::assert| is
|
||||
eventually called on the logically narrowest definition which the "ormolu
|
||||
clock" matches. (That will probably be the definition for the "fixed
|
||||
in place" either/or property for things, unless someone has given the
|
||||
|
@ -348,15 +357,15 @@ matched, and |FALSE| if there was no definition which applied, or if
|
|||
none of those which did could be asserted for it.
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::assert(adjective *aph, kind *kind_domain,
|
||||
int AdjectiveMeanings::assert(adjective *aph, kind *kind_domain,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
adjective_meaning *am;
|
||||
Adjectives::Meanings::sort(aph);
|
||||
AdjectiveMeanings::sort(aph);
|
||||
for (am = aph->adjective_meanings.sorted_meanings; am; am = am->next_sorted) {
|
||||
if (Adjectives::Meanings::domain_weak_match(kind_domain,
|
||||
Adjectives::Meanings::get_domain(am)) == FALSE) continue;
|
||||
if (Adjectives::Meanings::domain_subj_compare(infs_to_assert_on, am) == FALSE) continue;
|
||||
if (Adjectives::Meanings::assert_single(am, infs_to_assert_on, val_to_assert_on, parity)) return TRUE;
|
||||
if (AdjectiveMeanings::domain_weak_match(kind_domain,
|
||||
AdjectiveMeanings::get_domain(am)) == FALSE) continue;
|
||||
if (AdjectiveMeanings::domain_subj_compare(infs_to_assert_on, am) == FALSE) continue;
|
||||
if (AdjectiveMeanings::assert_single(am, infs_to_assert_on, val_to_assert_on, parity)) return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -367,32 +376,32 @@ After meanings have been declared, a typical APH will have a disordered
|
|||
sorts the possibles list into the sorted list.
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::sort(adjective *aph) {
|
||||
void AdjectiveMeanings::sort(adjective *aph) {
|
||||
if (aph == NULL) internal_error("tried to sort meanings for null APH");
|
||||
aph->adjective_meanings.sorted_meanings =
|
||||
Adjectives::Meanings::list_sort(aph->adjective_meanings.possible_meanings);
|
||||
AdjectiveMeanings::list_sort(aph->adjective_meanings.possible_meanings);
|
||||
}
|
||||
|
||||
@ And voil\`a, the result can be read here:
|
||||
|
||||
=
|
||||
adjective_meaning *Adjectives::Meanings::get_sorted_definition_list(adjective *aph) {
|
||||
adjective_meaning *AdjectiveMeanings::get_sorted_definition_list(adjective *aph) {
|
||||
return aph->adjective_meanings.sorted_meanings;
|
||||
}
|
||||
|
||||
@ Occasionally we just want one meaning:
|
||||
|
||||
=
|
||||
adjective_meaning *Adjectives::Meanings::first_meaning(adjective *aph) {
|
||||
adjective_meaning *AdjectiveMeanings::first_meaning(adjective *aph) {
|
||||
return aph->adjective_meanings.possible_meanings;
|
||||
}
|
||||
|
||||
adjective_meaning *Adjectives::Meanings::list_sort(adjective_meaning *unsorted_head) {
|
||||
adjective_meaning *AdjectiveMeanings::list_sort(adjective_meaning *unsorted_head) {
|
||||
adjective_meaning *sorted_head = NULL;
|
||||
adjective_meaning *am, *am2;
|
||||
for (am = unsorted_head; am; am = am->next_meaning)
|
||||
if (am->domain_infs == NULL)
|
||||
Adjectives::Meanings::set_definition_domain(am, TRUE);
|
||||
AdjectiveMeanings::set_definition_domain(am, TRUE);
|
||||
for (am = unsorted_head; am; am = am->next_meaning) {
|
||||
if (sorted_head == NULL) {
|
||||
sorted_head = am;
|
||||
|
@ -400,7 +409,7 @@ adjective_meaning *Adjectives::Meanings::list_sort(adjective_meaning *unsorted_h
|
|||
} else {
|
||||
adjective_meaning *lastdef = NULL;
|
||||
for (am2 = sorted_head; am2; am2 = am2->next_sorted) {
|
||||
if (Adjectives::Meanings::compare(am, am2) == 1) {
|
||||
if (AdjectiveMeanings::compare(am, am2) == 1) {
|
||||
if (lastdef == NULL) {
|
||||
sorted_head = am;
|
||||
am->next_sorted = am2;
|
||||
|
@ -425,10 +434,10 @@ adjective_meaning *Adjectives::Meanings::list_sort(adjective_meaning *unsorted_h
|
|||
@h Individual meanings.
|
||||
So you want to define a new meaning for an adjective? Here's the procedure:
|
||||
|
||||
(1) Call |Adjectives::Meanings::new| to create it. The |form| should
|
||||
(1) Call |AdjectiveMeanings::new| to create it. The |form| should
|
||||
be one of the |*_KADJ| constants, and the |details| should contain a pointer to
|
||||
the data structure it uses. The word range is used for indexing only.
|
||||
(2) Call |Adjectives::Meanings::declare| to associate it with a given
|
||||
(2) Call |AdjectiveMeanings::declare| to associate it with a given
|
||||
adjective name, and thus have it added to the possible meanings list of the
|
||||
appropriate APH.
|
||||
(3) Give it a domain of definition (see below).
|
||||
|
@ -436,7 +445,8 @@ appropriate APH.
|
|||
below) -- this makes coding what the adjective compiles to much easier.
|
||||
|
||||
=
|
||||
adjective_meaning *Adjectives::Meanings::new(int form, general_pointer details, wording W) {
|
||||
adjective_meaning *AdjectiveMeanings::new(adjective_meaning_family *family,
|
||||
general_pointer details, wording W) {
|
||||
adjective_meaning *am = CREATE(adjective_meaning);
|
||||
am->defined_at = current_sentence;
|
||||
am->adjective_index_text = W;
|
||||
|
@ -445,7 +455,7 @@ adjective_meaning *Adjectives::Meanings::new(int form, general_pointer details,
|
|||
am->next_sorted = NULL;
|
||||
am->domain_text = EMPTY_WORDING;
|
||||
am->domain_infs = NULL; am->domain_kind = NULL; am->setting_domain = FALSE;
|
||||
am->adjective_form = form;
|
||||
am->family = family;
|
||||
am->detailed_meaning = details;
|
||||
am->defined_already = FALSE;
|
||||
am->problems_thrown = 0;
|
||||
|
@ -463,13 +473,13 @@ adjective_meaning *Adjectives::Meanings::new(int form, general_pointer details,
|
|||
@ Negating an AM.
|
||||
If you want to define an adjective as the logical negation of an existing one,
|
||||
take any AM which has been through stages (1) to (4) and then apply
|
||||
|Adjectives::Meanings::negate| to create a new AM. Then use
|
||||
|Adjectives::Meanings::declare| to associate this with a (presumably
|
||||
|AdjectiveMeanings::negate| to create a new AM. Then use
|
||||
|AdjectiveMeanings::declare| to associate this with a (presumably
|
||||
different) name, but there's no need to specify its I6 schemas or its domain --
|
||||
those are inherited.
|
||||
|
||||
=
|
||||
adjective_meaning *Adjectives::Meanings::negate(adjective_meaning *am) {
|
||||
adjective_meaning *AdjectiveMeanings::negate(adjective_meaning *am) {
|
||||
adjective_meaning *neg = CREATE(adjective_meaning);
|
||||
neg->defined_at = current_sentence;
|
||||
neg->adjective_index_text = am->adjective_index_text;
|
||||
|
@ -478,7 +488,7 @@ adjective_meaning *Adjectives::Meanings::negate(adjective_meaning *am) {
|
|||
neg->next_sorted = NULL;
|
||||
neg->domain_text = am->domain_text;
|
||||
neg->domain_infs = am->domain_infs; neg->domain_kind = am->domain_kind;
|
||||
neg->adjective_form = am->adjective_form;
|
||||
neg->family = am->family;
|
||||
neg->detailed_meaning = am->detailed_meaning;
|
||||
neg->defined_already = FALSE;
|
||||
neg->problems_thrown = 0;
|
||||
|
@ -496,9 +506,9 @@ adjective_meaning *Adjectives::Meanings::negate(adjective_meaning *am) {
|
|||
return neg;
|
||||
}
|
||||
|
||||
int Adjectives::Meanings::get_form(adjective_meaning *am) {
|
||||
if (am == NULL) return -1;
|
||||
return am->adjective_form;
|
||||
adjective_meaning_family *AdjectiveMeanings::get_form(adjective_meaning *am) {
|
||||
if (am == NULL) return NULL;
|
||||
return am->family;
|
||||
}
|
||||
|
||||
@h The domain of validity.
|
||||
|
@ -524,7 +534,7 @@ As this last example shows, two domains can be completely disjoint and still
|
|||
make a weak match.
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::domain_weak_match(kind *K1, kind *K2) {
|
||||
int AdjectiveMeanings::domain_weak_match(kind *K1, kind *K2) {
|
||||
if (RTKinds::weak_id(K1) == RTKinds::weak_id(K2))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
|
@ -534,7 +544,7 @@ int Adjectives::Meanings::domain_weak_match(kind *K1, kind *K2) {
|
|||
within the domain of an adjective meaning.
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::domain_subj_compare(inference_subject *infs, adjective_meaning *am) {
|
||||
int AdjectiveMeanings::domain_subj_compare(inference_subject *infs, adjective_meaning *am) {
|
||||
instance *I = InstanceSubjects::to_object_instance(infs);
|
||||
if (I == NULL) return TRUE;
|
||||
if (am->domain_infs == KindSubjects::from_kind(K_object)) return TRUE;
|
||||
|
@ -563,13 +573,13 @@ over specific constructed kinds.
|
|||
To set the domain, call exactly one of the following three routines:
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::set_domain_text(adjective_meaning *am, wording W) {
|
||||
void AdjectiveMeanings::set_domain_text(adjective_meaning *am, wording W) {
|
||||
am->domain_infs = NULL; am->domain_kind = NULL;
|
||||
am->domain_text = W;
|
||||
Adjectives::Meanings::set_definition_domain(am, TRUE);
|
||||
AdjectiveMeanings::set_definition_domain(am, TRUE);
|
||||
}
|
||||
|
||||
void Adjectives::Meanings::set_domain_from_instance(adjective_meaning *am,
|
||||
void AdjectiveMeanings::set_domain_from_instance(adjective_meaning *am,
|
||||
instance *I) {
|
||||
if (I == NULL) {
|
||||
am->domain_infs = KindSubjects::from_kind(K_object);
|
||||
|
@ -586,7 +596,7 @@ void Adjectives::Meanings::set_domain_from_instance(adjective_meaning *am,
|
|||
disambiguation is used when applying adjectives to objects.
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::set_domain_from_kind(adjective_meaning *am, kind *K) {
|
||||
void AdjectiveMeanings::set_domain_from_kind(adjective_meaning *am, kind *K) {
|
||||
if ((K == NULL) || (Kinds::Behaviour::is_object(K))) K = K_object;
|
||||
am->domain_infs = KindSubjects::from_kind(K);
|
||||
am->domain_kind = K;
|
||||
|
@ -596,13 +606,13 @@ void Adjectives::Meanings::set_domain_from_kind(adjective_meaning *am, kind *K)
|
|||
@ And we can read the main domain thus:
|
||||
|
||||
=
|
||||
kind *Adjectives::Meanings::get_domain(adjective_meaning *am) {
|
||||
kind *AdjectiveMeanings::get_domain(adjective_meaning *am) {
|
||||
if (am->domain_infs == NULL) return NULL;
|
||||
return am->domain_kind;
|
||||
}
|
||||
|
||||
kind *Adjectives::Meanings::get_domain_forcing(adjective_meaning *am) {
|
||||
Adjectives::Meanings::set_definition_domain(am, TRUE);
|
||||
kind *AdjectiveMeanings::get_domain_forcing(adjective_meaning *am) {
|
||||
AdjectiveMeanings::set_definition_domain(am, TRUE);
|
||||
if (am->domain_infs == NULL) return NULL;
|
||||
return am->domain_kind;
|
||||
}
|
||||
|
@ -613,7 +623,7 @@ lazy evaluation trick -- the routine is called just before the domain is
|
|||
actually needed.
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::set_definition_domain(adjective_meaning *am, int early) {
|
||||
void AdjectiveMeanings::set_definition_domain(adjective_meaning *am, int early) {
|
||||
if (am->domain_infs) return;
|
||||
current_sentence = am->defined_at;
|
||||
if (Wordings::empty(am->domain_text)) internal_error("undeclared domain kind for AM");
|
||||
|
@ -735,7 +745,7 @@ between them.
|
|||
Unlike our weak domain tests above, this is a strict test.
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::compare(adjective_meaning *am1, adjective_meaning *am2) {
|
||||
int AdjectiveMeanings::compare(adjective_meaning *am1, adjective_meaning *am2) {
|
||||
if (am1 == am2) return 0;
|
||||
if ((am1->domain_infs) && (am2->domain_infs == NULL)) return 1;
|
||||
if ((am1->domain_infs == NULL) && (am2->domain_infs)) return -1;
|
||||
|
@ -767,8 +777,8 @@ author's source text.)
|
|||
@<Worry about definitions of the same adjective on the same domain@> =
|
||||
if ((Wordings::nonempty(Node::get_text(am1->defined_at))) &&
|
||||
(Wordings::nonempty(Node::get_text(am2->defined_at))) &&
|
||||
(am1->adjective_form != ENUMERATIVE_KADJ) &&
|
||||
(am2->adjective_form != ENUMERATIVE_KADJ)) {
|
||||
(InstanceAdjectives::is_enumerative(am1) == FALSE) &&
|
||||
(InstanceAdjectives::is_enumerative(am2) == FALSE)) {
|
||||
inform_extension *ef1 =
|
||||
Extensions::corresponding_to(
|
||||
Lexer::file_of_origin(Wordings::first_wn(Node::get_text(am1->defined_at))));
|
||||
|
@ -840,9 +850,9 @@ be run-time type-checking code to apply. In other cases, the provider
|
|||
can choose to go via a support routine or not.
|
||||
|
||||
=
|
||||
i6_schema *Adjectives::Meanings::set_i6_schema(adjective_meaning *am,
|
||||
i6_schema *AdjectiveMeanings::set_i6_schema(adjective_meaning *am,
|
||||
int T, int via_support) {
|
||||
kind *K = Adjectives::Meanings::get_domain(am);
|
||||
kind *K = AdjectiveMeanings::get_domain(am);
|
||||
if (K == NULL) K = K_object;
|
||||
if (Kinds::Behaviour::is_object(K)) via_support = TRUE;
|
||||
am->task_via_support_routine[T] = via_support;
|
||||
|
@ -860,16 +870,16 @@ run-time, we return |NULL| as our schema, and the code-generator will use
|
|||
that to issue a suitable problem message.
|
||||
|
||||
=
|
||||
i6_schema *Adjectives::Meanings::get_i6_schema(adjective *aph,
|
||||
i6_schema *AdjectiveMeanings::get_i6_schema(adjective *aph,
|
||||
kind *kind_domain, int T) {
|
||||
adjective_meaning *am;
|
||||
if (kind_domain == NULL) kind_domain = K_object;
|
||||
Adjectives::Meanings::sort(aph);
|
||||
AdjectiveMeanings::sort(aph);
|
||||
for (am = aph->adjective_meanings.sorted_meanings; am; am = am->next_sorted) {
|
||||
kind *am_kind = Adjectives::Meanings::get_domain(am);
|
||||
if (am_kind == NULL) Adjectives::Meanings::set_definition_domain(am, FALSE);
|
||||
if (Adjectives::Meanings::domain_weak_match(kind_domain, am_kind) == FALSE) continue;
|
||||
Adjectives::Meanings::compiling_soon(am, T);
|
||||
kind *am_kind = AdjectiveMeanings::get_domain(am);
|
||||
if (am_kind == NULL) AdjectiveMeanings::set_definition_domain(am, FALSE);
|
||||
if (AdjectiveMeanings::domain_weak_match(kind_domain, am_kind) == FALSE) continue;
|
||||
AdjectiveMeanings::compiling_soon(am, T);
|
||||
switch (am->task_via_support_routine[T]) {
|
||||
case FALSE: return &(am->i6s_for_runtime_task[T]);
|
||||
case TRUE:
|
||||
|
@ -896,7 +906,7 @@ negation does not, and so must use those of the original.
|
|||
case NOW_ADJECTIVE_FALSE_TASK: task = NOW_ADJECTIVE_TRUE_TASK; break;
|
||||
}
|
||||
}
|
||||
inter_name *iname = Adjectives::Meanings::iname(use_aph, task, RTKinds::weak_id(am_kind));
|
||||
inter_name *iname = AdjectiveMeanings::iname(use_aph, task, RTKinds::weak_id(am_kind));
|
||||
Calculus::Schemas::modify(&(am->i6s_to_transfer_to_SR[T]), "*=-(%s%n(*1))",
|
||||
negation_operator, iname);
|
||||
|
||||
|
@ -907,20 +917,20 @@ don't know which routine to expand out. The convention is: a meaning for
|
|||
objects, if there is one; otherwise the first-declared meaning.
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::write_adjective_test_routine(value_holster *VH,
|
||||
int AdjectiveMeanings::write_adjective_test_routine(value_holster *VH,
|
||||
adjective *aph) {
|
||||
i6_schema *sch;
|
||||
int weak_id = RTKinds::weak_id(K_object);
|
||||
sch = Adjectives::Meanings::get_i6_schema(aph, NULL,
|
||||
sch = AdjectiveMeanings::get_i6_schema(aph, NULL,
|
||||
TEST_ADJECTIVE_TASK);
|
||||
if (sch == NULL) {
|
||||
if (aph->adjective_meanings.possible_meanings == NULL) return FALSE;
|
||||
kind *am_kind =
|
||||
Adjectives::Meanings::get_domain(aph->adjective_meanings.possible_meanings);
|
||||
AdjectiveMeanings::get_domain(aph->adjective_meanings.possible_meanings);
|
||||
if (am_kind == NULL) return FALSE;
|
||||
weak_id = RTKinds::weak_id(am_kind);
|
||||
}
|
||||
Produce::val_iname(Emit::tree(), K_value, Adjectives::Meanings::iname(aph, TEST_ADJECTIVE_TASK, weak_id));
|
||||
Produce::val_iname(Emit::tree(), K_value, AdjectiveMeanings::iname(aph, TEST_ADJECTIVE_TASK, weak_id));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -928,19 +938,19 @@ int Adjectives::Meanings::write_adjective_test_routine(value_holster *VH,
|
|||
task.
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::pass_task_to_support_routine(adjective_meaning *am,
|
||||
void AdjectiveMeanings::pass_task_to_support_routine(adjective_meaning *am,
|
||||
int T) {
|
||||
Adjectives::Meanings::set_i6_schema(am, T, TRUE);
|
||||
AdjectiveMeanings::set_i6_schema(am, T, TRUE);
|
||||
}
|
||||
|
||||
@ Some kinds of adjective find it useful to do some preparation work just
|
||||
before first compilation, but only once. For those, the ready flag is available:
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::get_ready_flag(adjective_meaning *am) {
|
||||
int AdjectiveMeanings::get_ready_flag(adjective_meaning *am) {
|
||||
return am->am_ready_flag;
|
||||
}
|
||||
void Adjectives::Meanings::set_ready_flag(adjective_meaning *am) {
|
||||
void AdjectiveMeanings::set_ready_flag(adjective_meaning *am) {
|
||||
am->am_ready_flag = TRUE;
|
||||
}
|
||||
|
||||
|
@ -951,11 +961,11 @@ The following utility is used to loop through the sorted meaning list,
|
|||
skipping over any which have been dealt with already.
|
||||
|
||||
=
|
||||
adjective_meaning *Adjectives::Meanings::list_next_domain_kind(adjective_meaning *am, kind **K, int T) {
|
||||
while ((am) && ((am->defined_already) || (Adjectives::Meanings::compilation_possible(am, T) == FALSE)))
|
||||
adjective_meaning *AdjectiveMeanings::list_next_domain_kind(adjective_meaning *am, kind **K, int T) {
|
||||
while ((am) && ((am->defined_already) || (AdjectiveMeanings::compilation_possible(am, T) == FALSE)))
|
||||
am = am->next_sorted;
|
||||
if (am == NULL) return NULL;
|
||||
*K = Adjectives::Meanings::get_domain(am);
|
||||
*K = AdjectiveMeanings::get_domain(am);
|
||||
return am->next_sorted;
|
||||
}
|
||||
|
||||
|
@ -967,7 +977,7 @@ routine might handle "detailed" for rulebooks, and another might handle
|
|||
many AMs.
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::compile_support_code(void) {
|
||||
void AdjectiveMeanings::compile_support_code(void) {
|
||||
@<Ensure, just in case, that domains exist and are sorted on@>;
|
||||
int T;
|
||||
for (T=1; T<=NO_ADJECTIVE_TASKS; T++) {
|
||||
|
@ -978,7 +988,7 @@ void Adjectives::Meanings::compile_support_code(void) {
|
|||
am->defined_already = FALSE;
|
||||
for (am = aph->adjective_meanings.sorted_meanings; am; ) {
|
||||
kind *K = NULL;
|
||||
am = Adjectives::Meanings::list_next_domain_kind(am, &K, T);
|
||||
am = AdjectiveMeanings::list_next_domain_kind(am, &K, T);
|
||||
if (K)
|
||||
@<Compile adjective definition for this atomic kind of value@>;
|
||||
}
|
||||
|
@ -995,10 +1005,10 @@ known in order to sort.
|
|||
LOOP_OVER(aph, adjective) {
|
||||
adjective_meaning *am;
|
||||
for (am = aph->adjective_meanings.possible_meanings; am; am = am->next_meaning) {
|
||||
Adjectives::Meanings::set_definition_domain(am, FALSE);
|
||||
AdjectiveMeanings::set_definition_domain(am, FALSE);
|
||||
am->defined_already = FALSE;
|
||||
}
|
||||
Adjectives::Meanings::sort(aph);
|
||||
AdjectiveMeanings::sort(aph);
|
||||
}
|
||||
|
||||
@ The following is a standard way to compile a one-off routine.
|
||||
|
@ -1008,7 +1018,7 @@ known in order to sort.
|
|||
LOGIF(VARIABLE_CREATIONS, "Compiling support code for %W applying to %u, task %d\n",
|
||||
W, K, T);
|
||||
|
||||
inter_name *iname = Adjectives::Meanings::iname(aph, T, RTKinds::weak_id(K));
|
||||
inter_name *iname = AdjectiveMeanings::iname(aph, T, RTKinds::weak_id(K));
|
||||
packaging_state save = Routines::begin(iname);
|
||||
@<Add an it-variable to represent the value or object in the domain@>;
|
||||
|
||||
|
@ -1023,7 +1033,7 @@ known in order to sort.
|
|||
if (problem_count == 0) {
|
||||
local_variable *it_lv = LocalVariables::it_variable();
|
||||
inter_symbol *it_s = LocalVariables::declare_this(it_lv, FALSE, 8);
|
||||
Adjectives::Meanings::list_compile(aph->adjective_meanings.sorted_meanings, Frames::current_stack_frame(), K, T, it_s);
|
||||
AdjectiveMeanings::list_compile(aph->adjective_meanings.sorted_meanings, Frames::current_stack_frame(), K, T, it_s);
|
||||
}
|
||||
Produce::rfalse(Emit::tree());
|
||||
|
||||
|
@ -1059,8 +1069,8 @@ wasted allocating memory and copying the block value first.)
|
|||
kind *add_K = K_number;
|
||||
adjective_meaning *am;
|
||||
for (am = aph->adjective_meanings.sorted_meanings; am; am = am->next_sorted)
|
||||
if ((am->adjective_form != I6_ROUTINE_KADJ) &&
|
||||
(Adjectives::Meanings::domain_weak_match(K, Adjectives::Meanings::get_domain(am))))
|
||||
if ((Phrases::RawPhrasal::is_by_Inter_function(am) == FALSE) &&
|
||||
(AdjectiveMeanings::domain_weak_match(K, AdjectiveMeanings::get_domain(am))))
|
||||
add_K = K;
|
||||
|
||||
LocalVariables::add_pronoun(Frames::current_stack_frame(), EMPTY_WORDING, add_K);
|
||||
|
@ -1072,12 +1082,12 @@ test at run-time. In practice, at present the only weak domain which might
|
|||
have multiple definitions is "object", but that may change.
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::list_compile(adjective_meaning *list_head,
|
||||
void AdjectiveMeanings::list_compile(adjective_meaning *list_head,
|
||||
ph_stack_frame *phsf, kind *K, int T, inter_symbol *t0_s) {
|
||||
adjective_meaning *am;
|
||||
for (am = list_head; am; am = am->next_sorted)
|
||||
if ((Adjectives::Meanings::compilation_possible(am, T)) &&
|
||||
(Adjectives::Meanings::domain_weak_match(K, Adjectives::Meanings::get_domain(am)))) {
|
||||
if ((AdjectiveMeanings::compilation_possible(am, T)) &&
|
||||
(AdjectiveMeanings::domain_weak_match(K, AdjectiveMeanings::get_domain(am)))) {
|
||||
current_sentence = am->defined_at;
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
|
@ -1090,7 +1100,7 @@ void Adjectives::Meanings::list_compile(adjective_meaning *list_head,
|
|||
Produce::inv_primitive(Emit::tree(), NOT_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
}
|
||||
Adjectives::Meanings::emit_meaning(am, T, phsf);
|
||||
AdjectiveMeanings::emit_meaning(am, T, phsf);
|
||||
am->defined_already = TRUE;
|
||||
if ((am->meaning_parity == FALSE) && (T == TEST_ADJECTIVE_TASK)) {
|
||||
Produce::up(Emit::tree());
|
||||
|
@ -1127,43 +1137,43 @@ that it was "unless" (a negative sense); or $0$, meaning that instead
|
|||
of a condition, a rule was supplied. (Most kinds of adjective will only
|
||||
claim if the sense is $1$; some never claim at all.)
|
||||
|
||||
@e PARSE_ADJM_MTID
|
||||
|
||||
=
|
||||
adjective_meaning *Adjectives::Meanings::parse(parse_node *q,
|
||||
INT_METHOD_TYPE(PARSE_ADJM_MTID, adjective_meaning_family *f,
|
||||
adjective_meaning **result, parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW)
|
||||
|
||||
adjective_meaning *AdjectiveMeanings::parse(parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
adjective_meaning *am = NULL;
|
||||
if (am == NULL) am = Properties::EitherOr::ADJ_parse(q, sense, AW, DNW, CONW, CALLW);
|
||||
if (am == NULL) am = InstanceAdjectives::parse(q, sense, AW, DNW, CONW, CALLW);
|
||||
if (am == NULL) am = Properties::Measurement::ADJ_parse(q, sense, AW, DNW, CONW, CALLW);
|
||||
if (am == NULL) am = Phrases::RawCondition::ADJ_parse(q, sense, AW, DNW, CONW, CALLW);
|
||||
if (am == NULL) am = Phrases::RawPhrasal::ADJ_parse(q, sense, AW, DNW, CONW, CALLW);
|
||||
if (am == NULL) am = Phrases::Phrasal::ADJ_parse(q, sense, AW, DNW, CONW, CALLW);
|
||||
if (am == NULL) am = Phrases::Condition::ADJ_parse(q, sense, AW, DNW, CONW, CALLW);
|
||||
return am;
|
||||
for (int priority = 0; priority < 10; priority++) {
|
||||
adjective_meaning_family *f;
|
||||
LOOP_OVER(f, adjective_meaning_family)
|
||||
if (f->parsing_priority == priority)
|
||||
@<Try the f family@>;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@<Try the f family@> =
|
||||
adjective_meaning *am = NULL;
|
||||
int rv = FALSE;
|
||||
INT_METHOD_CALL(rv, f, PARSE_ADJM_MTID, &am, q, sense, AW, DNW, CONW, CALLW);
|
||||
if (rv) return am;
|
||||
|
||||
@ 2. |*_KADJ_compiling_soon|. This warns the adjective that it will shortly be
|
||||
needed in compilation, that is, that code will soon be compiled which uses it.
|
||||
This advance warning is an opportunity to compile a schema for the adjective
|
||||
at the last minute, but there is no obligation. There is also no return value.
|
||||
|
||||
@e COMPILING_SOON_ADJM_MTID
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::compiling_soon(adjective_meaning *am, int T) {
|
||||
switch (am->adjective_form) {
|
||||
case CONDITION_KADJ: Phrases::Condition::ADJ_compiling_soon(am,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T); break;
|
||||
case I6_CONDITION_KADJ: Phrases::RawCondition::ADJ_compiling_soon(am,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T); break;
|
||||
case I6_ROUTINE_KADJ: Phrases::RawPhrasal::ADJ_compiling_soon(am,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T); break;
|
||||
case PHRASE_KADJ: Phrases::Phrasal::ADJ_compiling_soon(am,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T); break;
|
||||
case MEASUREMENT_KADJ: Properties::Measurement::ADJ_compiling_soon(am,
|
||||
RETRIEVE_POINTER_measurement_definition(am->detailed_meaning), T); break;
|
||||
case ENUMERATIVE_KADJ: InstanceAdjectives::compiling_soon(am,
|
||||
RETRIEVE_POINTER_instance(am->detailed_meaning), T); break;
|
||||
case EORP_KADJ: Properties::EitherOr::ADJ_compiling_soon(am,
|
||||
RETRIEVE_POINTER_property(am->detailed_meaning), T); break;
|
||||
}
|
||||
VOID_METHOD_TYPE(COMPILING_SOON_ADJM_MTID, adjective_meaning_family *f,
|
||||
adjective_meaning *am, int T)
|
||||
|
||||
void AdjectiveMeanings::compiling_soon(adjective_meaning *am, int T) {
|
||||
VOID_METHOD_CALL(am->family, COMPILING_SOON_ADJM_MTID, am, T);
|
||||
}
|
||||
|
||||
@ 3. |*_KADJ_compile|. We should now either compile code which, in the
|
||||
|
@ -1174,36 +1184,26 @@ tell Inform that the task is impossible.
|
|||
Note that if an adjective has defined a schema to handle the task, then its
|
||||
|*_KADJ_compile| is not needed and not consulted.
|
||||
|
||||
@e COMPILE_ADJM_MTID
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::emit_meaning(adjective_meaning *am, int T, ph_stack_frame *phsf) {
|
||||
return Adjectives::Meanings::compile_inner(am, T, TRUE, phsf);
|
||||
int AdjectiveMeanings::emit_meaning(adjective_meaning *am, int T, ph_stack_frame *phsf) {
|
||||
return AdjectiveMeanings::compile_inner(am, T, TRUE, phsf);
|
||||
}
|
||||
|
||||
int Adjectives::Meanings::compilation_possible(adjective_meaning *am, int T) {
|
||||
return Adjectives::Meanings::compile_inner(am, T, FALSE, NULL);
|
||||
int AdjectiveMeanings::compilation_possible(adjective_meaning *am, int T) {
|
||||
return AdjectiveMeanings::compile_inner(am, T, FALSE, NULL);
|
||||
}
|
||||
|
||||
int Adjectives::Meanings::compile_inner(adjective_meaning *am, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
Adjectives::Meanings::compiling_soon(am, T);
|
||||
INT_METHOD_TYPE(COMPILE_ADJM_MTID, adjective_meaning_family *f,
|
||||
adjective_meaning *am, int T, int emit_flag, ph_stack_frame *phsf)
|
||||
|
||||
int AdjectiveMeanings::compile_inner(adjective_meaning *am, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
AdjectiveMeanings::compiling_soon(am, T);
|
||||
@<Use the I6 schema instead to compile the task, if one exists@>;
|
||||
switch (am->adjective_form) {
|
||||
case CONDITION_KADJ: return Phrases::Condition::ADJ_compile(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T, emit_flag, phsf);
|
||||
case I6_ROUTINE_KADJ: return Phrases::RawPhrasal::ADJ_compile(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T, emit_flag, phsf);
|
||||
case I6_CONDITION_KADJ: return Phrases::RawCondition::ADJ_compile(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T, emit_flag, phsf);
|
||||
case PHRASE_KADJ: return Phrases::Phrasal::ADJ_compile(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning), T, emit_flag, phsf);
|
||||
case MEASUREMENT_KADJ: return Properties::Measurement::ADJ_compile(
|
||||
RETRIEVE_POINTER_measurement_definition(am->detailed_meaning), T, emit_flag, phsf);
|
||||
case ENUMERATIVE_KADJ: return InstanceAdjectives::compile(
|
||||
RETRIEVE_POINTER_instance(am->detailed_meaning), T, emit_flag, phsf);
|
||||
case EORP_KADJ: return Properties::EitherOr::ADJ_compile(
|
||||
RETRIEVE_POINTER_property(am->detailed_meaning), T, emit_flag, phsf);
|
||||
}
|
||||
internal_error("unknown KADJ code");
|
||||
return FALSE;
|
||||
int rv = FALSE;
|
||||
INT_METHOD_CALL(rv, am->family, COMPILE_ADJM_MTID, am, T, emit_flag, phsf);
|
||||
return rv;
|
||||
}
|
||||
|
||||
@ We expand the I6 schema, placing the "it" variable -- a nameless call
|
||||
|
@ -1226,37 +1226,22 @@ the adjective will hold (or not hold, according to |parity|) for the given
|
|||
object or value; or return |FALSE| to tell Inform that this cannot be
|
||||
asserted, which will trigger a problem message.
|
||||
|
||||
@e ASSERT_ADJM_MTID
|
||||
|
||||
=
|
||||
int Adjectives::Meanings::assert_single(adjective_meaning *am, inference_subject *infs_to_assert_on,
|
||||
parse_node *val_to_assert_on, int parity) {
|
||||
INT_METHOD_TYPE(ASSERT_ADJM_MTID, adjective_meaning_family *f,
|
||||
adjective_meaning *am, inference_subject *infs_to_assert_on,
|
||||
parse_node *val_to_assert_on, int parity)
|
||||
|
||||
int AdjectiveMeanings::assert_single(adjective_meaning *am,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
if (am->meaning_parity == FALSE) {
|
||||
am = am->am_negated_from; parity = (parity)?FALSE:TRUE;
|
||||
}
|
||||
switch (am->adjective_form) {
|
||||
case CONDITION_KADJ: return Phrases::Condition::ADJ_assert(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning),
|
||||
infs_to_assert_on, val_to_assert_on, parity);
|
||||
case I6_CONDITION_KADJ: return Phrases::RawCondition::ADJ_assert(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning),
|
||||
infs_to_assert_on, val_to_assert_on, parity);
|
||||
case I6_ROUTINE_KADJ: return Phrases::RawPhrasal::ADJ_assert(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning),
|
||||
infs_to_assert_on, val_to_assert_on, parity);
|
||||
case PHRASE_KADJ: return Phrases::Phrasal::ADJ_assert(
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning),
|
||||
infs_to_assert_on, val_to_assert_on, parity);
|
||||
case MEASUREMENT_KADJ: return Properties::Measurement::ADJ_assert(
|
||||
RETRIEVE_POINTER_measurement_definition(am->detailed_meaning),
|
||||
infs_to_assert_on, val_to_assert_on, parity);
|
||||
case ENUMERATIVE_KADJ: return InstanceAdjectives::assert(
|
||||
RETRIEVE_POINTER_instance(am->detailed_meaning),
|
||||
infs_to_assert_on, val_to_assert_on, parity);
|
||||
case EORP_KADJ: return Properties::EitherOr::ADJ_assert(
|
||||
RETRIEVE_POINTER_property(am->detailed_meaning),
|
||||
infs_to_assert_on, NULL, parity);
|
||||
}
|
||||
internal_error("unknown KADJ code");
|
||||
return FALSE;
|
||||
int rv = FALSE;
|
||||
INT_METHOD_CALL(rv, am->family, ASSERT_ADJM_MTID, am, infs_to_assert_on,
|
||||
val_to_assert_on, parity);
|
||||
return rv;
|
||||
}
|
||||
|
||||
@ 5. |*_KADJ_index|. This should print a description of the adjective to the
|
||||
|
@ -1267,31 +1252,20 @@ AM was made as a negation of something else.
|
|||
Note also that if the AM was defined with any indexing text then that will
|
||||
be printed if the routine does nothing better.
|
||||
|
||||
@e INDEX_ADJM_MTID
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::print_to_index(OUTPUT_STREAM, adjective_meaning *am) {
|
||||
int rv;
|
||||
INT_METHOD_TYPE(INDEX_ADJM_MTID, adjective_meaning_family *f, text_stream *OUT,
|
||||
adjective_meaning *am)
|
||||
|
||||
void AdjectiveMeanings::print_to_index(OUTPUT_STREAM, adjective_meaning *am) {
|
||||
@<Index the domain of validity of the AM@>;
|
||||
if (am->am_negated_from) {
|
||||
wording W = Adjectives::get_nominative_singular(am->am_negated_from->owning_adjective);
|
||||
WRITE(" opposite of </i>%+W<i>", W);
|
||||
} else {
|
||||
switch (am->adjective_form) {
|
||||
case CONDITION_KADJ: rv = Phrases::Condition::ADJ_index(OUT,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning)); break;
|
||||
case I6_CONDITION_KADJ: rv = Phrases::RawCondition::ADJ_index(OUT,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning)); break;
|
||||
case I6_ROUTINE_KADJ: rv = Phrases::RawPhrasal::ADJ_index(OUT,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning)); break;
|
||||
case PHRASE_KADJ: rv = Phrases::Phrasal::ADJ_index(OUT,
|
||||
RETRIEVE_POINTER_definition(am->detailed_meaning)); break;
|
||||
case MEASUREMENT_KADJ: rv = Properties::Measurement::ADJ_index(OUT,
|
||||
RETRIEVE_POINTER_measurement_definition(am->detailed_meaning)); break;
|
||||
case ENUMERATIVE_KADJ: rv = IXInstances::as_adjective(OUT,
|
||||
RETRIEVE_POINTER_instance(am->detailed_meaning)); break;
|
||||
case EORP_KADJ: rv = Properties::EitherOr::ADJ_index(OUT,
|
||||
RETRIEVE_POINTER_property(am->detailed_meaning)); break;
|
||||
default: rv = FALSE; break;
|
||||
}
|
||||
int rv = FALSE;
|
||||
INT_METHOD_CALL(rv, am->family, INDEX_ADJM_MTID, OUT, am);
|
||||
if ((rv == FALSE) && (Wordings::nonempty(am->adjective_index_text)))
|
||||
WRITE("%+W", am->adjective_index_text);
|
||||
}
|
||||
|
@ -1326,7 +1300,7 @@ prefaced "(of a rulebook)", "(of an activity)", and so on.
|
|||
@ Compiling to:
|
||||
|
||||
=
|
||||
void Adjectives::Meanings::agreements(void) {
|
||||
void AdjectiveMeanings::agreements(void) {
|
||||
if (Projects::get_language_of_play(Task::project()) == DefaultLanguage::get(NULL)) return;
|
||||
adjective *aph;
|
||||
LOOP_OVER(aph, adjective) {
|
||||
|
@ -1448,7 +1422,7 @@ void Adjectives::Meanings::agreements(void) {
|
|||
}
|
||||
}
|
||||
|
||||
void Adjectives::Meanings::emit(adjective *aph) {
|
||||
void AdjectiveMeanings::emit(adjective *aph) {
|
||||
Produce::inv_call_iname(Emit::tree(), aph->adjective_compilation.aph_iname);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(PRIOR_NAMED_NOUN_HL));
|
||||
|
|
|
@ -46,8 +46,8 @@ void AdjectivalPredicates::log(up_family *self, OUTPUT_STREAM, unary_predicate *
|
|||
|
||||
void AdjectivalPredicates::infer_kind(up_family *self, unary_predicate *up, kind **K) {
|
||||
adjective *aph = AdjectivalPredicates::to_adjective(up);
|
||||
adjective_meaning *am = Adjectives::Meanings::first_meaning(aph);
|
||||
kind *D = Adjectives::Meanings::get_domain(am);
|
||||
adjective_meaning *am = AdjectiveMeanings::first_meaning(aph);
|
||||
kind *D = AdjectiveMeanings::get_domain(am);
|
||||
if (D) *K = D;
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ int AdjectivalPredicates::typecheck(up_family *self, unary_predicate *up,
|
|||
pcalc_prop *prop, variable_type_assignment *vta, tc_problem_kit *tck) {
|
||||
adjective *aph = AdjectivalPredicates::to_adjective(up);
|
||||
kind *K = Propositions::Checker::kind_of_term(&(prop->terms[0]), vta, tck);
|
||||
if ((aph) && (Adjectives::Meanings::applicable_to(aph, K) == FALSE)) {
|
||||
if ((aph) && (AdjectiveMeanings::applicable_to(aph, K) == FALSE)) {
|
||||
wording W = Adjectives::get_nominative_singular(aph);
|
||||
if (tck->log_to_I6_text) LOG("Adjective '%W' undefined on %u\n", W, K);
|
||||
Propositions::Checker::problem(UnaryMisapplied_CALCERROR,
|
||||
|
@ -68,7 +68,7 @@ int AdjectivalPredicates::typecheck(up_family *self, unary_predicate *up,
|
|||
@ Next, asserting $adjective(t)$. We know that $t$ evaluates to a kind
|
||||
of value over which $adjective$ is defined, or the proposition would
|
||||
not have survived type-checking. But only some adjectives can be asserted;
|
||||
"open" can, but "visible" can't, for instance. |Adjectives::Meanings::assert| returns a
|
||||
"open" can, but "visible" can't, for instance. |AdjectiveMeanings::assert| returns a
|
||||
success flag.
|
||||
|
||||
=
|
||||
|
@ -95,15 +95,15 @@ void AdjectivalPredicates::assert(up_family *self, unary_predicate *up,
|
|||
if (domain_of_definition == NULL)
|
||||
domain_of_definition = Node::get_kind_of_value(ots);
|
||||
|
||||
if (ox) found = Adjectives::Meanings::assert(aph, domain_of_definition, ox, NULL, parity);
|
||||
else found = Adjectives::Meanings::assert(aph, domain_of_definition, NULL, ots, parity);
|
||||
if (ox) found = AdjectiveMeanings::assert(aph, domain_of_definition, ox, NULL, parity);
|
||||
else found = AdjectiveMeanings::assert(aph, domain_of_definition, NULL, ots, parity);
|
||||
|
||||
if (found == FALSE) Assert::issue_couldnt_problem(aph, parity);
|
||||
}
|
||||
|
||||
int AdjectivalPredicates::testable(up_family *self, unary_predicate *up) {
|
||||
adjective *aph = AdjectivalPredicates::to_adjective(up);
|
||||
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
|
||||
property *prn = AdjectiveMeanings::has_EORP_meaning(aph, NULL);
|
||||
if (prn == NULL) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ int AdjectivalPredicates::test(up_family *self, unary_predicate *up,
|
|||
TERM_DOMAIN_CALCULUS_TYPE *about) {
|
||||
adjective *aph = AdjectivalPredicates::to_adjective(up);
|
||||
int sense = AdjectivalPredicates::parity(up);
|
||||
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
|
||||
property *prn = AdjectiveMeanings::has_EORP_meaning(aph, NULL);
|
||||
if (prn) {
|
||||
possession_marker *adj = Properties::get_possession_marker(prn);
|
||||
if (sense) {
|
||||
|
@ -138,7 +138,7 @@ void AdjectivalPredicates::get_schema(up_family *self, int task, unary_predicate
|
|||
case NOW_ATOM_FALSE_TASK: atask = NOW_ADJECTIVE_FALSE_TASK; break;
|
||||
}
|
||||
|
||||
asch->schema = Adjectives::Meanings::get_i6_schema(aph, K, atask);
|
||||
asch->schema = AdjectiveMeanings::get_i6_schema(aph, K, atask);
|
||||
}
|
||||
|
||||
@ Access:
|
||||
|
|
|
@ -20,6 +20,7 @@ DECLARE_CLASS(compile_task_data)
|
|||
|
||||
@e adjective_iname_holder_CLASS
|
||||
@e adjective_meaning_CLASS
|
||||
@e adjective_meaning_family_CLASS
|
||||
@e application_CLASS
|
||||
@e by_routine_bp_data_CLASS
|
||||
@e equivalence_bp_data_CLASS
|
||||
|
@ -36,6 +37,7 @@ DECLARE_CLASS(compile_task_data)
|
|||
=
|
||||
DECLARE_CLASS(adjective_iname_holder)
|
||||
DECLARE_CLASS(adjective_meaning)
|
||||
DECLARE_CLASS(adjective_meaning_family)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(application, 100)
|
||||
DECLARE_CLASS(generalisation)
|
||||
DECLARE_CLASS(by_routine_bp_data)
|
||||
|
|
|
@ -232,7 +232,7 @@ so on. Those absolute basics are made here.
|
|||
BENCH_IF(parsing_plugin, PL::Parsing::Tokens::Values::time)
|
||||
BENCH_IF(parsing_plugin, PL::Parsing::Tokens::Values::compile_type_gprs)
|
||||
BENCH(RTVerbs::ConjugateVerb)
|
||||
BENCH(Adjectives::Meanings::agreements)
|
||||
BENCH(AdjectiveMeanings::agreements)
|
||||
|
||||
if (debugging) {
|
||||
BENCH_IF(parsing_plugin, PL::Parsing::TestScripts::write_text)
|
||||
|
|
|
@ -698,12 +698,12 @@ void PL::Parsing::understand_block(wording W, understanding_reference *ur, wordi
|
|||
&& (AdjectivalPredicates::parity(Propositions::first_unary_predicate(Specifications::to_proposition(spec), NULL)))) {
|
||||
adjective *aph =
|
||||
AdjectivalPredicates::to_adjective(Propositions::first_unary_predicate(Specifications::to_proposition(spec), NULL));
|
||||
instance *q = Adjectives::Meanings::has_ENUMERATIVE_meaning(aph);
|
||||
instance *q = AdjectiveMeanings::has_ENUMERATIVE_meaning(aph);
|
||||
if (q) {
|
||||
spec = Rvalues::from_instance(q);
|
||||
goto RetryValue;
|
||||
}
|
||||
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
|
||||
property *prn = AdjectiveMeanings::has_EORP_meaning(aph, NULL);
|
||||
if (prn) {
|
||||
gv_is = GV_IS_PROPERTY_NAME;
|
||||
gv_prn = prn;
|
||||
|
|
|
@ -280,7 +280,7 @@ of Inform.
|
|||
DEFINITIONAL_PHRASE_EFF)
|
||||
Phrases::compile(ph, &total_phrases_compiled,
|
||||
total_phrases_to_compile, NULL, NULL, NULL);
|
||||
Adjectives::Meanings::compile_support_code();
|
||||
AdjectiveMeanings::compile_support_code();
|
||||
|
||||
@ As we'll see, it's legal in Inform to define "To..." phrases with vague
|
||||
kinds: "To expose (X - a value)", for example. This can't be compiled as
|
||||
|
|
|
@ -1692,7 +1692,7 @@ void Invocations::Inline::compile_I7_expression_from_text_inner(value_holster *V
|
|||
|
||||
adjective *aph = Adjectives::parse(LW);
|
||||
if (aph) {
|
||||
if (Adjectives::Meanings::write_adjective_test_routine(VH, aph)) return;
|
||||
if (AdjectiveMeanings::write_adjective_test_routine(VH, aph)) return;
|
||||
StandardProblems::unlocated_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"You tried to use '(+' and '+)' to expand to the Inform 6 routine "
|
||||
"address of an adjective, but it was an adjective with no meaning.");
|
||||
|
|
|
@ -70,7 +70,7 @@ void Invocations::Compiler::compile_invocation_list(value_holster *VH, parse_nod
|
|||
Node::get_modal_verb(inv),
|
||||
Annotations::read_int(inv, say_verb_negated_ANNOT));
|
||||
} else if (Node::get_say_adjective(inv)) {
|
||||
Adjectives::Meanings::emit(Node::get_say_adjective(inv));
|
||||
AdjectiveMeanings::emit(Node::get_say_adjective(inv));
|
||||
} else {
|
||||
@<Otherwise, use the standard way to compile an invoked phrase@>;
|
||||
}
|
||||
|
@ -390,7 +390,7 @@ no subsequent lines are looked at.
|
|||
Node::get_modal_verb(inv),
|
||||
Annotations::read_int(inv, say_verb_negated_ANNOT));
|
||||
else if (Node::get_say_adjective(inv))
|
||||
Adjectives::Meanings::emit(Node::get_say_adjective(inv));
|
||||
AdjectiveMeanings::emit(Node::get_say_adjective(inv));
|
||||
else {
|
||||
phrase *ph = Node::get_phrase_invoked(inv);
|
||||
tokens_packet tokens;
|
||||
|
@ -407,7 +407,7 @@ no subsequent lines are looked at.
|
|||
Node::get_modal_verb(inv),
|
||||
Annotations::read_int(inv, say_verb_negated_ANNOT));
|
||||
else if (Node::get_say_adjective(inv))
|
||||
Adjectives::Meanings::emit(Node::get_say_adjective(inv));
|
||||
AdjectiveMeanings::emit(Node::get_say_adjective(inv));
|
||||
else {
|
||||
phrase *ph = Node::get_phrase_invoked(inv);
|
||||
tokens_packet tokens;
|
||||
|
|
|
@ -404,7 +404,7 @@ different contexts. We want to quote all of those.
|
|||
HTML_TAG("br");
|
||||
WRITE("%d. ", nc-ac);
|
||||
}
|
||||
Adjectives::Meanings::print_to_index(OUT, am);
|
||||
AdjectiveMeanings::print_to_index(OUT, am);
|
||||
if (ac >= 1) WRITE("; ");
|
||||
}
|
||||
@<End definition text@>;
|
||||
|
|
|
@ -34,6 +34,9 @@ COMPILE_WRITER_I(int, World::Inferences::log_kind)
|
|||
|
||||
=
|
||||
void KnowledgeModule::start(void) {
|
||||
InstanceAdjectives::start();
|
||||
Properties::EitherOr::start();
|
||||
Properties::Measurement::start();
|
||||
Properties::SameRelations::start();
|
||||
Properties::SettingRelations::start();
|
||||
Properties::ComparativeRelations::start();
|
||||
|
|
|
@ -9,9 +9,27 @@ that a ball might have a colour, we can declare that "the ball is green",
|
|||
or speak of "something blue", whereas "number" is not a coinciding property,
|
||||
and we would not ordinarily write "the ball is 4".[1]
|
||||
|
||||
These instances make "enumerative adjectives" because they arise from
|
||||
enumerations such as:
|
||||
|
||||
>> The ball can be red, green or blue.
|
||||
|
||||
[1] A quirk in English does allow this, implicitly construing number as an
|
||||
age property, but we don't go there in Inform.
|
||||
|
||||
=
|
||||
adjective_meaning_family *enumerative_amf = NULL; /* defined by a property like "colour" with named values */
|
||||
|
||||
void InstanceAdjectives::start(void) {
|
||||
enumerative_amf = AdjectiveMeanings::new_family(2);
|
||||
METHOD_ADD(enumerative_amf, ASSERT_ADJM_MTID, InstanceAdjectives::assert);
|
||||
}
|
||||
|
||||
int InstanceAdjectives::is_enumerative(adjective_meaning *am) {
|
||||
if ((am) && (am->family == enumerative_amf)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Let's reconstruct the chain of events, shall we? It has been found that an
|
||||
instance, though a noun, must be used as an adjective: for example, "red".
|
||||
Inform has run through the permissions for the property ("colour") in
|
||||
|
@ -43,17 +61,17 @@ void InstanceAdjectives::make_adjectival(instance *I, property *P,
|
|||
|
||||
@<Create the adjective meaning for this use of the instance@> =
|
||||
wording NW = Instances::get_name(I, FALSE);
|
||||
am = Adjectives::Meanings::new(ENUMERATIVE_KADJ, STORE_POINTER_instance(I), NW);
|
||||
I->as_adjective = Adjectives::Meanings::declare(am, NW, 4);
|
||||
if (singleton) Adjectives::Meanings::set_domain_from_instance(am, singleton);
|
||||
else if (set) Adjectives::Meanings::set_domain_from_kind(am, set);
|
||||
am = AdjectiveMeanings::new(enumerative_amf, STORE_POINTER_instance(I), NW);
|
||||
I->as_adjective = AdjectiveMeanings::declare(am, NW, 4);
|
||||
if (singleton) AdjectiveMeanings::set_domain_from_instance(am, singleton);
|
||||
else if (set) AdjectiveMeanings::set_domain_from_kind(am, set);
|
||||
|
||||
@<Write I6 schemas for asserting and testing this use of the instance@> =
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch,
|
||||
"GProperty(%k, *1, %n) == %d",
|
||||
D, Properties::iname(P), I->enumeration_index);
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch,
|
||||
"WriteGProperty(%k, *1, %n, %d)",
|
||||
D, Properties::iname(P), I->enumeration_index);
|
||||
|
@ -65,27 +83,16 @@ adjective *InstanceAdjectives::as_adjective(instance *I) {
|
|||
return I->as_adjective;
|
||||
}
|
||||
|
||||
adjective_meaning *InstanceAdjectives::parse(parse_node *pn,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void InstanceAdjectives::compiling_soon(adjective_meaning *am, instance *I, int T) {
|
||||
}
|
||||
|
||||
int InstanceAdjectives::compile(instance *I, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Asserting such an adjective simply asserts its property. We refuse to assert
|
||||
the falseness of such an adjective since it's unclear what to infer from, e.g.,
|
||||
"the ball is not green": we would need to give it a colour, and there's no
|
||||
good basis for choosing which.
|
||||
|
||||
=
|
||||
int InstanceAdjectives::assert(instance *I,
|
||||
int InstanceAdjectives::assert(adjective_meaning_family *f, adjective_meaning *am,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
if (parity == FALSE) return FALSE;
|
||||
instance *I = RETRIEVE_POINTER_instance(am->detailed_meaning);
|
||||
property *P = Properties::Conditions::get_coinciding_property(Instances::to_kind(I));
|
||||
if (P == NULL) internal_error("enumerative adjective on non-property");
|
||||
World::Inferences::draw_property(infs_to_assert_on, P, Rvalues::from_instance(I));
|
||||
|
|
|
@ -35,7 +35,7 @@ property *Properties::Conditions::new(inference_subject *infs, wording NW, parse
|
|||
PW = Node::get_text(option);
|
||||
adjective *adj = Adjectives::parse(PW);
|
||||
if (adj) {
|
||||
instance *I = Adjectives::Meanings::has_ENUMERATIVE_meaning(adj);
|
||||
instance *I = AdjectiveMeanings::has_ENUMERATIVE_meaning(adj);
|
||||
kind *K = (I)?Instances::to_kind(I):NULL;
|
||||
if (common_kind == NULL) {
|
||||
common_kind = K;
|
||||
|
|
|
@ -244,44 +244,42 @@ void Properties::EitherOr::compile_default_value(value_holster *VH, property *pr
|
|||
@h Either/or properties as adjectives.
|
||||
What makes either/or properties linguistically interesting is their use as
|
||||
adjectives: an open door, a transparent container. Adjectival
|
||||
meanings arising in this way are of the |EORP_KADJ| kind, and the following
|
||||
meanings arising in this way are of the |either_or_property_amf| kind, and the following
|
||||
is called every time an either/or property is created, to create its matching
|
||||
adjectival meaning:
|
||||
|
||||
=
|
||||
adjective_meaning_family *either_or_property_amf = NULL; /* defined by an either/or property like "closed" */
|
||||
|
||||
void Properties::EitherOr::start(void) {
|
||||
either_or_property_amf = AdjectiveMeanings::new_family(1);
|
||||
|
||||
METHOD_ADD(either_or_property_amf, ASSERT_ADJM_MTID, Properties::EitherOr::ADJ_assert);
|
||||
METHOD_ADD(either_or_property_amf, COMPILING_SOON_ADJM_MTID, Properties::EitherOr::compiling_soon);
|
||||
METHOD_ADD(either_or_property_amf, INDEX_ADJM_MTID, Properties::EitherOr::ADJ_index);
|
||||
}
|
||||
|
||||
int Properties::EitherOr::is_either_or_adjective(adjective_meaning *am) {
|
||||
if ((am) && (am->family == either_or_property_amf)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Properties::EitherOr::create_adjective_from_property(property *prn, wording W, kind *K) {
|
||||
adjective_meaning *am =
|
||||
Adjectives::Meanings::new(EORP_KADJ, STORE_POINTER_property(prn), W);
|
||||
Adjectives::Meanings::declare(am, W, 1);
|
||||
Adjectives::Meanings::set_domain_from_kind(am, K);
|
||||
prn->adjective_registered = Adjectives::Meanings::get_aph_from_am(am);
|
||||
AdjectiveMeanings::new(either_or_property_amf, STORE_POINTER_property(prn), W);
|
||||
AdjectiveMeanings::declare(am, W, 1);
|
||||
AdjectiveMeanings::set_domain_from_kind(am, K);
|
||||
prn->adjective_registered = AdjectiveMeanings::get_aph_from_am(am);
|
||||
prn->adjectival_meaning_registered = am;
|
||||
}
|
||||
|
||||
void Properties::EitherOr::make_new_adjective_sense_from_property(property *prn, wording W, kind *K) {
|
||||
adjective *aph = prn->adjective_registered;
|
||||
if (Adjectives::Meanings::applicable_to(aph, K)) return;
|
||||
if (AdjectiveMeanings::applicable_to(aph, K)) return;
|
||||
adjective_meaning *am =
|
||||
Adjectives::Meanings::new(EORP_KADJ, STORE_POINTER_property(prn), W);
|
||||
Adjectives::Meanings::declare(am, W, 2);
|
||||
Adjectives::Meanings::set_domain_from_kind(am, K);
|
||||
}
|
||||
|
||||
@ And here are the methods which define |EORP| adjectives. They arise other
|
||||
than by parsing, as we've seen, so:
|
||||
|
||||
=
|
||||
adjective_meaning *Properties::EitherOr::ADJ_parse(parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ Compiling tests or assertions of these adjectives is easy, because it just
|
||||
means using their schemata in the usual way...
|
||||
|
||||
=
|
||||
int Properties::EitherOr::ADJ_compile(property *prn, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
return FALSE;
|
||||
AdjectiveMeanings::new(either_or_property_amf, STORE_POINTER_property(prn), W);
|
||||
AdjectiveMeanings::declare(am, W, 2);
|
||||
AdjectiveMeanings::set_domain_from_kind(am, K);
|
||||
}
|
||||
|
||||
@ ...but writing those schemata is not so easy, partly because of the way
|
||||
|
@ -289,13 +287,14 @@ either/or properties may be paired, partly because of the attribute storage
|
|||
optimisation applied to some but not all of them.
|
||||
|
||||
=
|
||||
void Properties::EitherOr::ADJ_compiling_soon(adjective_meaning *am, property *prn, int T) {
|
||||
if (am == NULL) internal_error("Unregistered adjectival either/or property in either/or atom");
|
||||
void Properties::EitherOr::compiling_soon(adjective_meaning_family *family, adjective_meaning *am, int T) {
|
||||
property *prn = RETRIEVE_POINTER_property(am->detailed_meaning);
|
||||
if (prn == NULL) internal_error("Unregistered adjectival either/or property in either/or atom");
|
||||
|
||||
if (Adjectives::Meanings::get_ready_flag(am)) return;
|
||||
Adjectives::Meanings::set_ready_flag(am);
|
||||
if (AdjectiveMeanings::get_ready_flag(am)) return;
|
||||
AdjectiveMeanings::set_ready_flag(am);
|
||||
|
||||
kind *K = Adjectives::Meanings::get_domain(am);
|
||||
kind *K = AdjectiveMeanings::get_domain(am);
|
||||
if (Kinds::Behaviour::is_object(K))
|
||||
@<Set the schemata for an either/or property adjective with objects as domain@>
|
||||
else
|
||||
|
@ -313,24 +312,24 @@ which would work just as well, but more slowly.
|
|||
property *neg = Properties::EitherOr::get_negation(prn);
|
||||
inter_name *identifier = Properties::iname(neg);
|
||||
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "GetEitherOrProperty(*1, %n) == false", identifier);
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, true)", identifier);
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, false)", identifier);
|
||||
} else {
|
||||
inter_name *identifier = Properties::iname(prn);
|
||||
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "GetEitherOrProperty(*1, %n)", identifier);
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, false)", identifier);
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, true)", identifier);
|
||||
}
|
||||
|
||||
|
@ -338,27 +337,27 @@ which would work just as well, but more slowly.
|
|||
if (Properties::EitherOr::stored_in_negation(prn)) {
|
||||
property *neg = Properties::EitherOr::get_negation(prn);
|
||||
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "GProperty(%k, *1, %n) == false", K,
|
||||
Properties::iname(neg));
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(%k, *1, %n)", K,
|
||||
Properties::iname(neg));
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(%k, *1, %n, true)", K,
|
||||
Properties::iname(neg));
|
||||
} else {
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "GProperty(%k, *1, %n)", K,
|
||||
Properties::iname(prn));
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(%k, *1, %n, true)", K,
|
||||
Properties::iname(prn));
|
||||
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(%k, *1, %n)", K,
|
||||
Properties::iname(prn));
|
||||
}
|
||||
|
@ -367,8 +366,10 @@ which would work just as well, but more slowly.
|
|||
property.
|
||||
|
||||
=
|
||||
int Properties::EitherOr::ADJ_assert(property *prn,
|
||||
int Properties::EitherOr::ADJ_assert(adjective_meaning_family *f,
|
||||
adjective_meaning *am,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
property *prn = RETRIEVE_POINTER_property(am->detailed_meaning);
|
||||
if (parity == FALSE) World::Inferences::draw_negated_property(infs_to_assert_on, prn, NULL);
|
||||
else World::Inferences::draw_property(infs_to_assert_on, prn, NULL);
|
||||
return TRUE;
|
||||
|
@ -377,7 +378,9 @@ int Properties::EitherOr::ADJ_assert(property *prn,
|
|||
@ And finally:
|
||||
|
||||
=
|
||||
int Properties::EitherOr::ADJ_index(OUTPUT_STREAM, property *prn) {
|
||||
int Properties::EitherOr::ADJ_index(adjective_meaning_family *f, text_stream *OUT,
|
||||
adjective_meaning *am) {
|
||||
property *prn = RETRIEVE_POINTER_property(am->detailed_meaning);
|
||||
property *neg = Properties::EitherOr::get_negation(prn);
|
||||
WRITE("either/or property");
|
||||
if (Properties::permission_list(prn)) {
|
||||
|
|
|
@ -233,12 +233,26 @@ always to match <property-name>, and the text in the range must match
|
|||
"container is large if its carrying capacity is 10 or more.'");
|
||||
return FALSE;
|
||||
|
||||
@ =
|
||||
adjective_meaning *Properties::Measurement::ADJ_parse(parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
if (sense == 0) return NULL;
|
||||
@
|
||||
|
||||
if (<measurement-adjective-definition>(CONW) == FALSE) return NULL;
|
||||
=
|
||||
adjective_meaning_family *measurement_amf = NULL; /* defined by numerical comparison with a property value */
|
||||
|
||||
void Properties::Measurement::start(void) {
|
||||
measurement_amf = AdjectiveMeanings::new_family(3);
|
||||
METHOD_ADD(measurement_amf, ASSERT_ADJM_MTID, Properties::Measurement::ADJ_assert);
|
||||
METHOD_ADD(measurement_amf, COMPILING_SOON_ADJM_MTID, Properties::Measurement::compiling_soon);
|
||||
METHOD_ADD(measurement_amf, PARSE_ADJM_MTID, Properties::Measurement::ADJ_parse);
|
||||
}
|
||||
|
||||
|
||||
@ =
|
||||
int Properties::Measurement::ADJ_parse(adjective_meaning_family *f,
|
||||
adjective_meaning **result, parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
if (sense == 0) return FALSE;
|
||||
|
||||
if (<measurement-adjective-definition>(CONW) == FALSE) return FALSE;
|
||||
int shape = <<r>>;
|
||||
wording PRW = GET_RW(<measurement-adjective-definition>, 1);
|
||||
wording THRESW = GET_RW(<measurement-range>, 1);
|
||||
|
@ -251,7 +265,8 @@ adjective_meaning *Properties::Measurement::ADJ_parse(parse_node *q,
|
|||
@<Initialise the measurement definition@>;
|
||||
if (shape != MEASURE_T_EXACTLY) @<Create the superlative form@>;
|
||||
@<Create the adjectival meaning arising from this measurement@>;
|
||||
return mdef->headword_as_adjective;
|
||||
*result = mdef->headword_as_adjective;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@<Reject some overly elaborate attempts to define overly elaborate measurements@> =
|
||||
|
@ -262,7 +277,7 @@ adjective_meaning *Properties::Measurement::ADJ_parse(parse_node *q,
|
|||
"as in 'Definition: a container is large if its carrying capacity is "
|
||||
"10 or more.': 'fairly large' would not be allowed because it would "
|
||||
"make no sense to talk about 'fairly larger' or 'fairly largest'.");
|
||||
return NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (Wordings::nonempty(CALLW)) {
|
||||
|
@ -273,7 +288,7 @@ adjective_meaning *Properties::Measurement::ADJ_parse(parse_node *q,
|
|||
"or more.' is fine, but so 'Definition: a container (called the bag) "
|
||||
"is large if its carrying capacity is 10 or more.' is not - then again, "
|
||||
"there's very little call for it.");
|
||||
return NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (sense != 1) {
|
||||
|
@ -285,7 +300,7 @@ adjective_meaning *Properties::Measurement::ADJ_parse(parse_node *q,
|
|||
"its carrying capacity is 10 or more.' is not - of course a similar "
|
||||
"effect could be achieved by 'Definition: a container is modest if its "
|
||||
"carrying capacity is 9 or less.'");
|
||||
return NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Perhaps this is a good point to say why we allow any exact measurements at
|
||||
|
@ -293,21 +308,21 @@ all. After all, if we didn't, a definition like:
|
|||
|
||||
>> Definition: a person is handy if his carrying capacity is 7.
|
||||
|
||||
...would still work; and "handy" would then be created as a |CONDITION_KADJ|
|
||||
...would still work; and "handy" would then be created as a |condition_amf|
|
||||
adjective. So why not let that happen?
|
||||
|
||||
The answer is that our |MEASUREMENT_KADJ| adjectives behave exactly the same
|
||||
The answer is that our |measurement_amf| adjectives behave exactly the same
|
||||
at run-time, but can also be asserted true in the model world at compile-time.
|
||||
In particular, we could write:
|
||||
|
||||
>> Peter is a handy person.
|
||||
|
||||
This can't be done with general |CONDITION_KADJ| adjectives, because conditions
|
||||
This can't be done with general |condition_amf| adjectives, because conditions
|
||||
can't normally be unravelled at compile time.
|
||||
|
||||
@<Allow an exact measurement to be created only if we can already parse the threshold@> =
|
||||
if (shape == MEASURE_T_EXACTLY) {
|
||||
if (<s-literal>(THRESW) == FALSE) return NULL;
|
||||
if (<s-literal>(THRESW) == FALSE) return FALSE;
|
||||
}
|
||||
|
||||
@<Initialise the measurement definition@> =
|
||||
|
@ -354,32 +369,32 @@ can't normally be unravelled at compile time.
|
|||
DISCARD_TEXT(TEMP)
|
||||
|
||||
@<Create the adjectival meaning arising from this measurement@> =
|
||||
adjective_meaning *am = Adjectives::Meanings::new(MEASUREMENT_KADJ,
|
||||
adjective_meaning *am = AdjectiveMeanings::new(measurement_amf,
|
||||
STORE_POINTER_measurement_definition(mdef), Node::get_text(q));
|
||||
mdef->headword_as_adjective = am;
|
||||
Adjectives::Meanings::declare(am, AW, 3);
|
||||
Adjectives::Meanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
Adjectives::Meanings::set_domain_text(am, DNW);
|
||||
AdjectiveMeanings::declare(am, AW, 3);
|
||||
AdjectiveMeanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
AdjectiveMeanings::set_domain_text(am, DNW);
|
||||
|
||||
@ =
|
||||
void Properties::Measurement::ADJ_compiling_soon(adjective_meaning *am,
|
||||
measurement_definition *mdef, int T) {
|
||||
void Properties::Measurement::compiling_soon(adjective_meaning_family *family, adjective_meaning *am,
|
||||
int T) {
|
||||
measurement_definition *mdef =
|
||||
RETRIEVE_POINTER_measurement_definition(am->detailed_meaning);
|
||||
if ((mdef->prop) && (mdef->region_threshold_evaluated) &&
|
||||
(mdef->property_schema_written == FALSE)) {
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(
|
||||
mdef->headword_as_adjective, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "%n(*1)", mdef->mdef_iname);
|
||||
mdef->property_schema_written = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
int Properties::Measurement::ADJ_compile(measurement_definition *mdef,
|
||||
int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Properties::Measurement::ADJ_assert(measurement_definition *mdef,
|
||||
int Properties::Measurement::ADJ_assert(adjective_meaning_family *f,
|
||||
adjective_meaning *am,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
measurement_definition *mdef =
|
||||
RETRIEVE_POINTER_measurement_definition(am->detailed_meaning);
|
||||
Properties::Measurement::validate(mdef);
|
||||
if ((Properties::Measurement::is_valid(mdef)) && (mdef->prop) && (parity == TRUE)) {
|
||||
parse_node *val = NULL;
|
||||
|
@ -391,10 +406,6 @@ int Properties::Measurement::ADJ_assert(measurement_definition *mdef,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
int Properties::Measurement::ADJ_index(OUTPUT_STREAM, measurement_definition *mdef) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@h Support routines for measurement.
|
||||
|
||||
=
|
||||
|
@ -406,7 +417,7 @@ void Properties::Measurement::compile_MADJ_routines(void) {
|
|||
local_variable *lv = LocalVariables::add_call_parameter(
|
||||
Frames::current_stack_frame(),
|
||||
EMPTY_WORDING,
|
||||
Adjectives::Meanings::get_domain(mdef->headword_as_adjective));
|
||||
AdjectiveMeanings::get_domain(mdef->headword_as_adjective));
|
||||
parse_node *var = Lvalues::new_LOCAL_VARIABLE(EMPTY_WORDING, lv);
|
||||
parse_node *evaluated_prop = Lvalues::new_PROPERTY_VALUE(
|
||||
Rvalues::from_property(mdef->prop), var);
|
||||
|
|
|
@ -16,6 +16,10 @@ which use this module:
|
|||
|
||||
=
|
||||
void RuntimeModule::start(void) {
|
||||
Phrases::Phrasal::start();
|
||||
Phrases::Condition::start();
|
||||
Phrases::RawPhrasal::start();
|
||||
Phrases::RawCondition::start();
|
||||
Memory::reason_name(EMIT_ARRAY_MREASON, "emitter array storage");
|
||||
Memory::reason_name(PARTITION_MREASON, "initial state for relations in groups");
|
||||
Memory::reason_name(RELATION_CONSTRUCTION_MREASON, "relation bitmap storage");
|
||||
|
|
|
@ -168,12 +168,12 @@ is defined by routine or not.
|
|||
offer the new adjective around and see if anybody claims it.
|
||||
|
||||
@<Register the resulting adjective@> =
|
||||
adjective_meaning *am = Adjectives::Meanings::parse(q, the_format, AW, DNW, CONW, CALLW);
|
||||
adjective_meaning *am = AdjectiveMeanings::parse(q, the_format, AW, DNW, CONW, CALLW);
|
||||
if (am == NULL) internal_error("unclaimed adjective definition");
|
||||
|
||||
if (Wordings::nonempty(NW)) {
|
||||
adjective_meaning *neg = Adjectives::Meanings::negate(am);
|
||||
Adjectives::Meanings::declare(neg, NW, 5);
|
||||
adjective_meaning *neg = AdjectiveMeanings::negate(am);
|
||||
AdjectiveMeanings::declare(neg, NW, 5);
|
||||
}
|
||||
|
||||
@
|
||||
|
|
|
@ -2,30 +2,40 @@
|
|||
|
||||
Defining an adjective with an I7 condition.
|
||||
|
||||
@ This is a family of adjective meanings.
|
||||
|
||||
=
|
||||
adjective_meaning_family *condition_amf = NULL; /* defined by a condition in I7 source text */
|
||||
|
||||
void Phrases::Condition::start(void) {
|
||||
condition_amf = AdjectiveMeanings::new_family(7);
|
||||
METHOD_ADD(condition_amf, COMPILE_ADJM_MTID, Phrases::Condition::ADJ_compile);
|
||||
METHOD_ADD(condition_amf, PARSE_ADJM_MTID, Phrases::Condition::ADJ_parse);
|
||||
}
|
||||
|
||||
@ =
|
||||
adjective_meaning *Phrases::Condition::ADJ_parse(parse_node *q,
|
||||
int Phrases::Condition::ADJ_parse(adjective_meaning_family *f,
|
||||
adjective_meaning **result, parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
if (sense == 0) return NULL;
|
||||
if (sense == 0) return FALSE;
|
||||
definition *def = Phrases::Adjectives::def_new(q);
|
||||
adjective_meaning *am =
|
||||
Adjectives::Meanings::new(CONDITION_KADJ, STORE_POINTER_definition(def),
|
||||
AdjectiveMeanings::new(condition_amf, STORE_POINTER_definition(def),
|
||||
Node::get_text(q));
|
||||
def->condition_to_match = CONW;
|
||||
def->format = sense;
|
||||
def->domain_calling = CALLW;
|
||||
def->am_of_def = am;
|
||||
Adjectives::Meanings::declare(am, AW, 6);
|
||||
Adjectives::Meanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
Adjectives::Meanings::set_domain_text(am, DNW);
|
||||
return am;
|
||||
AdjectiveMeanings::declare(am, AW, 6);
|
||||
AdjectiveMeanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
AdjectiveMeanings::set_domain_text(am, DNW);
|
||||
*result = am;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Phrases::Condition::ADJ_compiling_soon(adjective_meaning *am,
|
||||
definition *def, int T) {
|
||||
}
|
||||
|
||||
int Phrases::Condition::ADJ_compile(definition *def, int T,
|
||||
int emit_flag, ph_stack_frame *phsf) {
|
||||
int Phrases::Condition::ADJ_compile(adjective_meaning_family *family,
|
||||
adjective_meaning *am, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
definition *def = RETRIEVE_POINTER_definition(am->detailed_meaning);
|
||||
switch (T) {
|
||||
case TEST_ADJECTIVE_TASK:
|
||||
if (emit_flag) {
|
||||
|
@ -34,39 +44,31 @@ int Phrases::Condition::ADJ_compile(definition *def, int T,
|
|||
if (Wordings::nonempty(def->condition_to_match)) {
|
||||
current_sentence = def->node;
|
||||
parse_node *spec = NULL;
|
||||
if (<s-condition>(def->condition_to_match))
|
||||
spec = <<rp>>;
|
||||
if (<s-condition>(def->condition_to_match)) spec = <<rp>>;
|
||||
if ((spec == NULL) ||
|
||||
(Dash::validate_conditional_clause(spec) == FALSE)) {
|
||||
LOG("Error on: %W = $T", def->condition_to_match, spec);
|
||||
StandardProblems::definition_problem(Task::syntax_tree(), _p_(PM_DefinitionBadCondition),
|
||||
StandardProblems::definition_problem(Task::syntax_tree(),
|
||||
_p_(PM_DefinitionBadCondition),
|
||||
def->node,
|
||||
"that condition makes no sense to me",
|
||||
"although the preamble to the definition was properly "
|
||||
"written. There must be something wrong after 'if'.");
|
||||
} else {
|
||||
if (def->format == -1) { Produce::inv_primitive(Emit::tree(), NOT_BIP); Produce::down(Emit::tree()); }
|
||||
if (def->format == -1) {
|
||||
Produce::inv_primitive(Emit::tree(), NOT_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
}
|
||||
Specifications::Compiler::emit_as_val(K_number, spec);
|
||||
if (def->format == -1) Produce::up(Emit::tree());
|
||||
if (def->format == -1) {
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LocalVariables::alias_pronoun(phsf, EMPTY_WORDING);
|
||||
}
|
||||
return TRUE;
|
||||
case NOW_ADJECTIVE_TRUE_TASK:
|
||||
return FALSE;
|
||||
case NOW_ADJECTIVE_FALSE_TASK:
|
||||
return FALSE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::Condition::ADJ_assert(definition *def,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::Condition::ADJ_index(OUTPUT_STREAM, definition *def) {
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,13 @@ Adjectives defined by an I7 phrase.
|
|||
And here's another one.
|
||||
|
||||
=
|
||||
adjective_meaning_family *phrase_amf = NULL; /* defined by an explicit but nameless rule */
|
||||
|
||||
void Phrases::Phrasal::start(void) {
|
||||
phrase_amf = AdjectiveMeanings::new_family(6);
|
||||
METHOD_ADD(phrase_amf, PARSE_ADJM_MTID, Phrases::Phrasal::ADJ_parse);
|
||||
}
|
||||
|
||||
void Phrases::Phrasal::define_adjective_by_phrase(parse_node *p, phrase *ph, wording *CW,
|
||||
kind **K) {
|
||||
definition *def;
|
||||
|
@ -13,43 +20,29 @@ void Phrases::Phrasal::define_adjective_by_phrase(parse_node *p, phrase *ph, wor
|
|||
if (ph == NULL) return;
|
||||
|
||||
LOOP_OVER(def, definition)
|
||||
if ((def->definition_node == p) && (Adjectives::Meanings::get_form(def->am_of_def) == PHRASE_KADJ)) {
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(def->am_of_def, TEST_ADJECTIVE_TASK, FALSE);
|
||||
if ((def->definition_node == p) && (AdjectiveMeanings::get_form(def->am_of_def) == phrase_amf)) {
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(def->am_of_def, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Calculus::Schemas::modify(sch, "(%n(*1))", Phrases::iname(ph));
|
||||
*CW = def->domain_calling;
|
||||
*K = Adjectives::Meanings::get_domain_forcing(def->am_of_def);
|
||||
*K = AdjectiveMeanings::get_domain_forcing(def->am_of_def);
|
||||
if ((*K == NULL) || (Kinds::Behaviour::is_object(*K)))
|
||||
*K = K_object;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
adjective_meaning *Phrases::Phrasal::ADJ_parse(parse_node *q,
|
||||
int Phrases::Phrasal::ADJ_parse(adjective_meaning_family *f,
|
||||
adjective_meaning **result, parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
if (sense != 0) return NULL;
|
||||
if (sense != 0) return FALSE;
|
||||
definition *def = Phrases::Adjectives::def_new(q);
|
||||
adjective_meaning *am = Adjectives::Meanings::new(PHRASE_KADJ,
|
||||
adjective_meaning *am = AdjectiveMeanings::new(phrase_amf,
|
||||
STORE_POINTER_definition(def), Node::get_text(q));
|
||||
def->domain_calling = CALLW;
|
||||
def->am_of_def = am;
|
||||
Adjectives::Meanings::declare(am, AW, 7);
|
||||
Adjectives::Meanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
Adjectives::Meanings::set_domain_text(am, DNW);
|
||||
return am;
|
||||
}
|
||||
|
||||
void Phrases::Phrasal::ADJ_compiling_soon(adjective_meaning *am, definition *def, int T) {
|
||||
}
|
||||
|
||||
int Phrases::Phrasal::ADJ_compile(definition *def, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::Phrasal::ADJ_assert(definition *def,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::Phrasal::ADJ_index(OUTPUT_STREAM, definition *def) {
|
||||
return FALSE;
|
||||
AdjectiveMeanings::declare(am, AW, 7);
|
||||
AdjectiveMeanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
AdjectiveMeanings::set_domain_text(am, DNW);
|
||||
*result = am;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -11,40 +11,33 @@ Defining an adjective with an I6 condition.
|
|||
@ Which leads us to a simple set of adjectives:
|
||||
|
||||
=
|
||||
adjective_meaning *Phrases::RawCondition::ADJ_parse(parse_node *q,
|
||||
adjective_meaning_family *inter_condition_amf = NULL; /* defined by an explicit I6 schema */
|
||||
|
||||
void Phrases::RawCondition::start(void) {
|
||||
inter_condition_amf = AdjectiveMeanings::new_family(4);
|
||||
METHOD_ADD(inter_condition_amf, PARSE_ADJM_MTID, Phrases::RawCondition::ADJ_parse);
|
||||
}
|
||||
|
||||
int Phrases::RawCondition::ADJ_parse(adjective_meaning_family *f,
|
||||
adjective_meaning **result, parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
if (sense != 1) return NULL;
|
||||
if (Wordings::nonempty(CALLW)) return NULL;
|
||||
if (!(<inform6-condition-adjective-definition>(CONW))) return NULL;
|
||||
if (sense != 1) return FALSE;
|
||||
if (Wordings::nonempty(CALLW)) return FALSE;
|
||||
if (!(<inform6-condition-adjective-definition>(CONW))) return FALSE;
|
||||
int text_wn = <<r>>;
|
||||
wording IN = GET_RW(<inform6-condition-adjective-definition>, 1);
|
||||
|
||||
definition *def = Phrases::Adjectives::def_new(q);
|
||||
adjective_meaning *am =
|
||||
Adjectives::Meanings::new(I6_CONDITION_KADJ,
|
||||
AdjectiveMeanings::new(inter_condition_amf,
|
||||
STORE_POINTER_definition(def), IN);
|
||||
def->am_of_def = am;
|
||||
Adjectives::Meanings::declare(am, AW, 8);
|
||||
Adjectives::Meanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
Adjectives::Meanings::set_domain_text(am, DNW);
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
AdjectiveMeanings::declare(am, AW, 8);
|
||||
AdjectiveMeanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
AdjectiveMeanings::set_domain_text(am, DNW);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, FALSE);
|
||||
Word::dequote(text_wn);
|
||||
Calculus::Schemas::modify(sch, "(%N)", text_wn);
|
||||
return am;
|
||||
}
|
||||
|
||||
void Phrases::RawCondition::ADJ_compiling_soon(adjective_meaning *am, definition *def, int T) {
|
||||
}
|
||||
|
||||
int Phrases::RawCondition::ADJ_compile(definition *def, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::RawCondition::ADJ_assert(definition *def,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::RawCondition::ADJ_index(OUTPUT_STREAM, definition *def) {
|
||||
return FALSE;
|
||||
*result = am;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,20 @@ This little grammar catches definitions delegated to Inform 6 routines.
|
|||
@ So here's a set of adjectives...
|
||||
|
||||
=
|
||||
adjective_meaning *Phrases::RawPhrasal::ADJ_parse(parse_node *q,
|
||||
adjective_meaning_family *inter_routine_amf = NULL; /* defined by a named I6 routine */
|
||||
|
||||
void Phrases::RawPhrasal::start(void) {
|
||||
inter_routine_amf = AdjectiveMeanings::new_family(5);
|
||||
METHOD_ADD(inter_routine_amf, PARSE_ADJM_MTID, Phrases::RawPhrasal::ADJ_parse);
|
||||
}
|
||||
|
||||
int Phrases::RawPhrasal::is_by_Inter_function(adjective_meaning *am) {
|
||||
if ((am) && (am->family == inter_routine_amf)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::RawPhrasal::ADJ_parse(adjective_meaning_family *f,
|
||||
adjective_meaning **result, parse_node *q,
|
||||
int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
|
||||
int setting = FALSE;
|
||||
wording EW = EMPTY_WORDING, RW = EMPTY_WORDING;
|
||||
|
@ -21,47 +34,32 @@ adjective_meaning *Phrases::RawPhrasal::ADJ_parse(parse_node *q,
|
|||
setting = <<r>>;
|
||||
RW = GET_RW(<inform6-routine-adjective-definition>, 1);
|
||||
EW = GET_RW(<inform6-routine-adjective-definition>, 2);
|
||||
} else return NULL;
|
||||
} else return FALSE;
|
||||
|
||||
if (sense != 1) return NULL;
|
||||
if (Wordings::nonempty(CALLW)) return NULL;
|
||||
if (sense != 1) return FALSE;
|
||||
if (Wordings::nonempty(CALLW)) return FALSE;
|
||||
|
||||
int rname_wn = Wordings::first_wn(RW);
|
||||
Word::dequote(rname_wn);
|
||||
|
||||
definition *def = Phrases::Adjectives::def_new(q);
|
||||
adjective_meaning *am =
|
||||
Adjectives::Meanings::new(I6_ROUTINE_KADJ, STORE_POINTER_definition(def), EW);
|
||||
AdjectiveMeanings::new(inter_routine_amf, STORE_POINTER_definition(def), EW);
|
||||
def->am_of_def = am;
|
||||
Adjectives::Meanings::declare(am, AW, 9);
|
||||
Adjectives::Meanings::set_domain_text(am, DNW);
|
||||
AdjectiveMeanings::declare(am, AW, 9);
|
||||
AdjectiveMeanings::set_domain_text(am, DNW);
|
||||
if (setting) {
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, TRUE);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, TRUE);
|
||||
Calculus::Schemas::modify(sch, "*=-(%N(*1, -1))", rname_wn);
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, TRUE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_TRUE_TASK, TRUE);
|
||||
Calculus::Schemas::modify(sch, "*=-(%N(*1, true))", rname_wn);
|
||||
sch = Adjectives::Meanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, TRUE);
|
||||
sch = AdjectiveMeanings::set_i6_schema(am, NOW_ADJECTIVE_FALSE_TASK, TRUE);
|
||||
Calculus::Schemas::modify(sch, "*=-(%N(*1, false))", rname_wn);
|
||||
} else {
|
||||
Adjectives::Meanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
i6_schema *sch = Adjectives::Meanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, TRUE);
|
||||
AdjectiveMeanings::pass_task_to_support_routine(am, TEST_ADJECTIVE_TASK);
|
||||
i6_schema *sch = AdjectiveMeanings::set_i6_schema(am, TEST_ADJECTIVE_TASK, TRUE);
|
||||
Calculus::Schemas::modify(sch, "*=-(%N(*1))", rname_wn);
|
||||
}
|
||||
return am;
|
||||
}
|
||||
|
||||
void Phrases::RawPhrasal::ADJ_compiling_soon(adjective_meaning *am, definition *def, int T) {
|
||||
}
|
||||
|
||||
int Phrases::RawPhrasal::ADJ_compile(definition *def, int T, int emit_flag, ph_stack_frame *phsf) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::RawPhrasal::ADJ_assert(definition *def,
|
||||
inference_subject *infs_to_assert_on, parse_node *val_to_assert_on, int parity) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Phrases::RawPhrasal::ADJ_index(OUTPUT_STREAM, definition *def) {
|
||||
return FALSE;
|
||||
*result = am;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -1531,10 +1531,10 @@ against "value".)
|
|||
prn = Rvalues::to_property(new_value);
|
||||
else if (Descriptions::number_of_adjectives_applied_to(new_value) == 1) {
|
||||
adjective *aph = AdjectivalPredicates::to_adjective(Descriptions::first_unary_predicate(new_value));
|
||||
if (Adjectives::Meanings::has_ENUMERATIVE_meaning(aph))
|
||||
prn = Properties::Conditions::get_coinciding_property(Instances::to_kind(Adjectives::Meanings::has_ENUMERATIVE_meaning(aph)));
|
||||
else if (Adjectives::Meanings::has_EORP_meaning(aph, NULL))
|
||||
prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
|
||||
if (AdjectiveMeanings::has_ENUMERATIVE_meaning(aph))
|
||||
prn = Properties::Conditions::get_coinciding_property(Instances::to_kind(AdjectiveMeanings::has_ENUMERATIVE_meaning(aph)));
|
||||
else if (AdjectiveMeanings::has_EORP_meaning(aph, NULL))
|
||||
prn = AdjectiveMeanings::has_EORP_meaning(aph, NULL);
|
||||
}
|
||||
make_check = TRUE;
|
||||
|
||||
|
|
|
@ -329,7 +329,7 @@ int SPDesc::adjlist_applies_to_kind(parse_node *A, kind *K) {
|
|||
pcalc_prop *au_prop = NULL;
|
||||
LOOP_THROUGH_ADJECTIVE_LIST(au, au_prop, A) {
|
||||
adjective *aph = AdjectivalPredicates::to_adjective(au);
|
||||
if (Adjectives::Meanings::applicable_to(aph, K) == FALSE) return FALSE;
|
||||
if (AdjectiveMeanings::applicable_to(aph, K) == FALSE) return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -158,9 +158,9 @@ again.
|
|||
#ifdef CORE_MODULE
|
||||
pcalc_term Terms::adj_to_noun_conversion(unary_predicate *tr) {
|
||||
adjective *aph = AdjectivalPredicates::to_adjective(tr);
|
||||
instance *I = Adjectives::Meanings::has_ENUMERATIVE_meaning(aph);
|
||||
instance *I = AdjectiveMeanings::has_ENUMERATIVE_meaning(aph);
|
||||
if (I) return Terms::new_constant(Rvalues::from_instance(I));
|
||||
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
|
||||
property *prn = AdjectiveMeanings::has_EORP_meaning(aph, NULL);
|
||||
if (prn) return Terms::new_constant(Rvalues::from_property(prn));
|
||||
return Terms::new_variable(0);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue