228 lines
42 KiB
HTML
228 lines
42 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Line Categories</title>
|
|
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
|
|
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<script>
|
|
function togglePopup(material_id) {
|
|
var popup = document.getElementById(material_id);
|
|
popup.classList.toggle("show");
|
|
}
|
|
</script>
|
|
|
|
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
|
|
</head>
|
|
<body class="commentary-font">
|
|
<nav role="navigation">
|
|
<h1><a href="../index.html">
|
|
<img src="../docs-assets/Octagram.png" width=72 height=72">
|
|
</a></h1>
|
|
<ul><li><a href="index.html"><span class="selectedlink">inweb</span></a></li>
|
|
</ul><h2>Foundation Module</h2><ul>
|
|
<li><a href="../foundation-module/index.html">foundation</a></li>
|
|
<li><a href="../foundation-test/index.html">foundation-test</a></li>
|
|
</ul><h2>Example Webs</h2><ul>
|
|
<li><a href="../goldbach/index.html">goldbach</a></li>
|
|
<li><a href="../twinprimes/twinprimes.html">twinprimes</a></li>
|
|
<li><a href="../eastertide/index.html">eastertide</a></li>
|
|
</ul><h2>Repository</h2><ul>
|
|
<li><a href="https://github.com/ganelson/inweb"><img src="../docs-assets/github.png" height=18> github</a></li>
|
|
</ul><h2>Related Projects</h2><ul>
|
|
<li><a href="../../../inform/docs/index.html">inform</a></li>
|
|
<li><a href="../../../intest/docs/index.html">intest</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
<main role="main">
|
|
<!--Weave of 'Line Categories' generated by Inweb-->
|
|
<div class="breadcrumbs">
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#2">Chapter 2: Parsing a Web</a></li><li><b>Line Categories</b></li></ul></div>
|
|
<p class="purpose">To store individual lines from webs, and to categorise them according to their meaning.</p>
|
|
|
|
<ul class="toc"><li><a href="2-lc.html#SP1">§1. Line storage</a></li><li><a href="2-lc.html#SP3">§3. Categories</a></li><li><a href="2-lc.html#SP5">§5. Command codes</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Line storage. </b>In the next section, we'll read in an entire web, building its hierarchical
|
|
structure of chapters, sections and eventually paragraphs. But before we do
|
|
that, we'll define the structure used to store a single line of the web.
|
|
</p>
|
|
|
|
<p class="commentary">Because Inweb markup makes use of the special characters <span class="extract"><span class="extract-syntax">@</span></span> and <span class="extract"><span class="extract-syntax">=</span></span> as
|
|
dividers, but only in column 1, the important divisions between material
|
|
all effectively occur at line boundaries — this is a major point of
|
|
difference with, for example, CWEB, for which the source is just a stream
|
|
of characters in which all white space is equivalent. Because Inweb source
|
|
is so tidily divisible into lines, we can usefully make each source line
|
|
correspond to one of these:
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">; </span><span class="comment-syntax"> the text as read in</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text_operand</span><span class="plain-syntax">; </span><span class="comment-syntax"> meaning depends on category</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text_operand2</span><span class="plain-syntax">; </span><span class="comment-syntax"> meaning depends on category</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">category</span><span class="plain-syntax">; </span><span class="comment-syntax"> what sort of line this is: an </span><span class="extract"><span class="extract-syntax">*_LCAT</span></span><span class="comment-syntax"> value</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">command_code</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">COMMAND_LCAT</span></span><span class="comment-syntax"> lines: a </span><span class="extract"><span class="extract-syntax">*_CMD</span></span><span class="comment-syntax"> value</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">default_defn</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">BEGIN_DEFINITION_LCAT</span></span><span class="comment-syntax"> lines</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">plainer</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">BEGIN_CODE_LCAT</span></span><span class="comment-syntax"> lines: suppresses box</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">enable_hyperlinks</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">CODE_BODY_LCAT</span></span><span class="comment-syntax"> lines: link URLs in weave</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colour_as</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">TEXT_EXTRACT_LCAT</span></span><span class="comment-syntax"> lines</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_commentary</span><span class="plain-syntax">; </span><span class="comment-syntax"> flag</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_defined</span><span class="plain-syntax">; </span><span class="comment-syntax"> if any C-like function is defined on this line</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">preform_nonterminal</span><span class="plain-syntax"> *</span><span class="identifier-syntax">preform_nonterminal_defined</span><span class="plain-syntax">; </span><span class="comment-syntax"> similarly</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">suppress_tangling</span><span class="plain-syntax">; </span><span class="comment-syntax"> if e.g., lines are tangled out of order</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">interface_line_identified</span><span class="plain-syntax">; </span><span class="comment-syntax"> only relevant during parsing of Interface lines</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">footnote</span><span class="plain-syntax"> *</span><span class="identifier-syntax">footnote_text</span><span class="plain-syntax">; </span><span class="comment-syntax"> which fn this is the text of, if it is at all</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">source</span><span class="plain-syntax">; </span><span class="comment-syntax"> which file this was read in from, if any</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owning_section</span><span class="plain-syntax">; </span><span class="comment-syntax"> for interleaved title lines, it's the one about to start</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_line</span><span class="plain-syntax">; </span><span class="comment-syntax"> within the owning section's linked list</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owning_paragraph</span><span class="plain-syntax">; </span><span class="comment-syntax"> for lines falling under paragraphs; </span><span class="extract"><span class="extract-syntax">NULL</span></span><span class="comment-syntax"> if not</span>
|
|
<span class="plain-syntax">} </span><span class="reserved-syntax">source_line</span><span class="plain-syntax">;</span>
|
|
</pre>
|
|
<ul class="endnotetexts"><li>The structure source_line is accessed in 1/pc, 2/tr, 2/tp, 2/pm, 2/ec, 2/pn, 3/ta, 3/tw, 3/twot, 3/tt, 4/taf, 4/lm, 4/as, 4/cl, 4/is, 5/wt, 5/ptf, 5/tf, 5/hf, 5/df, 6/cln and here.</li></ul>
|
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="function-syntax">Lines::new_source_line_in</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Lines::new_source_line_in</span></span>:<br/>The Reader - <a href="2-tr.html#SP6_1_2">§6.1.2</a><br/>The Parser - <a href="2-tp.html#SP1_1_6_1">§1.1.6.1</a>, <a href="2-tp.html#SP1_1_7_7_2">§1.1.7.7.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">,</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">source_line</span><span class="plain-syntax">);</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><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">sl</span><span class="plain-syntax">-></span><span class="element-syntax">text_operand</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><span class="plain-syntax">();</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">text_operand2</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><span class="plain-syntax">();</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="constant-syntax">NO_LCAT</span><span class="plain-syntax">; </span><span class="comment-syntax"> that is, unknown category as yet</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">command_code</span><span class="plain-syntax"> = </span><span class="constant-syntax">NO_CMD</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">default_defn</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">plainer</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">enable_hyperlinks</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">colour_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">is_commentary</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">function_defined</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">preform_nonterminal_defined</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">suppress_tangling</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">interface_line_identified</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">footnote_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">source</span><span class="plain-syntax"> = *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">source</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-tf.html#SP4" class="function-link"><span class="function-syntax">TextFiles::nowhere</span></a><span class="plain-syntax">();</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">owning_section</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">owning_section</span><span class="plain-syntax">-></span><span class="element-syntax">sect_extent</span><span class="plain-syntax">++;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">owning_section</span><span class="plain-syntax">-></span><span class="element-syntax">owning_chapter</span><span class="plain-syntax">-></span><span class="element-syntax">owning_web</span><span class="plain-syntax">-></span><span class="element-syntax">web_extent</span><span class="plain-syntax">++;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">next_line</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Categories. </b>The line categories are enumerated as follows. We briefly note what the text
|
|
operands (TO and TO2) are set to, if anything: most of the time they're blank.
|
|
Note that a few of these categories are needed only for the more cumbersome
|
|
version 1 syntax; version 2 removed the need for <span class="extract"><span class="extract-syntax">BAR_LCAT</span></span>,
|
|
<span class="extract"><span class="extract-syntax">INTERFACE_BODY_LCAT</span></span>, and <span class="extract"><span class="extract-syntax">INTERFACE_LCAT</span></span>.
|
|
</p>
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">NO_LCAT</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="comment-syntax"> (used when none has been set as yet)</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">BAR_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> a bar line </span><span class="extract"><span class="extract-syntax">@---------------</span></span><span class="comment-syntax">...</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">BEGIN_CODE_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> an </span><span class="extract"><span class="extract-syntax">@c</span></span><span class="comment-syntax">, </span><span class="extract"><span class="extract-syntax">@e</span></span><span class="comment-syntax"> or </span><span class="extract"><span class="extract-syntax">@x</span></span><span class="comment-syntax"> line below which is code, early code or extract</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">BEGIN_DEFINITION_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> an </span><span class="extract"><span class="extract-syntax">@d</span></span><span class="comment-syntax"> definition: TO is term, TO2 is this line's part of defn</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">C_LIBRARY_INCLUDE_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> C-like languages only: a </span><span class="extract"><span class="extract-syntax">#include</span></span><span class="comment-syntax"> for an ANSI C header file</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CHAPTER_HEADING_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> chapter heading line inserted automatically, not read from web</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CODE_BODY_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> the rest of the paragraph under an </span><span class="extract"><span class="extract-syntax">@c</span></span><span class="comment-syntax"> or </span><span class="extract"><span class="extract-syntax">@e</span></span><span class="comment-syntax"> or macro definition</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">COMMAND_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> a </span><span class="extract"><span class="extract-syntax">[[Command]]</span></span><span class="comment-syntax"> line, with the operand set to the </span><span class="extract"><span class="extract-syntax">*_CMD</span></span><span class="comment-syntax"> value</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">COMMENT_BODY_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> text following a paragraph header, which is all comment</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CONT_DEFINITION_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> subsequent lines of an </span><span class="extract"><span class="extract-syntax">@d</span></span><span class="comment-syntax"> definition</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">DEFINITIONS_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> line holding the </span><span class="extract"><span class="extract-syntax">@Definitions:</span></span><span class="comment-syntax"> heading</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">END_EXTRACT_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> an </span><span class="extract"><span class="extract-syntax">=</span></span><span class="comment-syntax"> line used to mark the end of an extract</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">FOOTNOTE_TEXT_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> the opening of the text of a footnote</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">HEADING_START_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">@h</span></span><span class="comment-syntax"> paragraph start: TO is title, TO2 is rest of line</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">INTERFACE_BODY_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> line within the interface, under this heading</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">INTERFACE_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> line holding the </span><span class="extract"><span class="extract-syntax">@Interface:</span></span><span class="comment-syntax"> heading</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">MACRO_DEFINITION_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> line on which a paragraph macro is defined with an </span><span class="extract"><span class="extract-syntax">=</span></span><span class="comment-syntax"> sign</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">PARAGRAPH_START_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> simple </span><span class="extract"><span class="extract-syntax">@</span></span><span class="comment-syntax"> paragraph start: TO is blank, TO2 is rest of line</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">PREFORM_GRAMMAR_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> InC only: line of Preform grammar</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">PREFORM_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> InC only: opening line of a Preform nonterminal</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">PURPOSE_BODY_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> continuation lines of purpose declaration</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">PURPOSE_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> first line of purpose declaration; TO is rest of line</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">SECTION_HEADING_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> section heading line, at top of file</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">SOURCE_DISPLAY_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> commentary line beginning </span><span class="extract"><span class="extract-syntax">>></span></span><span class="comment-syntax"> for display: TO is display text</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEXT_EXTRACT_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> the rest of the paragraph under an </span><span class="extract"><span class="extract-syntax">@x</span></span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">TYPEDEF_LCAT</span><span class="plain-syntax"> </span><span class="comment-syntax"> C-like languages only: a </span><span class="extract"><span class="extract-syntax">typedef</span></span><span class="comment-syntax"> which isn't a structure definition</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>We want to print these out nicely for the sake of a <span class="extract"><span class="extract-syntax">-scan</span></span> analysis run
|
|
of Inweb:
|
|
</p>
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="function-syntax">Lines::category_name</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Lines::category_name</span></span>:<br/>The Analyser - <a href="3-ta.html#SP1_1">§1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cat</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cat</span><span class="plain-syntax">) {</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NO_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"(uncategorised)"</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BAR_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"BAR"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_CODE_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"BEGIN_CODE"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_DEFINITION_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"BEGIN_DEFINITION"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">C_LIBRARY_INCLUDE_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"C_LIBRARY_INCLUDE"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CHAPTER_HEADING_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"CHAPTER_HEADING"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CODE_BODY_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"CODE_BODY"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COMMAND_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"COMMAND"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COMMENT_BODY_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"COMMENT_BODY"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONT_DEFINITION_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"CONT_DEFINITION"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DEFINITIONS_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"DEFINITIONS"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">END_EXTRACT_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"END_EXTRACT"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FOOTNOTE_TEXT_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"FOOTNOTE_TEXT"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HEADING_START_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"HEADING_START"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INTERFACE_BODY_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"INTERFACE_BODY"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INTERFACE_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"INTERFACE"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MACRO_DEFINITION_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"MACRO_DEFINITION"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARAGRAPH_START_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"PARAGRAPH_START"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PREFORM_GRAMMAR_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"PREFORM_GRAMMAR"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PREFORM_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"PREFORM"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PURPOSE_BODY_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"PURPOSE_BODY"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PURPOSE_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"PURPOSE"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SECTION_HEADING_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"SECTION_HEADING"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SOURCE_DISPLAY_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"SOURCE_DISPLAY"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_EXTRACT_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"TEXT_EXTRACT"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TYPEDEF_LCAT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"TYPEDEF"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax"> }</span>
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">"(?unknown)"</span><span class="plain-syntax">;</span>
|
|
<span class="plain-syntax">}</span>
|
|
</pre>
|
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Command codes. </b>Command-category lines are further divided up into the following. Again,
|
|
some of these fell into disuse in version 2 syntax.
|
|
</p>
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">NO_CMD</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">PAGEBREAK_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">GRAMMAR_INDEX_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">FIGURE_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">AUDIO_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">VIDEO_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">DOWNLOAD_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CAROUSEL_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CAROUSEL_ABOVE_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CAROUSEL_BELOW_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CAROUSEL_UNCAPTIONED_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">CAROUSEL_END_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">EMBED_CMD</span>
|
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">TAG_CMD</span>
|
|
</pre>
|
|
<nav role="progress"><div class="progresscontainer">
|
|
<ul class="progressbar"><li class="progressprev"><a href="2-tr.html">❮</a></li><li class="progresschapter"><a href="M-iti.html">M</a></li><li class="progresschapter"><a href="P-htpw.html">P</a></li><li class="progresschapter"><a href="1-bsc.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-tr.html">tr</a></li><li class="progresscurrent">lc</li><li class="progresssection"><a href="2-tp.html">tp</a></li><li class="progresssection"><a href="2-pm.html">pm</a></li><li class="progresssection"><a href="2-tgs.html">tgs</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-pn.html">pn</a></li><li class="progresschapter"><a href="3-ta.html">3</a></li><li class="progresschapter"><a href="4-pl.html">4</a></li><li class="progresschapter"><a href="5-wt.html">5</a></li><li class="progresschapter"><a href="6-mkf.html">6</a></li><li class="progressnext"><a href="2-tp.html">❯</a></li></ul></div>
|
|
</nav><!--End of weave-->
|
|
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|