Added Preform-weaving features

This commit is contained in:
Graham Nelson 2020-05-07 19:11:08 +01:00
parent 7ebe257e4f
commit 20ba4fe7dd
26 changed files with 1176 additions and 978 deletions

View file

@ -350,7 +350,7 @@ division in the current section.
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text as (%c+)%)"))) {
@<Make plainer@>;
code_lcat_for_body = TEXT_EXTRACT_LCAT;
code_pl_for_body = Languages::find_by_name(mr2.exp[1], W);
code_pl_for_body = Languages::find_by_name(mr2.exp[1], W, TRUE);
extract_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as code%)"))) {
@ -360,7 +360,7 @@ division in the current section.
} else if ((current_paragraph) &&
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as (%c+)%)"))) {
@<Make plainer@>;
code_pl_for_body = Languages::find_by_name(mr2.exp[2], W);
code_pl_for_body = Languages::find_by_name(mr2.exp[2], W, TRUE);
@<Spool from file@>;
} else if ((current_paragraph) &&
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+)%)"))) {

View file

@ -149,7 +149,7 @@ web *Reader::load_web(pathname *P, filename *alt_F, module_search *I,
W->web_extent = 0; W->no_paragraphs = 0;
text_stream *language_name = Bibliographic::get_datum(W->md, I"Language");
if (Str::len(language_name) > 0)
W->main_language = Languages::find_by_name(language_name, W);
W->main_language = Languages::find_by_name(language_name, W, TRUE);
main_target = Reader::add_tangle_target(W, W->main_language);
@<Initialise the rest of the chapter structure@> =
@ -158,7 +158,7 @@ web *Reader::load_web(pathname *P, filename *alt_F, module_search *I,
C->sections = NEW_LINKED_LIST(section);
C->ch_language = W->main_language;
if (Str::len(Cm->ch_language_name) > 0)
C->ch_language = Languages::find_by_name(Cm->ch_language_name, W);
C->ch_language = Languages::find_by_name(Cm->ch_language_name, W, TRUE);
@<Initialise the rest of the section structure@> =
S->sect_extent = 0;
@ -175,10 +175,10 @@ web *Reader::load_web(pathname *P, filename *alt_F, module_search *I,
S->owning_web = W;
S->sect_language = C->ch_language;
if (Str::len(S->md->sect_language_name) > 0)
S->sect_language = Languages::find_by_name(S->md->sect_language_name, W);
S->sect_language = Languages::find_by_name(S->md->sect_language_name, W, TRUE);
if (Str::len(S->md->sect_independent_language) > 0) {
programming_language *pl =
Languages::find_by_name(S->md->sect_independent_language, W);
Languages::find_by_name(S->md->sect_independent_language, W, TRUE);
S->sect_language = pl;
S->sect_target = Reader::add_tangle_target(W, pl);
} else {

View file

@ -164,8 +164,10 @@ and then some C code to deal with a match. The code is subjected to analysis
just as any other code would be.
@<Perform analysis on productions in a Preform grammar@> =
Analyser::analyse_as_code(W, L, L->text_operand2, ANY_USAGE, 0);
Analyser::analyse_as_code(W, L, L->text_operand, PREFORM_IN_CODE_USAGE, PREFORM_IN_GRAMMAR_USAGE);
Analyser::analyse_as_code(W, L, L->text_operand2,
ANY_USAGE, 0);
Analyser::analyse_as_code(W, L, L->text_operand,
PREFORM_IN_CODE_USAGE, PREFORM_IN_GRAMMAR_USAGE);
@h Identifier searching.
Here's what we actually do, then. We take the code fragment |text|, drawn

View file

@ -474,6 +474,12 @@ and macro usage is rendered differently.
programming_language *pl = L->colour_as;
if (pl == NULL) pl = S->sect_language;
if (will_be != CODE_MATERIAL) pl = NULL;
theme_tag *T = Tags::find_by_name(I"Preform", FALSE);
if ((T) && (Tags::tagged_with(L->owning_paragraph, T))) {
programming_language *prepl =
Languages::find_by_name(I"Preform", wv->weave_web, FALSE);
if (prepl) pl = prepl;
}
Weaver::change_material(tree, state, will_be, L->plainer, pl);
state->line_break_pending = FALSE;
}
@ -560,6 +566,9 @@ structure usage, or how |CWEB|-style code substitutions were made.
void Weaver::show_endnotes_on_previous_paragraph(heterogeneous_tree *tree,
weave_order *wv, tree_node *ap, paragraph *P) {
tree_node *body = ap;
theme_tag *T = Tags::find_by_name(I"Preform", FALSE);
if ((T) && (Tags::tagged_with(P, T)))
@<Show endnote on use of Preform@>;
Tags::show_endnote_on_ifdefs(tree, ap, P);
if (P->defines_macro)
@<Show endnote on where paragraph macro is used@>;
@ -571,6 +580,20 @@ void Weaver::show_endnotes_on_previous_paragraph(heterogeneous_tree *tree,
@<Show endnote on where this language type is accessed@>;
}
@<Show endnote on use of Preform@> =
tree_node *E = WeaveTree::endnote(tree);
Trees::make_child(E, body); ap = E;
TextWeaver::commentary_text(tree, ap, I"This is ");
TEMPORARY_TEXT(url);
int ext = FALSE;
if (Colonies::resolve_reference_in_weave(url, NULL, wv->weave_to, I"words: Preform",
wv->weave_web->md, NULL, &ext))
Trees::make_child(WeaveTree::url(tree, url, I"Preform grammar", ext), ap);
else
TextWeaver::commentary_text(tree, ap, I"Preform grammar");
DISCARD_TEXT(url);
TextWeaver::commentary_text(tree, ap, I", not regular C code.");
@<Show endnote on where paragraph macro is used@> =
tree_node *E = WeaveTree::endnote(tree);
Trees::make_child(E, body); ap = E;

View file

@ -214,11 +214,11 @@ then the text on the left goes into |text_operand| and the right into
|text_operand2|, with the arrow itself (and white space around it) cut out.
@<Parse the subsequent lines as Preform grammar@> =
Tags::add_by_name(L->owning_paragraph, I"Preform");
source_line *AL;
for (AL = L; (AL) && (AL->category == CODE_BODY_LCAT); AL = AL->next_line) {
if (Regexp::string_is_white_space(AL->text)) break;
AL->category = PREFORM_GRAMMAR_LCAT;
match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, AL->text, L"(%c+) ==> (%c*)")) {
AL->text_operand = Str::duplicate(mr.exp[0]);
@ -841,7 +841,8 @@ assume.)
@h Weaving.
The following isn't a method, but is called by the weaver directly. It adds
additional endnotes to the woven form of a paragraph which includes Preform
nonterminal definitions:
nonterminal definitions; it is meaningful only in the TeX format, and should
probably be dropped.
=
void InCSupport::weave_grammar_index(OUTPUT_STREAM) {

View file

@ -374,6 +374,12 @@ int LanguageMethods::syntax_colour(programming_language *pl,
int rv = FALSE;
programming_language *colour_as = pl;
if (L->category == TEXT_EXTRACT_LCAT) colour_as = L->colour_as;
theme_tag *T = Tags::find_by_name(I"Preform", FALSE);
if ((T) && (Tags::tagged_with(L->owning_paragraph, T))) {
programming_language *prepl = Languages::find_by_name(I"Preform", wv->weave_web, FALSE);
if ((L->category == PREFORM_LCAT) || (L->category == PREFORM_GRAMMAR_LCAT))
if (prepl) colour_as = prepl;
}
if (colour_as)
IMETHOD_CALL(rv, colour_as, SYNTAX_COLOUR_WEA_MTID, wv, L,
matter, colouring);

View file

@ -7,7 +7,8 @@ definitions from files.
Programming languages are identified by name: for example, |C++| or |Perl|.
@ =
programming_language *Languages::find_by_name(text_stream *lname, web *W) {
programming_language *Languages::find_by_name(text_stream *lname, web *W,
int error_if_not_found) {
programming_language *pl;
@<If this is the name of a language already known, return that@>;
@<Read the language definition file with this name@>;
@ -30,9 +31,12 @@ programming_language *Languages::find_by_name(text_stream *lname, web *W) {
}
pathname *P = Languages::default_directory();
@<Try P@>;
if (F == NULL)
Errors::fatal_with_text(
"unsupported programming language '%S'", lname);
if (F == NULL) {
if (error_if_not_found)
Errors::fatal_with_text(
"unsupported programming language '%S'", lname);
return NULL;
}
pl = Languages::read_definition(F);
@<Try P@> =
@ -48,7 +52,7 @@ programming_language *Languages::find_by_name(text_stream *lname, web *W) {
=
programming_language *Languages::default(web *W) {
return Languages::find_by_name(I"C", W);
return Languages::find_by_name(I"C", W, TRUE);
}
void Languages::show(OUTPUT_STREAM) {

View file

@ -18,3 +18,4 @@ Inweb: The markup language for the Inweb literate programming system
None: For programs in languages not yet supported by Inweb
Perl: The scripting language Perl 5
Plain Text: For text files which are not programs
Preform: The internal Inform syntax analysis grammar language

20
Languages/Preform.ildf Normal file
View file

@ -0,0 +1,20 @@
Name: "Preform"
Details: "The internal Inform syntax analysis grammar language"
Extension: ".preform"
colouring {
matches of /\S+/ {
=> !constant
"::=" => !reserved
"|" => !reserved
"==>" => !reserved
"(" => !reserved
")" => !reserved
"..." => !reserved
"......" => !reserved
matching /<\S+>/ => !function
}
brackets in /.*?==>(.*)/ {
=> !plain
}
}

View file

@ -0,0 +1,38 @@
/* The following correspond to the Inweb colours !definition, ..., !comment: */
span.definition-syntax { color: #444444; }
span.function-syntax { color: #C00000; }
span.identifier-syntax { color: #4040ff; }
span.element-syntax { color: #40407f; }
span.reserved-syntax { color: #600000; }
span.string-syntax { color: #408040; }
span.character-syntax { color: #204020; }
span.constant-syntax { color: #804020; }
span.plain-syntax { color: #000000; }
span.extract-syntax { color: #444444; }
span.comment-syntax { color: #404040; font-style:italic; }
/* This is used for the "define" or "enum" keyword on Inweb-defined constants: */
span.definition-keyword { color:#801010; font-weight:bold; }
/* These are for the angle-bracketed paragraph names: */
span.named-paragraph, span.named-paragraph-defn { color: #000000; font-size: 90%; }
span.named-paragraph-number { color: #000000; font-size: 70%; font-style:italic; }
span.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.displayed-code {
background: #e8f8e8;
border: 1px solid #cccccc;
}

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -139,7 +139,7 @@ the call comes from Program Control).
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure weave_order is accessed in 1/cnf, 1/ptt, 3/tc, 3/tw, 3/twot, 4/is, 5/fm, 5/tf, 5/hf, 5/tu, 6/cln and here.</li></ul>
<ul class="endnotetexts"><li>The structure weave_order is accessed in 1/cnf, 1/ptt, 3/tc, 3/tw, 3/twot, 4/lm, 4/is, 5/fm, 5/tf, 5/hf, 5/tu, 6/cln and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>&#167;2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a set of instructions for the weaver</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
</p>

View file

@ -69,7 +69,7 @@ many differently-named tags in a given web.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="function-syntax">Tags::find_by_name</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">Tags::find_by_name</span></span>:<br/><a href="2-tgs.html#SP4">&#167;4</a><br/>Program Control - <a href="1-pc.html#SP7_4_3">&#167;7.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">creating_if_necessary</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="function-syntax">Tags::find_by_name</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">Tags::find_by_name</span></span>:<br/><a href="2-tgs.html#SP4">&#167;4</a><br/>Program Control - <a href="1-pc.html#SP7_4_3">&#167;7.4.3</a><br/>The Weaver - <a href="3-tw.html#SP2_7_2_3_2_1">&#167;2.7.2.3.2.1</a>, <a href="3-tw.html#SP3">&#167;3</a><br/>Language Methods - <a href="4-lm.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">creating_if_necessary</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tag</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">tag</span><span class="plain-syntax">, </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">tag</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">tag_name</span><span class="plain-syntax">))</span>
@ -121,7 +121,7 @@ the tag is <span class="extract"><span class="extract-syntax">History</span></sp
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="function-syntax">Tags::add_by_name</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Tags::add_by_name</span></span>:<br/>The Reader - <a href="2-tr.html#SP4_4">&#167;4.4</a><br/>The Parser - <a href="2-tp.html#SP1_1_2">&#167;1.1.2</a>, <a href="2-tp.html#SP1_1_7_3">&#167;1.1.7.3</a>, <a href="2-tp.html#SP1_1_7_7">&#167;1.1.7.7</a><br/>Types and Functions - <a href="4-taf.html#SP2_2">&#167;2.2</a><br/>C-Like Languages - <a href="4-cl.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</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="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="function-syntax">Tags::add_by_name</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Tags::add_by_name</span></span>:<br/>The Reader - <a href="2-tr.html#SP4_4">&#167;4.4</a><br/>The Parser - <a href="2-tp.html#SP1_1_2">&#167;1.1.2</a>, <a href="2-tp.html#SP1_1_7_3">&#167;1.1.7.3</a>, <a href="2-tp.html#SP1_1_7_7">&#167;1.1.7.7</a><br/>Types and Functions - <a href="4-taf.html#SP2_2">&#167;2.2</a><br/>C-Like Languages - <a href="4-cl.html#SP2_1">&#167;2.1</a><br/>InC Support - <a href="4-is.html#SP3_1_1_1">&#167;3.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"empty tag name"</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">name</span><span class="plain-syntax">); </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</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">caption</span><span class="plain-syntax">);</span>
@ -159,7 +159,7 @@ doesn't specify a tag.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Tags::tagged_with</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Tags::tagged_with</span></span>:<br/>The Weaver - <a href="3-tw.html#SP2_7">&#167;2.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tag</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Tags::tagged_with</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Tags::tagged_with</span></span>:<br/>The Weaver - <a href="3-tw.html#SP2_7">&#167;2.7</a>, <a href="3-tw.html#SP2_7_2_3_2_1">&#167;2.7.2.3.2.1</a>, <a href="3-tw.html#SP3">&#167;3</a><br/>Language Methods - <a href="4-lm.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tag</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">tag</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="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">paragraph_tagging</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">;</span>

View file

@ -477,7 +477,7 @@ division in the current section.
<span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">L</span><span class="string-syntax">"%((%c*?) *text as (%c+)%)"</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tp.html#SP1_1_7_7_1" class="named-paragraph-link"><span class="named-paragraph">Make plainer</span><span class="named-paragraph-number">1.1.7.7.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">code_lcat_for_body</span><span class="plain-syntax"> = </span><span class="constant-syntax">TEXT_EXTRACT_LCAT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">code_pl_for_body</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">code_pl_for_body</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">extract_mode</span><span class="plain-syntax"> = </span><span class="constant-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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">L</span><span class="string-syntax">"%((%c*?) *text from (%c+) as code%)"</span><span class="plain-syntax">))) {</span>
@ -487,7 +487,7 @@ division in the current section.
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">L</span><span class="string-syntax">"%((%c*?) *text from (%c+) as (%c+)%)"</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tp.html#SP1_1_7_7_1" class="named-paragraph-link"><span class="named-paragraph">Make plainer</span><span class="named-paragraph-number">1.1.7.7.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">code_pl_for_body</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">code_pl_for_body</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tp.html#SP1_1_7_7_2" class="named-paragraph-link"><span class="named-paragraph">Spool from file</span><span class="named-paragraph-number">1.1.7.7.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">L</span><span class="string-syntax">"%((%c*?) *text from (%c+)%)"</span><span class="plain-syntax">))) {</span>

View file

@ -214,7 +214,7 @@ each of which has a list of <span class="extract"><span class="extract-syntax">s
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">web_extent</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">W</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">no_paragraphs</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">language_name</span><span class="plain-syntax"> = </span><a href="../foundation-module/8-bdfw.html#SP6" class="function-link"><span class="function-syntax">Bibliographic::get_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Language"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">language_name</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">main_language</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">language_name</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">W</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">main_language</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">language_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">main_target</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP12" class="function-link"><span class="function-syntax">Reader::add_tangle_target</span></a><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">-&gt;</span><span class="element-syntax">main_language</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-tr.html#SP4">&#167;4</a>.</li></ul>
@ -227,7 +227,7 @@ each of which has a list of <span class="extract"><span class="extract-syntax">s
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sections</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">section</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ch_language</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">main_language</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Cm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ch_language_name</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ch_language</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Cm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ch_language_name</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">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ch_language</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Cm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ch_language_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-tr.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_4"></a><b>&#167;4.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Initialise the rest of the section structure</span><span class="named-paragraph-number">4.4</span></span><span class="comment-syntax"> =</span>
@ -248,10 +248,10 @@ each of which has a list of <span class="extract"><span class="extract-syntax">s
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_web</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">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_language</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ch_language</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_language_name</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sect_language</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_language_name</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">S</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sect_language</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_language_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_independent_language</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_independent_language</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_independent_language</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sect_language</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sect_target</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP12" class="function-link"><span class="function-syntax">Reader::add_tangle_target</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>

View file

@ -237,8 +237,10 @@ just as any other code would be.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="3-ta.html#SP5" class="function-link"><span class="function-syntax">Analyser::analyse_as_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text_operand2</span><span class="plain-syntax">, </span><span class="constant-syntax">ANY_USAGE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ta.html#SP5" class="function-link"><span class="function-syntax">Analyser::analyse_as_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text_operand</span><span class="plain-syntax">, </span><span class="constant-syntax">PREFORM_IN_CODE_USAGE</span><span class="plain-syntax">, </span><span class="constant-syntax">PREFORM_IN_GRAMMAR_USAGE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ta.html#SP5" class="function-link"><span class="function-syntax">Analyser::analyse_as_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text_operand2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">ANY_USAGE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ta.html#SP5" class="function-link"><span class="function-syntax">Analyser::analyse_as_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text_operand</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">PREFORM_IN_CODE_USAGE</span><span class="plain-syntax">, </span><span class="constant-syntax">PREFORM_IN_GRAMMAR_USAGE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ta.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. Identifier searching. </b>Here's what we actually do, then. We take the code fragment <span class="extract"><span class="extract-syntax">text</span></span>, drawn
@ -382,7 +384,7 @@ of each C function.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">hash_table_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">Analyser::find_hash_entry_for_section</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">Analyser::find_hash_entry_for_section</span></span>:<br/><a href="3-ta.html#SP12">&#167;12</a><br/>The Weaver - <a href="3-tw.html#SP3_3">&#167;3.3</a>, <a href="3-tw.html#SP4">&#167;4</a><br/>Types and Functions - <a href="4-taf.html#SP8">&#167;8</a><br/>ACME Support - <a href="4-as.html#SP6">&#167;6</a>, <a href="4-as.html#SP7">&#167;7</a><br/>InC Support - <a href="4-is.html#SP14_1">&#167;14.1</a>, <a href="4-is.html#SP14_2">&#167;14.2</a>, <a href="4-is.html#SP18">&#167;18</a></span></button><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="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">hash_table_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">Analyser::find_hash_entry_for_section</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">Analyser::find_hash_entry_for_section</span></span>:<br/><a href="3-ta.html#SP12">&#167;12</a><br/>The Weaver - <a href="3-tw.html#SP3_4">&#167;3.4</a>, <a href="3-tw.html#SP4">&#167;4</a><br/>Types and Functions - <a href="4-taf.html#SP8">&#167;8</a><br/>ACME Support - <a href="4-as.html#SP6">&#167;6</a>, <a href="4-as.html#SP7">&#167;7</a><br/>InC Support - <a href="4-is.html#SP14_1">&#167;14.1</a>, <a href="4-is.html#SP14_2">&#167;14.2</a>, <a href="4-is.html#SP18">&#167;18</a></span></button><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="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</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">create</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ta.html#SP9" class="function-link"><span class="function-syntax">Analyser::find_hash_entry</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_target</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">symbols</span><span class="plain-syntax">), </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">create</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -642,6 +642,12 @@ and macro usage is rendered differently.
<span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">colour_as</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">pl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">pl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_language</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">will_be</span><span class="plain-syntax"> != </span><span class="constant-syntax">CODE_MATERIAL</span><span class="plain-syntax">) </span><span class="identifier-syntax">pl</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">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><a href="2-tgs.html#SP2" class="function-link"><span class="function-syntax">Tags::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform"</span><span class="plain-syntax">, </span><span class="constant-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">T</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-tgs.html#SP6" class="function-link"><span class="function-syntax">Tags::tagged_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prepl</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">, </span><span class="constant-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">prepl</span><span class="plain-syntax">) </span><span class="identifier-syntax">pl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prepl</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="3-tw.html#SP5" class="function-link"><span class="function-syntax">Weaver::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="identifier-syntax">will_be</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">plainer</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">line_break_pending</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -752,18 +758,39 @@ structure usage, or how <span class="extract"><span class="extract-syntax">CWEB<
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Weaver::show_endnotes_on_previous_paragraph</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Weaver::show_endnotes_on_previous_paragraph</span></span>:<br/><a href="3-tw.html#SP2_7_2">&#167;2.7.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">body</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><a href="2-tgs.html#SP2" class="function-link"><span class="function-syntax">Tags::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform"</span><span class="plain-syntax">, </span><span class="constant-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">T</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-tgs.html#SP6" class="function-link"><span class="function-syntax">Tags::tagged_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Show endnote on use of Preform</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-tgs.html#SP7" class="function-link"><span class="function-syntax">Tags::show_endnote_on_ifdefs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">defines_macro</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Show endnote on where paragraph macro is used</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Show endnote on where paragraph macro is used</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">functions</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Show endnote on where this function is used</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Show endnote on where this function is used</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">language_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">st</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">st</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">structures</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Show endnote on where this language type is accessed</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">Show endnote on where this language type is accessed</span><span class="named-paragraph-number">3.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3_1"></a><b>&#167;3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show endnote on where paragraph macro is used</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_1"></a><b>&#167;3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show endnote on use of Preform</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP2" class="function-link"><span class="function-syntax">WeaveTree::endnote</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">body</span><span class="plain-syntax">); </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"This is "</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">url</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">ext</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"words: Preform"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">ext</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform grammar"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform grammar"</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">url</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">", not regular C code."</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-tw.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show endnote on where paragraph macro is used</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -806,7 +833,7 @@ structure usage, or how <span class="extract"><span class="extract-syntax">CWEB<
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"."</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-tw.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show endnote on where this function is used</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_3"></a><b>&#167;3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show endnote on where this function is used</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -814,7 +841,7 @@ structure usage, or how <span class="extract"><span class="extract-syntax">CWEB<
<span class="plain-syntax"> </span><a href="3-tw.html#SP4" class="function-link"><span class="function-syntax">Weaver::show_function_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-tw.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3"></a><b>&#167;3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show endnote on where this language type is accessed</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_4"></a><b>&#167;3.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show endnote on where this language type is accessed</span><span class="named-paragraph-number">3.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -861,7 +888,7 @@ structure usage, or how <span class="extract"><span class="extract-syntax">CWEB<
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Weaver::show_function_usage</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Weaver::show_function_usage</span></span>:<br/><a href="3-tw.html#SP3_2">&#167;3.2</a><br/>The Weaver of Text - <a href="3-twot.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Weaver::show_function_usage</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Weaver::show_function_usage</span></span>:<br/><a href="3-tw.html#SP3_3">&#167;3.3</a><br/>The Weaver of Text - <a href="3-twot.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">as_list</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">body</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_described</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -59,7 +59,7 @@ as appropriate.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::commentary_text</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">TextWeaver::commentary_text</span></span>:<br/>Tags - <a href="2-tgs.html#SP7">&#167;7</a>, <a href="2-tgs.html#SP7_1">&#167;7.1</a><br/>The Weaver - <a href="3-tw.html#SP3_1">&#167;3.1</a>, <a href="3-tw.html#SP3_3">&#167;3.3</a>, <a href="3-tw.html#SP4">&#167;4</a>, <a href="3-tw.html#SP4_1">&#167;4.1</a>, <a href="3-tw.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::commentary_text</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">TextWeaver::commentary_text</span></span>:<br/>Tags - <a href="2-tgs.html#SP7">&#167;7</a>, <a href="2-tgs.html#SP7_1">&#167;7.1</a><br/>The Weaver - <a href="3-tw.html#SP3_1">&#167;3.1</a>, <a href="3-tw.html#SP3_2">&#167;3.2</a>, <a href="3-tw.html#SP3_4">&#167;3.4</a>, <a href="3-tw.html#SP4">&#167;4</a>, <a href="3-tw.html#SP4_1">&#167;4.1</a>, <a href="3-tw.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::comment_text_in_code</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">TextWeaver::comment_text_in_code</span></span>:<br/>The Weaver - <a href="3-tw.html#SP2_7_2_3_2">&#167;2.7.2.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">) {</span>

View file

@ -323,11 +323,11 @@ If we have a line with an arrow, like so:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="2-tgs.html#SP4" class="function-link"><span class="function-syntax">Tags::add_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform"</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">AL</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">AL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">; (</span><span class="identifier-syntax">AL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">AL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">category</span><span class="plain-syntax"> == </span><span class="constant-syntax">CODE_BODY_LCAT</span><span class="plain-syntax">); </span><span class="identifier-syntax">AL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_line</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP5" class="function-link"><span class="function-syntax">Regexp::string_is_white_space</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">AL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">AL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="constant-syntax">PREFORM_GRAMMAR_LCAT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">AL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+) ==&gt; (%c*)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">AL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text_operand</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">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0]);</span>
@ -1065,7 +1065,8 @@ assume.)
<ul class="endnotetexts"><li>This code is used in <a href="4-is.html#SP13">&#167;13</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. Weaving. </b>The following isn't a method, but is called by the weaver directly. It adds
additional endnotes to the woven form of a paragraph which includes Preform
nonterminal definitions:
nonterminal definitions; it is meaningful only in the TeX format, and should
probably be dropped.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -449,6 +449,12 @@ sake, which minimises the knock-on effect of any colouring mistakes.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</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="identifier-syntax">pl</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">category</span><span class="plain-syntax"> == </span><span class="constant-syntax">TEXT_EXTRACT_LCAT</span><span class="plain-syntax">) </span><span class="identifier-syntax">colour_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">colour_as</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><a href="2-tgs.html#SP2" class="function-link"><span class="function-syntax">Tags::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform"</span><span class="plain-syntax">, </span><span class="constant-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">T</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-tgs.html#SP6" class="function-link"><span class="function-syntax">Tags::tagged_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prepl</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">, </span><span class="constant-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">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">category</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREFORM_LCAT</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">category</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREFORM_GRAMMAR_LCAT</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">prepl</span><span class="plain-syntax">) </span><span class="identifier-syntax">colour_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prepl</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">colour_as</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IMETHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">rv</span><span class="plain-syntax">, </span><span class="identifier-syntax">colour_as</span><span class="plain-syntax">, </span><span class="constant-syntax">SYNTAX_COLOUR_WEA_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">);</span>

View file

@ -58,7 +58,8 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::find_by_name</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">Languages::find_by_name</span></span>:<br/><a href="4-pl.html#SP3">&#167;3</a><br/>The Reader - <a href="2-tr.html#SP4_2">&#167;4.2</a>, <a href="2-tr.html#SP4_3">&#167;4.3</a>, <a href="2-tr.html#SP4_4">&#167;4.4</a><br/>The Parser - <a href="2-tp.html#SP1_1_7_7">&#167;1.1.7.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lname</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::find_by_name</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">Languages::find_by_name</span></span>:<br/><a href="4-pl.html#SP3">&#167;3</a><br/>The Reader - <a href="2-tr.html#SP4_2">&#167;4.2</a>, <a href="2-tr.html#SP4_3">&#167;4.3</a>, <a href="2-tr.html#SP4_4">&#167;4.4</a><br/>The Parser - <a href="2-tp.html#SP1_1_7_7">&#167;1.1.7.7</a><br/>The Weaver - <a href="3-tw.html#SP2_7_2_3_2_1">&#167;2.7.2.3.2.1</a><br/>Language Methods - <a href="4-lm.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lname</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">error_if_not_found</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pl.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">If this is the name of a language already known, return that</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pl.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Read the language definition file with this name</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
@ -88,9 +89,12 @@ function togglePopup(material_id) {
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP5" class="function-link"><span class="function-syntax">Languages::default_directory</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pl.html#SP2_2_1" class="named-paragraph-link"><span class="named-paragraph">Try P</span><span class="named-paragraph-number">2.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal_with_text</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"unsupported programming language '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lname</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">F</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">error_if_not_found</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal_with_text</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"unsupported programming language '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP7" class="function-link"><span class="function-syntax">Languages::read_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-pl.html#SP2">&#167;2</a>.</li></ul>
@ -112,7 +116,7 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::default</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">Languages::default</span></span>:<br/>The Reader - <a href="2-tr.html#SP4_2">&#167;4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</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><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</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><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"C"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Languages::show</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Languages::show</span></span>:<br/>Program Control - <a href="1-pc.html#SP7_2">&#167;7.2</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>

View file

@ -553,7 +553,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_weave_paragraph_heading_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::endnote</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::endnote</span></span>:<br/>Tags - <a href="2-tgs.html#SP7_1">&#167;7.1</a><br/>The Weaver - <a href="3-tw.html#SP3_1">&#167;3.1</a>, <a href="3-tw.html#SP3_3">&#167;3.3</a>, <a href="3-tw.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::endnote</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::endnote</span></span>:<br/>Tags - <a href="2-tgs.html#SP7_1">&#167;7.1</a><br/>The Weaver - <a href="3-tw.html#SP3_1">&#167;3.1</a>, <a href="3-tw.html#SP3_2">&#167;3.2</a>, <a href="3-tw.html#SP3_4">&#167;3.4</a>, <a href="3-tw.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_endnote_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_endnote_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_endnote_node_type</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_weave_endnote_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
@ -715,7 +715,7 @@ been syntax-coloured.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_source_code_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_source_code_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::url</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::url</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP1_2">&#167;1.2</a>, <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP4_1">&#167;4.1</a>, <a href="3-twot.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::url</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::url</span></span>:<br/>The Weaver - <a href="3-tw.html#SP3_1">&#167;3.1</a><br/>The Weaver of Text - <a href="3-twot.html#SP1_2">&#167;1.2</a>, <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP4_1">&#167;4.1</a>, <a href="3-twot.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">external</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_url_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_url_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">url</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">url</span><span class="plain-syntax">);</span>
@ -790,7 +790,7 @@ indentation but not weave any bracketed marker.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_inline_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_inline_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::locale</span><button class="popup" onclick="togglePopup('usagePopup43')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup43">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::locale</span></span>:<br/>The Weaver - <a href="3-tw.html#SP3_1">&#167;3.1</a>, <a href="3-tw.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">par1</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">par2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::locale</span><button class="popup" onclick="togglePopup('usagePopup43')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup43">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::locale</span></span>:<br/>The Weaver - <a href="3-tw.html#SP3_2">&#167;3.2</a>, <a href="3-tw.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">par1</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">par2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_locale_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_locale_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">par1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">par1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">par2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">par2</span><span class="plain-syntax">;</span>

View file

@ -413,7 +413,7 @@ is where the reference is made from.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::resolve_reference_in_weave</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></span>:<br/><a href="6-cln.html#SP11">&#167;11</a><br/>The Weaver of Text - <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::resolve_reference_in_weave</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></span>:<br/><a href="6-cln.html#SP11">&#167;11</a><br/>The Weaver - <a href="3-tw.html#SP3_1">&#167;3.1</a><br/>The Weaver of Text - <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">for_HTML_file</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="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</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">r</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) *</span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>

View file

@ -137,6 +137,7 @@ distribution:
<span class="plain-syntax">None: For programs in languages not yet supported by Inweb</span>
<span class="plain-syntax">Perl: The scripting language Perl 5</span>
<span class="plain-syntax">Plain Text: For text files which are not programs</span>
<span class="plain-syntax">Preform: The internal Inform syntax analysis grammar language</span>
</pre>
<p class="commentary">It's easy to make new language definitions, and contributions of these are
welcome.

View file

@ -81,6 +81,7 @@ installed Inweb replies like so:
<span class="plain-syntax">None: For programs in languages not yet supported by Inweb</span>
<span class="plain-syntax">Perl: The scripting language Perl 5</span>
<span class="plain-syntax">Plain Text: For text files which are not programs</span>
<span class="plain-syntax">Preform: The internal Inform syntax analysis grammar language</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>So what if you want to write a literate program in a language not on that
list? One option is to give the language as <span class="extract"><span class="extract-syntax">None</span></span>. (Note that this is