1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-08 18:14:21 +03:00
inform7/docs/core-module/6-tod.html

283 lines
50 KiB
HTML
Raw Normal View History

2019-03-17 14:40:57 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
2020-04-14 19:56:54 +03:00
<title>Times of Day</title>
2020-05-03 03:20:55 +03:00
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
2020-03-19 02:11:25 +02:00
<meta name="viewport" content="width=device-width initial-scale=1">
2019-03-17 14:40:57 +02:00
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
2020-05-03 03:01:21 +03:00
2020-05-03 03:20:55 +03:00
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<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">
2020-05-03 03:01:21 +03:00
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
2020-05-03 03:20:55 +03:00
<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">
2020-05-09 01:13:45 +03:00
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
2020-04-14 19:56:54 +03:00
2019-03-17 14:40:57 +02:00
</head>
2020-05-03 03:01:21 +03:00
<body class="commentary-font">
2020-03-19 02:11:25 +02:00
<nav role="navigation">
2020-04-14 19:56:54 +03:00
<h1><a href="../index.html">
2020-05-03 18:34:53 +03:00
<img src="../docs-assets/Inform.png" height=72">
2020-04-14 19:56:54 +03:00
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
2020-03-19 02:11:25 +02:00
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
2020-04-14 19:56:54 +03:00
</ul><h2>Compiler Webs</h2><ul>
2020-03-19 02:11:25 +02:00
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
2020-04-14 19:56:54 +03:00
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
2020-03-19 02:11:25 +02:00
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
2020-04-14 19:56:54 +03:00
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
2020-03-19 02:11:25 +02:00
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
2020-05-20 02:02:28 +03:00
</ul><h2>Services</h2><ul>
2020-04-14 19:56:54 +03:00
<li><a href="../arch-module/index.html">arch</a></li>
2020-08-20 01:36:18 +03:00
<li><a href="../calculus-module/index.html">calculus</a></li>
2020-04-14 19:56:54 +03:00
<li><a href="../html-module/index.html">html</a></li>
2020-05-20 02:02:28 +03:00
<li><a href="../inflections-module/index.html">inflections</a></li>
2020-08-20 01:36:18 +03:00
<li><a href="../kinds-module/index.html">kinds</a></li>
2020-05-20 02:02:28 +03:00
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
2020-08-20 01:36:18 +03:00
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
2020-03-19 02:11:25 +02:00
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
2020-04-14 19:56:54 +03:00
</ul>
2020-03-19 02:11:25 +02:00
</nav>
<main role="main">
2020-05-03 03:01:21 +03:00
<!--Weave of 'Times of Day' generated by Inweb-->
<div class="breadcrumbs">
2020-08-02 21:04:24 +03:00
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#6">Chapter 6: Nouns</a></li><li><b>Times of Day</b></li></ul></div>
2020-05-03 03:01:21 +03:00
<p class="purpose">To make a built-in kind of value for times of day, such as "11:22 AM".</p>
2019-03-17 14:40:57 +02:00
<ul class="toc"><li><a href="6-tod.html#SP5">&#167;5. Parsing</a></li><li><a href="6-tod.html#SP8">&#167;8. Parsing event rules</a></li></ul><hr class="tocbar">
2019-03-17 14:40:57 +02:00
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>"Men can do nothing without the make-believe of a beginning. Even Science,
2019-03-17 14:40:57 +02:00
the strict measurer, is obliged to start with a make-believe unit, and must fix
on a point in the stars' unceasing journey when his sidereal clock shall pretend
that time is at Nought. His less accurate grandmother Poetry has always been
understood to start in the middle; but on reflection it appears that her
proceeding is not very different from his; since Science, too, reckons backwards
as well as forwards, divides his unit into billions, and with his clock-finger
at Nought really sets off in medias res" (George Eliot, "Daniel Deronda").
Our make-believe here is midnight, our unit is divided not into billions but
into 1440, and a value of this kind holds one of two possibilities:
</p>
<ul class="items"><li>(i) an absolute time, measured as the number of minutes since midnight;
</li><li>(ii) a relative time, measured in minutes.
</li></ul>
2020-05-03 03:01:21 +03:00
<p class="commentary">Thus the value 70 might mean 1:10 AM, or it might mean 70 minutes, and
2019-03-17 14:40:57 +02:00
type-checking does not try to distinguish the two. This is so that arithmetic
will be easier &mdash; we can add 70 minutes to 1:10 AM to get 2:20 AM, but if they
had different kinds, this would be illegal.
</p>
2020-05-03 03:01:21 +03:00
<p class="commentary">The ambiguity is occasionally unhelpful, though: we have to supplement the "[a
2019-03-17 14:40:57 +02:00
time]" Understand token, which parses an absolute time, with a special "[a
time period]" one, so that users are able to parse relative times as well. And
of course, times really do not behave like integers, no matter how we might
pretend. What is 4:52 PM plus 3:31 PM, in any very meaningful sense? (Inform
adds these by treating them as durations since the previous midnight in each
case, but it's hard to see why that makes much human sense.) But despite these
qualms, it has been a reasonably good design in practice, and few authors
have objected.
</p>
2020-05-03 03:01:21 +03:00
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_time</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
2019-03-17 14:40:57 +02:00
</pre>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::TimesOfDay::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">PL::TimesOfDay::start</span></span>:<br/>Plugins - <a href="26-pl.html#SP8">&#167;8</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">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="6-tod.html#SP3" class="function-link"><span class="function-syntax">PL::TimesOfDay::times_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
2020-05-03 03:01:21 +03:00
<span class="plain-syntax">}</span>
2019-03-17 14:40:57 +02:00
</pre>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b></p>
2020-05-03 03:01:21 +03:00
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::TimesOfDay::times_new_base_kind_notify</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">PL::TimesOfDay::times_new_base_kind_notify</span></span>:<br/><a href="6-tod.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</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>
2020-05-03 03:01:21 +03:00
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"TIME_TY"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K_time</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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>
2019-03-17 14:40:57 +02:00
</pre>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b></p>
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
<pre class="displayed-code all-displayed-code code-font">
2020-08-24 21:30:28 +03:00
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::TimesOfDay::kind</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">PL::TimesOfDay::kind</span></span>:<br/>Compile Arithmetic - <a href="13-ca.html#SP1">&#167;1</a><br/>RValues - <a href="14-rv.html#SP13">&#167;13</a><br/>Lvalues - <a href="14-lv.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
2020-05-03 03:01:21 +03:00
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_time</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
2019-03-17 14:40:57 +02:00
</pre>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Parsing. </b>Although they are eventually stored in variables of the same kind ("time"),
2019-03-17 14:40:57 +02:00
relative and absolute times are parsed differently &mdash; they really are not
linguistically the same thing at all.
</p>
2020-05-09 01:13:45 +03:00
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;s-literal-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">minus</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;elapsed-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -, Rvalues::from_time(-R[1], W) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;elapsed-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -, Rvalues::from_time(R[1], W) }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;clock-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -, Rvalues::from_time(R[1], W) }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-function-syntax">&lt;elapsed-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">hour/hours</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 60*R[1], - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">minute/minutes</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">hour/hours</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">minute/minutes</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 60*R[1]+R[2], - }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-function-syntax">&lt;clock-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;am-pm&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-tod.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vet the time for clock range</span><span class="named-paragraph-number">5.1</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;digital-clock-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;am-pm&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-tod.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vet the time for clock range</span><span class="named-paragraph-number">5.1</span></a></span>
2020-05-09 01:13:45 +03:00
<span class="Preform-function-syntax">&lt;am-pm&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">am</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">pm</span>
2019-03-17 14:40:57 +02:00
</pre>
2020-05-17 13:51:27 +03:00
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>&#167;5.1. </b>Note that we allow "12:01 AM" (one minute past midnight) and "12:01 PM"
2019-03-17 14:40:57 +02:00
(ditto noon), and also "0:01 AM" and "00:01 AM", but not "0:01 PM".
Lawrence Sanders's sci-fi thriller "The Tomorrow File", if that can be
mentioned on the same page as "Daniel Deronda", had a terrific cover of
a digital clock glowing with "24:01" &mdash; but we won't allow that, either.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Vet the time for clock range</span><span class="named-paragraph-number">5.1</span></span><span class="Preform-comment-syntax"> =</span>
2020-05-03 03:01:21 +03:00
</p>
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">time_cycles</span><span class="plain-syntax"> = </span><span class="constant-syntax">12</span><span class="plain-syntax">*60*</span><span class="identifier-syntax">R</span><span class="plain-syntax">[2];</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="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">time_hours</span><span class="plain-syntax">, </span><span class="identifier-syntax">time_minutes</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">R</span><span class="plain-syntax">[0] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">time_hours</span><span class="plain-syntax"> = </span><span class="identifier-syntax">t</span><span class="plain-syntax">; </span><span class="identifier-syntax">time_minutes</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</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">time_hours</span><span class="plain-syntax"> = </span><span class="identifier-syntax">t</span><span class="plain-syntax">/60; </span><span class="identifier-syntax">time_minutes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">t</span><span class="plain-syntax">%60; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">time_hours</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">time_cycles</span><span class="plain-syntax"> &gt; </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="comment-syntax"> reject for example "0:01 PM"</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">time_hours</span><span class="plain-syntax"> == </span><span class="constant-syntax">12</span><span class="plain-syntax">) </span><span class="identifier-syntax">time_hours</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> allow for example "12:01 AM"</span>
2020-07-28 21:19:38 +03:00
<span class="plain-syntax"> ==&gt; { </span><span class="identifier-syntax">time_minutes</span><span class="plain-syntax"> + </span><span class="constant-syntax">60</span><span class="plain-syntax">*</span><span class="identifier-syntax">time_hours</span><span class="plain-syntax"> + </span><span class="identifier-syntax">time_cycles</span><span class="plain-syntax">, - };</span>
2019-03-17 14:40:57 +02:00
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-tod.html#SP5">&#167;5</a> (twice).</li></ul>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b>These are times of day written in the style of a digital clock: "00:00",
2019-03-17 14:40:57 +02:00
"5:21", "17:21". The syntax must be one or two digits, followed by a
colon, followed by exactly two digits; it is permissible for the first of
two digits to be zero; when that is discarded, the hours part must be in
the range 0 to 23, and the minutes part in the range 0 to 59.
</p>
2020-05-09 01:13:45 +03:00
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;digital-clock-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">1</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">colons</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">wchar_t</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">Lexer::word_text</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::first_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">));</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">for</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">=0; </span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">]; </span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">++) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (((</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">==1) || (</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">==2)) &amp;&amp; (</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">] == </span><span class="Preform-character-syntax">':'</span><span class="Preform-plain-syntax">) &amp;&amp; (</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">+1])) {</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> &gt;= </span><span class="Preform-constant-syntax">24</span><span class="Preform-plain-syntax">) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">colons</span><span class="Preform-plain-syntax">++;</span>
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Characters::isdigit</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">])) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">10</span><span class="Preform-plain-syntax">*</span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> + (</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">]-</span><span class="Preform-character-syntax">'0'</span><span class="Preform-plain-syntax">); </span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax">++;</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> &gt;= </span><span class="Preform-constant-syntax">60</span><span class="Preform-plain-syntax">) || (</span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax"> &gt; </span><span class="Preform-constant-syntax">2</span><span class="Preform-plain-syntax">)) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> }</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">colons</span><span class="Preform-plain-syntax"> != </span><span class="Preform-constant-syntax">1</span><span class="Preform-plain-syntax">) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax">;</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> &lt; </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">) || (</span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> &gt; </span><span class="Preform-constant-syntax">12</span><span class="Preform-plain-syntax">)) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> &lt; </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">) || (</span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> &gt;= </span><span class="Preform-constant-syntax">60</span><span class="Preform-plain-syntax">)) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
<span class="Preform-plain-syntax"> ==&gt; { </span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> + </span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax">*60, - };</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax">}</span>
2019-03-17 14:40:57 +02:00
</pre>
2020-05-17 13:51:27 +03:00
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>And these are the Continental equivalent, with an "h" instead of
2019-03-17 14:40:57 +02:00
the colon: thus "16h15" for quarter past four in the afternoon. (The
standard English grammar doesn't use this, but translators might want to.)
</p>
2020-05-09 01:13:45 +03:00
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;continental-clock-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">1</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">colons</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">wchar_t</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">Lexer::word_text</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::first_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">));</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">for</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">=0; </span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">]; </span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">++) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (((</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">==1) || (</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">==2)) &amp;&amp; (</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">] == </span><span class="Preform-character-syntax">'h'</span><span class="Preform-plain-syntax">) &amp;&amp; (</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">+1])) {</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> &gt;= </span><span class="Preform-constant-syntax">24</span><span class="Preform-plain-syntax">) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">; </span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">colons</span><span class="Preform-plain-syntax">++;</span>
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Characters::isdigit</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">])) {</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">10</span><span class="Preform-plain-syntax">*</span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> + (</span><span class="Preform-identifier-syntax">wd</span><span class="Preform-plain-syntax">[</span><span class="Preform-identifier-syntax">t</span><span class="Preform-plain-syntax">]-</span><span class="Preform-character-syntax">'0'</span><span class="Preform-plain-syntax">); </span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax">++;</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax"> &gt;= </span><span class="Preform-constant-syntax">60</span><span class="Preform-plain-syntax">) || (</span><span class="Preform-identifier-syntax">digits</span><span class="Preform-plain-syntax"> &gt; </span><span class="Preform-constant-syntax">2</span><span class="Preform-plain-syntax">)) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> }</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">colons</span><span class="Preform-plain-syntax"> != </span><span class="Preform-constant-syntax">1</span><span class="Preform-plain-syntax">) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">ratchet</span><span class="Preform-plain-syntax">;</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> &lt; </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">) || (</span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax"> &gt; </span><span class="Preform-constant-syntax">12</span><span class="Preform-plain-syntax">)) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> &lt; </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">) || (</span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> &gt;= </span><span class="Preform-constant-syntax">60</span><span class="Preform-plain-syntax">)) { ==&gt; { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
<span class="Preform-plain-syntax"> ==&gt; { </span><span class="Preform-identifier-syntax">time_minutes</span><span class="Preform-plain-syntax"> + </span><span class="Preform-identifier-syntax">time_hours</span><span class="Preform-plain-syntax">*60, - };</span>
2020-05-09 01:13:45 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
<span class="Preform-plain-syntax">}</span>
2019-03-17 14:40:57 +02:00
</pre>
2020-05-17 13:51:27 +03:00
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. Parsing event rules. </b>The following is used to parse the preamble to rules which take place at
2019-03-17 14:40:57 +02:00
a specific time of day, or when a named event occurs.
</p>
2020-05-09 01:13:45 +03:00
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;event-rule-preamble&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
2020-07-28 21:19:38 +03:00
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">at</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;clock-time&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { pass 1 }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">at</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">the</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">time</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { NO_FIXED_TIME, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">at</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">the</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">time</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">that</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-tod.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_AtTimeThat problem</span><span class="named-paragraph-number">8.1</span></a></span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">at</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-tod.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_AtWithoutTime problem</span><span class="named-paragraph-number">8.2</span></a></span>
2019-03-17 14:40:57 +02:00
</pre>
2020-05-17 13:51:27 +03:00
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>&#167;8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_AtTimeThat problem</span><span class="named-paragraph-number">8.1</span></span><span class="Preform-comment-syntax"> =</span>
2020-05-03 03:01:21 +03:00
</p>
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_AtTimeThat</span><span class="plain-syntax">),</span>
2020-05-03 03:01:21 +03:00
<span class="plain-syntax"> </span><span class="string-syntax">"this seems to use 'that' where it should use 'when'"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"assuming it's trying to apply a rule to an event. (The convention is "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that any rule beginning 'At' is a timed one. The time can either be a "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"fixed time, as in 'At 11:10 AM: ...', or the time when some named "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"event takes place, as in 'At the time when the clock chimes: ...'.)"</span><span class="plain-syntax">);</span>
2019-03-17 14:40:57 +02:00
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-tod.html#SP8">&#167;8</a>.</li></ul>
2020-08-18 00:57:45 +03:00
<p class="commentary firstcommentary"><a id="SP8_2" class="paragraph-anchor"></a><b>&#167;8.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_AtWithoutTime problem</span><span class="named-paragraph-number">8.2</span></span><span class="comment-syntax"> =</span>
2020-05-03 03:01:21 +03:00
</p>
2019-03-17 14:40:57 +02:00
2020-05-03 03:01:21 +03:00
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_AtWithoutTime</span><span class="plain-syntax">),</span>
2020-05-03 03:01:21 +03:00
<span class="plain-syntax"> </span><span class="string-syntax">"'at' what time? No description of a time is given"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"which means that this rule can never have effect. (The convention is "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that any rule beginning 'At' is a timed one. The time can either be a "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"fixed time, as in 'At 11:10 AM: ...', or the time when some named "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"event takes place, as in 'At the time when the clock chimes: ...'.)"</span><span class="plain-syntax">);</span>
2019-03-17 14:40:57 +02:00
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-tod.html#SP8">&#167;8</a>.</li></ul>
2020-05-03 03:01:21 +03:00
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="6-lp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-rpt.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-lp.html">lp</a></li><li class="progresscurrent">tod</li><li class="progresssection"><a href="6-uem.html">uem</a></li><li class="progresssection"><a href="6-ul.html">ul</a></li><li class="progresssection"><a href="6-un.html">un</a></li><li class="progresssection"><a href="6-ins.html">ins</a></li><li class="progresssection"><a href="6-nv.html">nv</a></li><li class="progresssection"><a href="6-ipw.html">ipw</a></li><li class="progresschapter"><a href="7-am.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"></li><li class="progresschapter"><a href="12-terr.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="6-uem.html">&#10095;</a></li></ul></div>
2020-05-03 03:01:21 +03:00
</nav><!--End of weave-->
2019-03-17 14:40:57 +02:00
2020-03-19 02:11:25 +02:00
</main>
2019-03-17 14:40:57 +02:00
</body>
</html>