mirror of
https://github.com/ganelson/inform.git
synced 2024-06-29 05:24:57 +03:00
Tidier Preform grammar
This commit is contained in:
parent
84c478fa12
commit
71f1a4839f
39
docs/docs-assets/Preform-Colours.css
Normal file
39
docs/docs-assets/Preform-Colours.css
Normal file
|
@ -0,0 +1,39 @@
|
|||
/* The following correspond to the Inweb colours !definition, ..., !comment: */
|
||||
|
||||
span.Preform-definition-syntax { color: #444444; }
|
||||
span.Preform-function-syntax { color: #C00000; }
|
||||
span.Preform-identifier-syntax { color: #4040ff; }
|
||||
span.Preform-element-syntax { color: #40407f; }
|
||||
span.Preform-reserved-syntax { color: #600000; }
|
||||
span.Preform-string-syntax { color: #408040; }
|
||||
span.Preform-character-syntax { color: #204020; }
|
||||
span.Preform-constant-syntax { color: #804020; }
|
||||
span.Preform-plain-syntax { color: #000000; }
|
||||
span.Preform-extract-syntax { color: #444444; }
|
||||
span.Preform-comment-syntax { color: #404040; font-style:italic; }
|
||||
|
||||
/* This is used for the "define" or "enum" keyword on Inweb-defined constants: */
|
||||
|
||||
span.Preform-definition-keyword { color:#801010; font-weight:bold; }
|
||||
|
||||
/* These are for the angle-bracketed paragraph names: */
|
||||
|
||||
span.Preform-named-paragraph, span.Preform-named-paragraph-defn { color: #000000; font-size: 90%; }
|
||||
span.Preform-named-paragraph-number { color: #000000; font-size: 70%; font-style:italic; }
|
||||
span.Preform-named-paragraph-container {
|
||||
background: #ececf8; border: 1px solid #888888;
|
||||
}
|
||||
a.named-paragraph-link:link, a.named-paragraph-link:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.named-paragraph-link:active, a.named-paragraph-link:hover {
|
||||
background: #c8c8e8;
|
||||
}
|
||||
|
||||
/* This is the box into which multi-line stretches of code are put: */
|
||||
|
||||
pre.Preform-displayed-code {
|
||||
background: #e8f8e8;
|
||||
border: 1px solid #cccccc;
|
||||
}
|
||||
|
|
@ -21,6 +21,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -455,24 +456,21 @@ then its sentences will go to the extension's own tree.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-es.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2_1"></a><b>§6.2.1. </b>If an extension file contains the special text (outside literal mode) of
|
||||
<span class="extract"><span class="extract-syntax">---- Documentation ----</span></span> then this is taken as the end of the Inform source,
|
||||
and the beginning of a snippet of documentation about the extension; text from
|
||||
that point on is saved until later, but not broken into sentences for the
|
||||
parse tree, and it is therefore invisible to the rest of Inform. If this
|
||||
division line is not present then the extension contains only body source
|
||||
and no documentation.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ---- Documentation ----</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><extension-body></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">----</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">documentation</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-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">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> TRUE</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"> FALSE</span>
|
||||
</pre>
|
||||
<p class="commentary">then this is taken as the end of the Inform source, and the beginning of a
|
||||
snippet of documentation about the extension; text from that point on is
|
||||
saved until later, but not broken into sentences for the parse tree, and it
|
||||
is therefore invisible to the rest of Inform. If this division line is not
|
||||
present then the extension contains only body source and no documentation.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">body</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> *** ---- </span><span class="identifier-syntax">documentation</span><span class="plain-syntax"> ---- ... | ==> </span><span class="identifier-syntax">TRUE</span>
|
||||
<span class="plain-syntax"> ... ==> </span><span class="identifier-syntax">FALSE</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2_2"></a><b>§6.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Break the extension's text into body and documentation</span><span class="named-paragraph-number">6.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2_2"></a><b>§6.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Break the extension's text into body and documentation</span><span class="named-paragraph-number">6.2.2</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -21,6 +21,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -192,50 +193,54 @@ overlapping with this, and they need to match.
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">SAY_SIGF</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">NOW_SIGF</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">control</span><span class="plain-syntax">-</span><span class="identifier-syntax">structure</span><span class="plain-syntax">-</span><span class="identifier-syntax">phrase</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">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">begin</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">switch_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ... </span><span class="identifier-syntax">is</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">switch_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax">/</span><span class="identifier-syntax">unless</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">if_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">repeat_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">while_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax">/</span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">otherwise_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax">/</span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax">/</span><span class="identifier-syntax">unless</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">otherwise_if_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax">/</span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">abbreviated_otherwise_CSP</span>
|
||||
<span class="plain-syntax"> -- </span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">default_case_CSP</span>
|
||||
<span class="plain-syntax"> -- ... ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">case_CSP</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><control-structure-phrase></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">if</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">begin</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"> 0; *XP = switch_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">if</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is</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"> 0; *XP = switch_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">if/unless</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">==></span><span class="Preform-plain-syntax"> 0; *XP = if_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">repeat</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">==></span><span class="Preform-plain-syntax"> 0; *XP = repeat_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">while</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">==></span><span class="Preform-plain-syntax"> 0; *XP = while_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">else/otherwise</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"> 0; *XP = otherwise_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">else/otherwise</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">if/unless</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">==></span><span class="Preform-plain-syntax"> 0; *XP = otherwise_if_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">else/otherwise</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">==></span><span class="Preform-plain-syntax"> 0; *XP = abbreviated_otherwise_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">--</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">otherwise</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"> 0; *XP = default_case_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-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">==></span><span class="Preform-plain-syntax"> 0; *XP = case_CSP</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">end</span><span class="plain-syntax">-</span><span class="identifier-syntax">control</span><span class="plain-syntax">-</span><span class="identifier-syntax">structure</span><span class="plain-syntax">-</span><span class="identifier-syntax">phrase</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax">/</span><span class="identifier-syntax">unless</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">if_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">while_CSP</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">repeat_CSP</span>
|
||||
<span class="Preform-function-syntax"><end-control-structure-phrase></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">end</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">if/unless</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"> 0; *XP = if_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">end</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">while</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"> 0; *XP = while_CSP</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">end</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">repeat</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 0; *XP = repeat_CSP</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">other</span><span class="plain-syntax">-</span><span class="identifier-syntax">significant</span><span class="plain-syntax">-</span><span class="identifier-syntax">phrase</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">say</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">SAY_SIGF</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">now</span><span class="plain-syntax"> ... ==> </span><span class="constant-syntax">NOW_SIGF</span>
|
||||
<span class="Preform-function-syntax"><other-significant-phrase></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">say</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">==></span><span class="Preform-plain-syntax"> SAY_SIGF</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">now</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"> NOW_SIGF</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. </b>This is used to see if an "if" is being used with the comma notation:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">phrase</span><span class="plain-syntax">-</span><span class="identifier-syntax">with</span><span class="plain-syntax">-</span><span class="identifier-syntax">comma</span><span class="plain-syntax">-</span><span class="identifier-syntax">notation</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> ...... , ......</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><phrase-with-comma-notation></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-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. </b>This is used to see if an "if" is being used with the comma notation:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">instead</span><span class="plain-syntax">-</span><span class="identifier-syntax">keyword</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instead</span><span class="plain-syntax"> ... |</span>
|
||||
<span class="plain-syntax"> ... </span><span class="identifier-syntax">instead</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><instead-keyword></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">instead</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">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">instead</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. </b>Finally, this is used to see if a control structure opens a block:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">phrase</span><span class="plain-syntax">-</span><span class="identifier-syntax">beginning</span><span class="plain-syntax">-</span><span class="identifier-syntax">block</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> ... </span><span class="identifier-syntax">begin</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><phrase-beginning-block></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-constant-syntax">begin</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10"></a><b>§10. </b>And some miscellaneous provisions:
|
||||
</p>
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -404,41 +405,42 @@ the source text it governs. For example,
|
|||
allowed; they should probably be withdrawn.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="reserved-syntax">heading</span><span class="plain-syntax">-</span><span class="identifier-syntax">qualifier</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> ... ( <</span><span class="identifier-syntax">bracketed</span><span class="plain-syntax">-</span><span class="reserved-syntax">heading</span><span class="plain-syntax">-</span><span class="identifier-syntax">qualifier</span><span class="plain-syntax">> ) | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="plain-syntax"> ... </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">release</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">NOT_FOR_RELEASE_HQ</span>
|
||||
<span class="plain-syntax"> ... </span><span class="reserved-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">release</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">FOR_RELEASE_ONLY_HQ</span>
|
||||
<span class="plain-syntax"> ... </span><span class="identifier-syntax">unindexed</span><span class="plain-syntax"> ==> </span><span class="constant-syntax">UNINDEXED_HQ</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><heading-qualifier></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">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><bracketed-heading-qualifier></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">==></span><span class="Preform-plain-syntax"> R[1]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</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"> NOT_FOR_RELEASE_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">only</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"> FOR_RELEASE_ONLY_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">unindexed</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> UNINDEXED_HQ</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">bracketed</span><span class="plain-syntax">-</span><span class="reserved-syntax">heading</span><span class="plain-syntax">-</span><span class="identifier-syntax">qualifier</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">release</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">NOT_FOR_RELEASE_HQ</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">release</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">FOR_RELEASE_ONLY_HQ</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unindexed</span><span class="plain-syntax"> | ==> </span><span class="constant-syntax">UNINDEXED_HQ</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">platform</span><span class="plain-syntax">-</span><span class="identifier-syntax">qualifier</span><span class="plain-syntax">> | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">qualifier</span><span class="plain-syntax">> ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="Preform-function-syntax"><bracketed-heading-qualifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</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"> NOT_FOR_RELEASE_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">only</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"> FOR_RELEASE_ONLY_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">unindexed</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"> UNINDEXED_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><platform-qualifier></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"> R[1]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-qualifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> R[1]</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">platform</span><span class="plain-syntax">-</span><span class="identifier-syntax">qualifier</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">platform</span><span class="plain-syntax">-</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">> </span><span class="identifier-syntax">only</span><span class="plain-syntax"> | ==> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">[1])?</span><span class="identifier-syntax">PLATFORM_MET_HQ:PLATFORM_UNMET_HQ</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> <</span><span class="identifier-syntax">platform</span><span class="plain-syntax">-</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">> ==> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">[1])?</span><span class="identifier-syntax">PLATFORM_UNMET_HQ:PLATFORM_MET_HQ</span>
|
||||
<span class="Preform-function-syntax"><platform-qualifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><platform-identifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">only</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"> (R[1])?PLATFORM_MET_HQ:PLATFORM_UNMET_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><platform-identifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> (R[1])?PLATFORM_UNMET_HQ:PLATFORM_MET_HQ</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">platform</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">language</span><span class="plain-syntax">-</span><span class="identifier-syntax">element</span><span class="plain-syntax">> </span><span class="identifier-syntax">language</span><span class="plain-syntax"> </span><span class="identifier-syntax">element</span><span class="plain-syntax"> | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="plain-syntax"> ...... </span><span class="identifier-syntax">language</span><span class="plain-syntax"> </span><span class="identifier-syntax">element</span><span class="plain-syntax"> | ==> </span><span class="named-paragraph-container code-font"><a href="6-hdn.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_UnknownLanguageElement problem</span><span class="named-paragraph-number">12.1</span></a></span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">current</span><span class="plain-syntax">-</span><span class="identifier-syntax">virtual</span><span class="plain-syntax">-</span><span class="identifier-syntax">machine</span><span class="plain-syntax">> | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="plain-syntax"> ...... ==> </span><span class="named-paragraph-container code-font"><a href="6-hdn.html#SP12_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_UnknownVirtualMachine problem</span><span class="named-paragraph-number">12.2</span></a></span>
|
||||
<span class="Preform-function-syntax"><platform-identifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><language-element></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">language</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">element</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"> R[1]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">language</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">element</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="named-paragraph-container code-font"><a href="6-hdn.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_UnknownLanguageElement problem</span><span class="named-paragraph-number">12.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><current-virtual-machine></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"> R[1]</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="named-paragraph-container code-font"><a href="6-hdn.html#SP12_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_UnknownVirtualMachine problem</span><span class="named-paragraph-number">12.2</span></a></span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">qualifier</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">use</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">> | ==> </span><span class="constant-syntax">USE_WITH_HQ</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">use</span><span class="plain-syntax"> </span><span class="identifier-syntax">without</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">> | ==> </span><span class="constant-syntax">USE_WITHOUT_HQ</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">use</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">> | ==> </span><span class="constant-syntax">USE_WITHOUT_HQ</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">place</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> (<</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">>) </span><span class="identifier-syntax">in</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">> | ==> </span><span class="constant-syntax">IN_PLACE_OF_HQ</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">place</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> ...... </span><span class="identifier-syntax">in</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">> ==> </span><span class="constant-syntax">IN_PLACE_OF_HQ</span>
|
||||
<span class="Preform-function-syntax"><extension-qualifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-identifier></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"> USE_WITH_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">without</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-identifier></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"> USE_WITHOUT_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">for</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-identifier></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"> USE_WITHOUT_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">place</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-identifier></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"> IN_PLACE_OF_HQ</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">place</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">......</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-identifier></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> IN_PLACE_OF_HQ</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</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">by</span><span class="plain-syntax"> ...... ==> </span><span class="named-paragraph-container code-font"><a href="6-hdn.html#SP12_3" class="named-paragraph-link"><span class="named-paragraph">Set for-use-with extension identifier</span><span class="named-paragraph-number">12.3</span></a></span>
|
||||
<span class="Preform-function-syntax"><extension-identifier></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-constant-syntax">by</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="named-paragraph-container code-font"><a href="6-hdn.html#SP12_3" class="named-paragraph-link"><span class="named-paragraph">Set for-use-with extension identifier</span><span class="named-paragraph-number">12.3</span></a></span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1"></a><b>§12.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_UnknownLanguageElement problem</span><span class="named-paragraph-number">12.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1"></a><b>§12.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_UnknownLanguageElement problem</span><span class="named-paragraph-number">12.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -480,18 +482,19 @@ the result <span class="extract"><span class="extract-syntax">TRUE</span></span>
|
|||
otherwise.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">current</span><span class="plain-syntax">-</span><span class="identifier-syntax">virtual</span><span class="plain-syntax">-</span><span class="identifier-syntax">machine</span><span class="plain-syntax">> </span><span class="identifier-syntax">internal</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">virtual</span><span class="plain-syntax">-</span><span class="identifier-syntax">machine</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">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vms</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">compatibility_specification</span><span class="plain-syntax"> *) <<</span><span class="identifier-syntax">rp</span><span class="plain-syntax">>>;</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Compatibility::with</span><span class="plain-syntax">(</span><span class="identifier-syntax">vms</span><span class="plain-syntax">, </span><a href="1-ic.html#SP9" class="function-link"><span class="function-syntax">Supervisor::current_vm</span></a><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">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">X</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">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><current-virtual-machine></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">{</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">virtual</span><span class="Preform-plain-syntax">-</span><span class="Preform-identifier-syntax">machine</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-identifier-syntax">compatibility_specification</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">vms</span><span class="Preform-plain-syntax"> = (</span><span class="Preform-identifier-syntax">compatibility_specification</span><span class="Preform-plain-syntax"> *) <<</span><span class="Preform-identifier-syntax">rp</span><span class="Preform-plain-syntax">>>;</span>
|
||||
<span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">X</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">Compatibility::with</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vms</span><span class="Preform-plain-syntax">, </span><a href="1-ic.html#SP9" class="function-link"><span class="Preform-function-syntax">Supervisor::current_vm</span></a><span class="Preform-plain-syntax">());</span>
|
||||
<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><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> {</span>
|
||||
<span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">X</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14"></a><b>§14. The heading tree. </b>Until <a href="6-hdn.html#SP14" class="internal">Headings::assemble_tree</a> runs, the <a href="6-hdn.html#SP6" class="internal">heading</a> nodes listed as belonging
|
||||
to the heading tree are not in fact formed up into a tree structure.
|
||||
</p>
|
||||
|
|
|
@ -21,6 +21,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -151,25 +152,26 @@ read twice.
|
|||
word "Include", which might e.g. be "Locksmith by Emily Short".
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">title</span><span class="plain-syntax">-</span><span class="identifier-syntax">and</span><span class="plain-syntax">-</span><span class="identifier-syntax">version</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">version</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">version</span><span class="plain-syntax">> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> <</span><span class="identifier-syntax">definite</span><span class="plain-syntax">-</span><span class="identifier-syntax">article</span><span class="plain-syntax">> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">> | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">version</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">version</span><span class="plain-syntax">> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">> | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">definite</span><span class="plain-syntax">-</span><span class="identifier-syntax">article</span><span class="plain-syntax">> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">> | ==> -1</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">> ==> -1</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><extension-title-and-version></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">version</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-version></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><definite-article></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-unversioned></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"> R[1]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">version</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-version></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-unversioned></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"> R[1]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><definite-article></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-unversioned></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"> -1</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-unversioned></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> -1</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">-</span><span class="identifier-syntax">inner</span><span class="plain-syntax">> ( ... ) | ==> </span><span class="constant-syntax">0</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">-</span><span class="identifier-syntax">inner</span><span class="plain-syntax">> ==> </span><span class="constant-syntax">0</span>
|
||||
<span class="Preform-function-syntax"><extension-unversioned></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-unversioned-inner></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">)</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"> 0</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-unversioned-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 0</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">unversioned</span><span class="plain-syntax">-</span><span class="identifier-syntax">inner</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">> *** | ==> </span><span class="named-paragraph-container code-font"><a href="6-inc.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_IncludeExtQuoted problem</span><span class="named-paragraph-number">2.1</span></a></span>
|
||||
<span class="plain-syntax"> ... ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; <<</span><span class="identifier-syntax">t1</span><span class="plain-syntax">>> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">); <<</span><span class="identifier-syntax">t2</span><span class="plain-syntax">>> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)</span>
|
||||
<span class="Preform-function-syntax"><extension-unversioned-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-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">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-inc.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_IncludeExtQuoted problem</span><span class="named-paragraph-number">2.1</span></a></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"> 0; <<t1>> = Wordings::first_wn(W); <<t2>> = Wordings::last_wn(W)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b>Quite a popular mistake, this:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_IncludeExtQuoted problem</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_IncludeExtQuoted problem</span><span class="named-paragraph-number">2.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -183,12 +185,13 @@ word "Include", which might e.g. be "Locksmith by Emily Short".
|
|||
"12/110410", but at this stage it accepts anything: actual parsing comes later.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">version</span><span class="plain-syntax">> </span><span class="identifier-syntax">internal</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">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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 class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><extension-version></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-identifier-syntax">X</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">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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -395,12 +398,13 @@ use an extension which is marked as not working on the current VM.
|
|||
<p>Version 3 of Pantomime Sausages by Mr Punch begins here.</p>
|
||||
</blockquote>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">begins</span><span class="plain-syntax">-</span><span class="identifier-syntax">here</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</span><span class="plain-syntax">-</span><span class="identifier-syntax">subject</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">title</span><span class="plain-syntax">-</span><span class="identifier-syntax">and</span><span class="plain-syntax">-</span><span class="identifier-syntax">version</span><span class="plain-syntax">> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> ... |</span>
|
||||
<span class="plain-syntax"> ... ==> </span><span class="named-paragraph-container code-font"><a href="6-inc.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Issue problem</span><span class="named-paragraph-number">8.1</span></a></span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><begins-here-sentence-subject></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-title-and-version></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</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">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-inc.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Issue problem</span><span class="named-paragraph-number">8.1</span></a></span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8_1"></a><b>§8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem</span><span class="named-paragraph-number">8.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_1"></a><b>§8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem</span><span class="named-paragraph-number">8.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -424,25 +428,26 @@ side-effects: we merely verify that the name matches the one quoted in
|
|||
the "begins here".
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">the</span><span class="plain-syntax">-</span><span class="identifier-syntax">prefix</span><span class="plain-syntax">-</span><span class="reserved-syntax">for</span><span class="plain-syntax">-</span><span class="identifier-syntax">extensions</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> ...</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><the-prefix-for-extensions></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">the</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Inclusions::check_ends_here</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">Inclusions::check_ends_here</span></span>:<br/>Source Text - <a href="6-st.html#SP12">§12</a></span></button><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="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inclusions_errors_to</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inclusions_errors_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</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">ParseTree::get_text</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">if</span><span class="plain-syntax"> (<</span><span class="identifier-syntax">the</span><span class="plain-syntax">-</span><span class="identifier-syntax">prefix</span><span class="plain-syntax">-</span><span class="reserved-syntax">for</span><span class="plain-syntax">-</span><span class="identifier-syntax">extensions</span><span class="plain-syntax">>(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(<</span><span class="identifier-syntax">the</span><span class="plain-syntax">-</span><span class="identifier-syntax">prefix</span><span class="plain-syntax">-</span><span class="reserved-syntax">for</span><span class="plain-syntax">-</span><span class="identifier-syntax">extensions</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">T</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</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::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax"> = </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SYNTAX_CE</span><span class="plain-syntax">, </span><span class="constant-syntax">ExtMisidentifiedEnds_SYNERROR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ce.html#SP3" class="function-link"><span class="function-syntax">CopyErrors::supply_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">PN</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ce.html#SP3" class="function-link"><span class="function-syntax">CopyErrors::supply_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inclusions_errors_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inclusions_errors_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="Preform-reserved-syntax">void</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">Inclusions::check_ends_here</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="Preform-comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="Preform-function-syntax">Inclusions::check_ends_here</span></span>:<br/>Source Text - <a href="6-st.html#SP12">§12</a></span></button><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">parse_node</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">PN</span><span class="Preform-plain-syntax">, </span><span class="Preform-reserved-syntax">inform_extension</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">E</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">inbuild_copy</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">inclusions_errors_to</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">inclusions_errors_to</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">E</span><span class="Preform-plain-syntax">-></span><span class="Preform-element-syntax">as_copy</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">wording</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">ParseTree::get_text</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">PN</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">the</span><span class="Preform-plain-syntax">-</span><span class="Preform-identifier-syntax">prefix</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">extensions</span><span class="Preform-plain-syntax">>(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)) </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">GET_RW</span><span class="Preform-plain-syntax">(<</span><span class="Preform-identifier-syntax">the</span><span class="Preform-plain-syntax">-</span><span class="Preform-identifier-syntax">prefix</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">extensions</span><span class="Preform-plain-syntax">>, </span><span class="Preform-constant-syntax">1</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">wording</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">Feeds::feed_stream</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">E</span><span class="Preform-plain-syntax">-></span><span class="Preform-element-syntax">as_copy</span><span class="Preform-plain-syntax">-></span><span class="Preform-element-syntax">edition</span><span class="Preform-plain-syntax">-></span><span class="Preform-element-syntax">work</span><span class="Preform-plain-syntax">-></span><span class="Preform-element-syntax">title</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">Wordings::match</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">W</span><span class="Preform-plain-syntax">) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">copy_error</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">CE</span><span class="Preform-plain-syntax"> = </span><a href="2-ce.html#SP2" class="function-link"><span class="Preform-function-syntax">CopyErrors::new</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-constant-syntax">SYNTAX_CE</span><span class="Preform-plain-syntax">, </span><span class="Preform-constant-syntax">ExtMisidentifiedEnds_SYNERROR</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><a href="2-ce.html#SP3" class="function-link"><span class="Preform-function-syntax">CopyErrors::supply_node</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">CE</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">PN</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><a href="2-ce.html#SP3" class="function-link"><span class="Preform-function-syntax">CopyErrors::supply_wording</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">CE</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">ParseTree::get_text</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">PN</span><span class="Preform-plain-syntax">));</span>
|
||||
<span class="Preform-plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="Preform-function-syntax">Copies::attach_error</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">inclusions_errors_to</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">CE</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">inclusions_errors_to</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-tof.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresscurrent">inc</li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-ed.html">7</a></li><li class="progressnext"><a href="6-cs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -22,6 +22,7 @@ function togglePopup(material_id) {
|
|||
<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/ConsoleText-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -303,27 +304,28 @@ sections of source not being included for one reason or another.
|
|||
and here goes:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">dividing</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</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">start</span><span class="plain-syntax">-</span><span class="identifier-syntax">of</span><span class="plain-syntax">-</span><span class="identifier-syntax">paragraph</span><span class="plain-syntax">> <</span><span class="reserved-syntax">heading</span><span class="plain-syntax">> | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[2]</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">end</span><span class="plain-syntax">-</span><span class="identifier-syntax">marker</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</span><span class="plain-syntax">> ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><dividing-sentence></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><if-start-of-paragraph></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><heading></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"> R[2]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><extension-end-marker-sentence></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> R[1]</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="reserved-syntax">heading</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">volume</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">1</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">book</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">2</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">part</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">3</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">chapter</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">4</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">section</span><span class="plain-syntax"> ... ==> </span><span class="constant-syntax">5</span>
|
||||
<span class="Preform-function-syntax"><heading></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">volume</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">==></span><span class="Preform-plain-syntax"> 1</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">book</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">==></span><span class="Preform-plain-syntax"> 2</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">part</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">==></span><span class="Preform-plain-syntax"> 3</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">chapter</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">==></span><span class="Preform-plain-syntax"> 4</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">section</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"> 5</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">extension</span><span class="plain-syntax">-</span><span class="identifier-syntax">end</span><span class="plain-syntax">-</span><span class="identifier-syntax">marker</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> ... </span><span class="identifier-syntax">begin</span><span class="plain-syntax">/</span><span class="identifier-syntax">begins</span><span class="plain-syntax"> </span><span class="identifier-syntax">here</span><span class="plain-syntax"> | ==> -1; </span><span class="named-paragraph-container code-font"><a href="6-st.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Check we can begin an extension here</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> ... </span><span class="identifier-syntax">end</span><span class="plain-syntax">/</span><span class="identifier-syntax">ends</span><span class="plain-syntax"> </span><span class="identifier-syntax">here</span><span class="plain-syntax"> ==> -2; </span><span class="named-paragraph-container code-font"><a href="6-st.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Check we can end an extension here</span><span class="named-paragraph-number">9.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="Preform-function-syntax"><extension-end-marker-sentence></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-constant-syntax">begin/begins</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</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"> -1; </span><span class="named-paragraph-container code-font"><a href="6-st.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Check we can begin an extension here</span><span class="named-paragraph-number">9.1</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">end/ends</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> -2; </span><span class="named-paragraph-container code-font"><a href="6-st.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Check we can end an extension here</span><span class="named-paragraph-number">9.2</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_1"></a><b>§9.1. </b>Note that the extension end markers are only read in extensions, so they can
|
||||
never accidentally match in the main source text.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check we can begin an extension here</span><span class="named-paragraph-number">9.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check we can begin an extension here</span><span class="named-paragraph-number">9.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -348,36 +350,38 @@ never accidentally match in the main source text.
|
|||
<p class="commentary firstcommentary"><a id="SP10"></a><b>§10. </b><a href="../syntax-module/index.html" class="internal">syntax</a> also requires this definition:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">structural</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</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">start</span><span class="plain-syntax">-</span><span class="identifier-syntax">of</span><span class="plain-syntax">-</span><span class="identifier-syntax">source</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">> <</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">BIBLIOGRAPHIC_NT</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">start</span><span class="plain-syntax">-</span><span class="identifier-syntax">of</span><span class="plain-syntax">-</span><span class="identifier-syntax">source</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">> <</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">BIBLIOGRAPHIC_NT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">language</span><span class="plain-syntax">-</span><span class="identifier-syntax">modifying</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</span><span class="plain-syntax">> | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]</span>
|
||||
<span class="plain-syntax"> * | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRACE_NT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> * <</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">-</span><span class="identifier-syntax">without</span><span class="plain-syntax">-</span><span class="identifier-syntax">subs</span><span class="plain-syntax">> | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRACE_NT</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">start</span><span class="plain-syntax">-</span><span class="identifier-syntax">of</span><span class="plain-syntax">-</span><span class="identifier-syntax">paragraph</span><span class="plain-syntax">> </span><span class="identifier-syntax">table</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">TABLE_NT</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">start</span><span class="plain-syntax">-</span><span class="identifier-syntax">of</span><span class="plain-syntax">-</span><span class="identifier-syntax">paragraph</span><span class="plain-syntax">> </span><span class="identifier-syntax">equation</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">EQUATION_NT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">include</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> ... </span><span class="identifier-syntax">by</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="identifier-syntax">INCLUDE_NT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">include</span><span class="plain-syntax"> ... </span><span class="identifier-syntax">by</span><span class="plain-syntax"> ... | ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="identifier-syntax">INCLUDE_NT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">include</span><span class="plain-syntax"> (- ... ==> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">INFORM6CODE_NT</span><span class="plain-syntax">;</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><structural-sentence></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><if-start-of-source-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></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"> 0; sfsm->nt = BIBLIOGRAPHIC_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><if-start-of-source-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></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">==></span><span class="Preform-plain-syntax"> 0; sfsm->nt = BIBLIOGRAPHIC_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><language-modifying-sentence></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"> R[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">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 0; sfsm->nt = TRACE_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">*</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text-without-subs></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"> 0; sfsm->nt = TRACE_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><if-start-of-paragraph></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">table</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">==></span><span class="Preform-plain-syntax"> 0; sfsm->nt = TABLE_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><if-start-of-paragraph></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">equation</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">==></span><span class="Preform-plain-syntax"> 0; sfsm->nt = EQUATION_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">include</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">the</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</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">==></span><span class="Preform-plain-syntax"> 0; sfsm->nt = INCLUDE_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">include</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</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">==></span><span class="Preform-plain-syntax"> 0; sfsm->nt = INCLUDE_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">include</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-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">==></span><span class="Preform-plain-syntax"> 0; sfsm->nt = INFORM6CODE_NT;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11"></a><b>§11. </b>Properly speaking, despite the definition above, language modifying sentences
|
||||
are nonstructural. So what are they doing here? The answer is that we need to
|
||||
read them early on, because they affect the way that they parse all other
|
||||
sentences. Whereas other nonstructural sentences can wait, these can't.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">language</span><span class="plain-syntax">-</span><span class="identifier-syntax">modifying</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">include</span><span class="plain-syntax"> (- ### </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">preform</span><span class="plain-syntax"> </span><span class="identifier-syntax">grammar</span><span class="plain-syntax"> | ==> -2; </span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">-></span><span class="identifier-syntax">nt</span><span class="plain-syntax"> = </span><span class="constant-syntax">INFORM6CODE_NT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">use</span><span class="plain-syntax"> ... </span><span class="identifier-syntax">language</span><span class="plain-syntax"> </span><span class="identifier-syntax">element</span><span class="plain-syntax">/</span><span class="identifier-syntax">elements</span><span class="plain-syntax"> ==> -1</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><language-modifying-sentence></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">include</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</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">preform</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">grammar</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"> -2; sfsm->nt = INFORM6CODE_NT;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">language</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">element/elements</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> -1</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12"></a><b>§12. </b>The following callback function is called by <a href="../syntax-module/index.html" class="internal">syntax</a> when it breaks a
|
||||
sentence of type <span class="extract"><span class="extract-syntax">BEGINHERE_NT</span></span> or <span class="extract"><span class="extract-syntax">ENDHERE_NT</span></span> — i.e., the beginning or end
|
||||
sentence of type <span class="extract"><span class="Preform-extract-syntax">BEGINHERE_NT</span></span> or <span class="extract"><span class="Preform-extract-syntax">ENDHERE_NT</span></span> — i.e., the beginning or end
|
||||
of an extension.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">BEGIN_OR_END_HERE_SYNTAX_CALLBACK</span><span class="plain-syntax"> </span><a href="6-st.html#SP12" class="function-link"><span class="function-syntax">SourceText::new_beginend</span></a>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="Preform-constant-syntax">BEGIN_OR_END_HERE_SYNTAX_CALLBACK</span><span class="Preform-plain-syntax"> </span><a href="6-st.html#SP12" class="function-link"><span class="Preform-function-syntax">SourceText::new_beginend</span></a>
|
||||
</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">SourceText::new_beginend</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="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<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">
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -99,16 +100,17 @@ after it, and may therefore affect how subsequent sentences are broken.
|
|||
to declare the title and author.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">titling</span><span class="plain-syntax">-</span><span class="identifier-syntax">line</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">plain</span><span class="plain-syntax">-</span><span class="identifier-syntax">titling</span><span class="plain-syntax">-</span><span class="identifier-syntax">line</span><span class="plain-syntax">> ( </span><span class="identifier-syntax">in</span><span class="plain-syntax"> <</span><span class="identifier-syntax">natural</span><span class="plain-syntax">-</span><span class="identifier-syntax">language</span><span class="plain-syntax">> ) | ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
|
||||
<span class="plain-syntax"> <</span><span class="identifier-syntax">plain</span><span class="plain-syntax">-</span><span class="identifier-syntax">titling</span><span class="plain-syntax">-</span><span class="identifier-syntax">line</span><span class="plain-syntax">> ==> </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]; *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><titling-line></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><plain-titling-line></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><natural-language></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">==></span><span class="Preform-plain-syntax"> R[1]; *XP = RP[2];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><plain-titling-line></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> R[1]; *XP = NULL;</span>
|
||||
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">plain</span><span class="plain-syntax">-</span><span class="identifier-syntax">titling</span><span class="plain-syntax">-</span><span class="identifier-syntax">line</span><span class="plain-syntax">> ::=</span>
|
||||
<span class="plain-syntax"> {<</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">-</span><span class="identifier-syntax">without</span><span class="plain-syntax">-</span><span class="identifier-syntax">subs</span><span class="plain-syntax">>} </span><span class="identifier-syntax">by</span><span class="plain-syntax"> ... | ==> </span><span class="identifier-syntax">TRUE</span>
|
||||
<span class="plain-syntax"> {<</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">-</span><span class="identifier-syntax">text</span><span class="plain-syntax">-</span><span class="identifier-syntax">without</span><span class="plain-syntax">-</span><span class="identifier-syntax">subs</span><span class="plain-syntax">>} ==> </span><span class="identifier-syntax">FALSE</span>
|
||||
<span class="Preform-function-syntax"><plain-titling-line></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{<quoted-text-without-subs>}</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">by</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">==></span><span class="Preform-plain-syntax"> TRUE</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{<quoted-text-without-subs>}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> FALSE</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>§1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Extract title and author name wording</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>§1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Extract title and author name wording</span><span class="named-paragraph-number">1.2</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -21,6 +21,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -93,10 +94,11 @@ unyielding the user's views, it's not allowed to write:
|
|||
<p class="commentary">so the sentence-terminator will certainly be a full stop.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">use</span><span class="plain-syntax">-</span><span class="identifier-syntax">option</span><span class="plain-syntax">-</span><span class="identifier-syntax">sentence</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">use</span><span class="plain-syntax"> ... .</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><use-option-sentence-shape></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">.</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>There is just one options file, so no need to load it more than once.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<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">
|
||||
<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">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -67,36 +68,38 @@ out of scope when needed. Instead, we have to wrap it up in a holder object
|
|||
to give it permanency.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">version</span><span class="plain-syntax">-</span><span class="identifier-syntax">number</span><span class="plain-syntax">> </span><span class="identifier-syntax">internal</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">vtext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">vtext</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</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">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">vtext</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">result</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">VersionNumbers::is_null</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</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">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">semantic_version_number_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="identifier-syntax">semantic_version_number_holder</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H</span><span class="plain-syntax">-></span><span class="identifier-syntax">version</span><span class="plain-syntax"> = </span><span class="identifier-syntax">V</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">H</span><span class="plain-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">vtext</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">result</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><version-number></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-identifier-syntax">TEMPORARY_TEXT</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vtext</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">WRITE_TO</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vtext</span><span class="Preform-plain-syntax">, </span><span class="Preform-string-syntax">"%W"</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-identifier-syntax">semantic_version_number</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">V</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">VersionNumbers::from_text</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vtext</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">result</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">FALSE</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">VersionNumbers::is_null</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">V</span><span class="Preform-plain-syntax">) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">result</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><span class="Preform-identifier-syntax">semantic_version_number_holder</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">H</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">CREATE</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">semantic_version_number_holder</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">H</span><span class="Preform-plain-syntax">-></span><span class="Preform-identifier-syntax">version</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">V</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax"> = (</span><span class="Preform-reserved-syntax">void</span><span class="Preform-plain-syntax"> *) </span><span class="Preform-identifier-syntax">H</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">DISCARD_TEXT</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vtext</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">result</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>The following nonterminal matches any valid description of a virtual machine,
|
||||
with result <span class="extract"><span class="extract-syntax">TRUE</span></span> if the current target VM matches that description and
|
||||
<span class="extract"><span class="extract-syntax">FALSE</span></span> if not.
|
||||
with result <span class="extract"><span class="Preform-extract-syntax">TRUE</span></span> if the current target VM matches that description and
|
||||
<span class="extract"><span class="Preform-extract-syntax">FALSE</span></span> if not.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"><</span><span class="identifier-syntax">virtual</span><span class="plain-syntax">-</span><span class="identifier-syntax">machine</span><span class="plain-syntax">> </span><span class="identifier-syntax">internal</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">vtext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">vtext</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</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">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Compatibility::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">vtext</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">C</span><span class="plain-syntax">) { *</span><span class="identifier-syntax">XP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</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="identifier-syntax">XP</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>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><virtual-machine></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">{</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TEMPORARY_TEXT</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vtext</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">WRITE_TO</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vtext</span><span class="Preform-plain-syntax">, </span><span class="Preform-string-syntax">"%W"</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-identifier-syntax">compatibility_specification</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">C</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">Compatibility::from_text</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">vtext</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">C</span><span class="Preform-plain-syntax">) { *</span><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">C</span><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><span class="Preform-identifier-syntax">XP</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">NULL</span><span class="Preform-plain-syntax">; </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-cs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresscurrent">vmg</li><li class="progresschapter"><a href="7-ed.html">7</a></li><li class="progressnext"><a href="7-ed.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -326,19 +326,17 @@ then its sentences will go to the extension's own tree.
|
|||
E->body_text_unbroken = FALSE;
|
||||
|
||||
@ If an extension file contains the special text (outside literal mode) of
|
||||
= (text)
|
||||
---- Documentation ----
|
||||
=
|
||||
then this is taken as the end of the Inform source, and the beginning of a
|
||||
snippet of documentation about the extension; text from that point on is
|
||||
saved until later, but not broken into sentences for the parse tree, and it
|
||||
is therefore invisible to the rest of Inform. If this division line is not
|
||||
present then the extension contains only body source and no documentation.
|
||||
|---- Documentation ----| then this is taken as the end of the Inform source,
|
||||
and the beginning of a snippet of documentation about the extension; text from
|
||||
that point on is saved until later, but not broken into sentences for the
|
||||
parse tree, and it is therefore invisible to the rest of Inform. If this
|
||||
division line is not present then the extension contains only body source
|
||||
and no documentation.
|
||||
|
||||
=
|
||||
<extension-body> ::=
|
||||
*** ---- documentation ---- ... | ==> TRUE
|
||||
... ==> FALSE
|
||||
*** ---- documentation ---- ... | ==> TRUE
|
||||
... ==> FALSE
|
||||
|
||||
@<Break the extension's text into body and documentation@> =
|
||||
<extension-body>(EXW);
|
||||
|
|
|
@ -316,11 +316,11 @@ allowed; they should probably be withdrawn.
|
|||
...... ==> @<Issue PM_UnknownVirtualMachine problem@>
|
||||
|
||||
<extension-qualifier> ::=
|
||||
for use with <extension-identifier> | ==> USE_WITH_HQ
|
||||
for use without <extension-identifier> | ==> USE_WITHOUT_HQ
|
||||
not for use with <extension-identifier> | ==> USE_WITHOUT_HQ
|
||||
in place of (<quoted-text>) in <extension-identifier> | ==> IN_PLACE_OF_HQ
|
||||
in place of ...... in <extension-identifier> ==> IN_PLACE_OF_HQ
|
||||
for use with <extension-identifier> | ==> USE_WITH_HQ
|
||||
for use without <extension-identifier> | ==> USE_WITHOUT_HQ
|
||||
not for use with <extension-identifier> | ==> USE_WITHOUT_HQ
|
||||
in place of ( <quoted-text> ) in <extension-identifier> | ==> IN_PLACE_OF_HQ
|
||||
in place of ...... in <extension-identifier> ==> IN_PLACE_OF_HQ
|
||||
|
||||
<extension-identifier> ::=
|
||||
...... by ...... ==> @<Set for-use-with extension identifier@>
|
||||
|
|
Loading…
Reference in a new issue