Added error message for unlocated C functions
This commit is contained in:
parent
1f2d23e27a
commit
f720db9559
9 changed files with 112 additions and 60 deletions
|
@ -433,25 +433,35 @@ exist either way.
|
|||
chapter *C;
|
||||
section *S;
|
||||
LOOP_WITHIN_TANGLE(C, S, Tangler::primary_target(W))
|
||||
if ((L->function_defined) && (L->owning_paragraph->placed_very_early == FALSE)) {
|
||||
language_function *fn = L->function_defined;
|
||||
int to_close = 0;
|
||||
for (int i=0; i<fn->no_conditionals; i++) {
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (!(Regexp::match(&mr, fn->within_conditionals[i]->text,
|
||||
L"%c*inweb: always predeclare%c*"))) {
|
||||
WRITE("%S\n", fn->within_conditionals[i]->text);
|
||||
to_close++;
|
||||
}
|
||||
if (L->function_defined) {
|
||||
if (L->owning_paragraph == NULL) {
|
||||
TEMPORARY_TEXT(err_mess)
|
||||
WRITE_TO(err_mess, "Function '%S' seems outside of any paragraph",
|
||||
L->function_defined->function_name);
|
||||
Main::error_in_web(err_mess, L);
|
||||
DISCARD_TEXT(err_mess)
|
||||
continue;
|
||||
}
|
||||
Tags::open_ifdefs(OUT, L->owning_paragraph);
|
||||
LanguageMethods::insert_line_marker(OUT, W->main_language, L);
|
||||
WRITE("%S ", fn->function_type);
|
||||
LanguageMethods::tangle_line(OUT, W->main_language, fn->function_name);
|
||||
WRITE("(%S;\n", fn->function_arguments);
|
||||
Tags::close_ifdefs(OUT, L->owning_paragraph);
|
||||
for (int i=0; i<to_close; i++) {
|
||||
WRITE("#endif\n");
|
||||
if (L->owning_paragraph->placed_very_early == FALSE) {
|
||||
language_function *fn = L->function_defined;
|
||||
int to_close = 0;
|
||||
for (int i=0; i<fn->no_conditionals; i++) {
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (!(Regexp::match(&mr, fn->within_conditionals[i]->text,
|
||||
L"%c*inweb: always predeclare%c*"))) {
|
||||
WRITE("%S\n", fn->within_conditionals[i]->text);
|
||||
to_close++;
|
||||
}
|
||||
}
|
||||
Tags::open_ifdefs(OUT, L->owning_paragraph);
|
||||
LanguageMethods::insert_line_marker(OUT, W->main_language, L);
|
||||
WRITE("%S ", fn->function_type);
|
||||
LanguageMethods::tangle_line(OUT, W->main_language, fn->function_name);
|
||||
WRITE("(%S;\n", fn->function_arguments);
|
||||
Tags::close_ifdefs(OUT, L->owning_paragraph);
|
||||
for (int i=0; i<to_close; i++) {
|
||||
WRITE("#endif\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Inweb 7
|
||||
|
||||
v7-alpha.1+1A72 'Escape to Danger' (19 April 2021)
|
||||
v7-alpha.1+1A73 'Escape to Danger' (25 April 2021)
|
||||
|
||||
## About Inweb
|
||||
|
||||
|
|
|
@ -3130,6 +3130,8 @@ wchar_t Characters__make_wchar_t_filename_safe(wchar_t charcode) ;
|
|||
int Characters__remove_accent(int charcode) ;
|
||||
#line 158 "inweb/foundation-module/Chapter 4/Characters.w"
|
||||
wchar_t Characters__remove_wchar_t_accent(wchar_t charcode) ;
|
||||
#line 165 "inweb/foundation-module/Chapter 4/Characters.w"
|
||||
int Characters__isalphabetic(int letter) ;
|
||||
#line 25 "inweb/foundation-module/Chapter 4/C Strings.w"
|
||||
int CStrings__strlen_unbounded(const char *p) ;
|
||||
#line 35 "inweb/foundation-module/Chapter 4/C Strings.w"
|
||||
|
@ -10029,6 +10031,11 @@ wchar_t Characters__remove_wchar_t_accent(wchar_t charcode) {
|
|||
return (wchar_t) Characters__remove_accent((int) charcode);
|
||||
}
|
||||
|
||||
#line 165 "inweb/foundation-module/Chapter 4/Characters.w"
|
||||
int Characters__isalphabetic(int letter) {
|
||||
return Characters__isalpha((wchar_t) Characters__remove_accent(letter));
|
||||
}
|
||||
|
||||
|
||||
#line 21 "inweb/foundation-module/Chapter 4/C Strings.w"
|
||||
|
||||
|
@ -24106,25 +24113,35 @@ void CLike__additional_predeclarations(programming_language *self, text_stream *
|
|||
chapter *C;
|
||||
section *S;
|
||||
LOOP_WITHIN_TANGLE(C, S, Tangler__primary_target(W))
|
||||
if ((L->function_defined) && (L->owning_paragraph->placed_very_early == FALSE)) {
|
||||
language_function *fn = L->function_defined;
|
||||
int to_close = 0;
|
||||
for (int i=0; i<fn->no_conditionals; i++) {
|
||||
match_results mr = Regexp__create_mr();
|
||||
if (!(Regexp__match(&mr, fn->within_conditionals[i]->text,
|
||||
L"%c*inweb: always predeclare%c*"))) {
|
||||
WRITE("%S\n", fn->within_conditionals[i]->text);
|
||||
to_close++;
|
||||
}
|
||||
if (L->function_defined) {
|
||||
if (L->owning_paragraph == NULL) {
|
||||
TEMPORARY_TEXT(err_mess)
|
||||
WRITE_TO(err_mess, "Function '%S' seems outside of any paragraph",
|
||||
L->function_defined->function_name);
|
||||
Main__error_in_web(err_mess, L);
|
||||
DISCARD_TEXT(err_mess)
|
||||
continue;
|
||||
}
|
||||
Tags__open_ifdefs(OUT, L->owning_paragraph);
|
||||
LanguageMethods__insert_line_marker(OUT, W->main_language, L);
|
||||
WRITE("%S ", fn->function_type);
|
||||
LanguageMethods__tangle_line(OUT, W->main_language, fn->function_name);
|
||||
WRITE("(%S;\n", fn->function_arguments);
|
||||
Tags__close_ifdefs(OUT, L->owning_paragraph);
|
||||
for (int i=0; i<to_close; i++) {
|
||||
WRITE("#endif\n");
|
||||
if (L->owning_paragraph->placed_very_early == FALSE) {
|
||||
language_function *fn = L->function_defined;
|
||||
int to_close = 0;
|
||||
for (int i=0; i<fn->no_conditionals; i++) {
|
||||
match_results mr = Regexp__create_mr();
|
||||
if (!(Regexp__match(&mr, fn->within_conditionals[i]->text,
|
||||
L"%c*inweb: always predeclare%c*"))) {
|
||||
WRITE("%S\n", fn->within_conditionals[i]->text);
|
||||
to_close++;
|
||||
}
|
||||
}
|
||||
Tags__open_ifdefs(OUT, L->owning_paragraph);
|
||||
LanguageMethods__insert_line_marker(OUT, W->main_language, L);
|
||||
WRITE("%S ", fn->function_type);
|
||||
LanguageMethods__tangle_line(OUT, W->main_language, fn->function_name);
|
||||
WRITE("(%S;\n", fn->function_arguments);
|
||||
Tags__close_ifdefs(OUT, L->owning_paragraph);
|
||||
for (int i=0; i<to_close; i++) {
|
||||
WRITE("#endif\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 19 April 2021
|
||||
Build Number: 1A72
|
||||
Build Date: 25 April 2021
|
||||
Build Number: 1A73
|
||||
|
|
|
@ -61,7 +61,7 @@ function togglePopup(material_id) {
|
|||
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::toupper</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">Characters::toupper</span></span>:<br/>Bibliographic Data for Webs - <a href="8-bdfw.html#SP7_2">§7.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</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">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">toupper</span><span class="plain-syntax">((</span><span class="reserved-syntax">int</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isalpha</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">Characters::isalpha</span></span>:<br/>Writers and Loggers - <a href="2-wal.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isalpha</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">Characters::isalpha</span></span>:<br/><a href="4-chr.html#SP7">§7</a><br/>Writers and Loggers - <a href="2-wal.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">isalpha</span><span class="plain-syntax">((</span><span class="reserved-syntax">int</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isdigit</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">Characters::isdigit</span></span>:<br/>Writers and Loggers - <a href="2-wal.html#SP5">§5</a><br/>Filenames - <a href="3-fln.html#SP9">§9</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a>, <a href="7-vn.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
|
@ -181,7 +181,7 @@ the more obvious accents from it.
|
|||
</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">Characters::remove_accent</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Characters::remove_accent</span></span>:<br/><a href="4-chr.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">charcode</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::remove_accent</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Characters::remove_accent</span></span>:<br/><a href="4-chr.html#SP5">§5</a>, <a href="4-chr.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">charcode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">charcode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0xC0</span><span class="identifier-syntax">:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0xC1</span><span class="identifier-syntax">:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0xC2</span><span class="identifier-syntax">:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0xC3</span><span class="identifier-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0xC4</span><span class="identifier-syntax">:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0xC5</span><span class="identifier-syntax">:</span><span class="plain-syntax"> </span><span class="identifier-syntax">charcode</span><span class="plain-syntax"> = </span><span class="character-syntax">'A'</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -212,6 +212,14 @@ the more obvious accents from it.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><a href="4-chr.html#SP6" class="function-link"><span class="function-syntax">Characters::remove_accent</span></a><span class="plain-syntax">((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">charcode</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>This will do until we properly use Unicode character classes some day:
|
||||
</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">Characters::isalphabetic</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">letter</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-chr.html#SP1" class="function-link"><span class="function-syntax">Characters::isalpha</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><a href="4-chr.html#SP6" class="function-link"><span class="function-syntax">Characters::remove_accent</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">letter</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tm.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">chr</li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-cst.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
Binary file not shown.
|
@ -384,7 +384,7 @@ source:
|
|||
</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">Main::error_in_web</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">Main::error_in_web</span></span>:<br/>Configuration - <a href="1-cnf.html#SP6">§6</a><br/>The Swarm - <a href="1-ts.html#SP3">§3</a><br/>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP6">§6</a>, <a href="1-apacs.html#SP7">§7</a><br/>The Parser - <a href="2-tp.html#SP1_1_7_3">§1.1.7.3</a>, <a href="2-tp.html#SP1_1_7_4">§1.1.7.4</a>, <a href="2-tp.html#SP1_1_7_7">§1.1.7.7</a>, <a href="2-tp.html#SP1_1_7_7_1">§1.1.7.7.1</a>, <a href="2-tp.html#SP1_1_7_5_1">§1.1.7.5.1</a>, <a href="2-tp.html#SP1_1_7_5_1_1">§1.1.7.5.1.1</a>, <a href="2-tp.html#SP1_1_7_5_1_2">§1.1.7.5.1.2</a>, <a href="2-tp.html#SP1_1_7_5_1_3">§1.1.7.5.1.3</a>, <a href="2-tp.html#SP1_1_7_5_1_4">§1.1.7.5.1.4</a>, <a href="2-tp.html#SP1_1_7_5_1_7">§1.1.7.5.1.7</a>, <a href="2-tp.html#SP1_1_4_3_1">§1.1.4.3.1</a>, <a href="2-tp.html#SP4">§4</a><br/>Enumerated Constants - <a href="2-ec.html#SP3_1">§3.1</a>, <a href="2-ec.html#SP3_2">§3.2</a>, <a href="2-ec.html#SP3_3">§3.3</a><br/>The Analyser - <a href="3-ta.html#SP4_1">§4.1</a><br/>The Weaver - <a href="3-tw.html#SP2_7_2">§2.7.2</a>, <a href="3-tw.html#SP2_7_2_3_1_5">§2.7.2.3.1.5</a><br/>The Weaver of Text - <a href="3-twot.html#SP1_4">§1.4</a><br/>The Tangler - <a href="3-tt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="3-tt.html#SP3_1">§3.1</a><br/>Types and Functions - <a href="4-taf.html#SP7_3">§7.3</a><br/>Language Methods - <a href="4-lm.html#SP10">§10</a><br/>ACME Support - <a href="4-as.html#SP7">§7</a><br/>C-Like Languages - <a href="4-cl.html#SP3">§3</a>, <a href="4-cl.html#SP3_1">§3.1</a>, <a href="4-cl.html#SP3_2_2_1">§3.2.2.1</a><br/>InC Support - <a href="4-is.html#SP10">§10</a>, <a href="4-is.html#SP11_2">§11.2</a><br/>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</a>, <a href="5-hf.html#SP5_15">§5.15</a><br/>Colonies - <a href="6-cln.html#SP8_4">§8.4</a>, <a href="6-cln.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sl</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::error_in_web</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">Main::error_in_web</span></span>:<br/>Configuration - <a href="1-cnf.html#SP6">§6</a><br/>The Swarm - <a href="1-ts.html#SP3">§3</a><br/>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP6">§6</a>, <a href="1-apacs.html#SP7">§7</a><br/>The Parser - <a href="2-tp.html#SP1_1_7_3">§1.1.7.3</a>, <a href="2-tp.html#SP1_1_7_4">§1.1.7.4</a>, <a href="2-tp.html#SP1_1_7_7">§1.1.7.7</a>, <a href="2-tp.html#SP1_1_7_7_1">§1.1.7.7.1</a>, <a href="2-tp.html#SP1_1_7_5_1">§1.1.7.5.1</a>, <a href="2-tp.html#SP1_1_7_5_1_1">§1.1.7.5.1.1</a>, <a href="2-tp.html#SP1_1_7_5_1_2">§1.1.7.5.1.2</a>, <a href="2-tp.html#SP1_1_7_5_1_3">§1.1.7.5.1.3</a>, <a href="2-tp.html#SP1_1_7_5_1_4">§1.1.7.5.1.4</a>, <a href="2-tp.html#SP1_1_7_5_1_7">§1.1.7.5.1.7</a>, <a href="2-tp.html#SP1_1_4_3_1">§1.1.4.3.1</a>, <a href="2-tp.html#SP4">§4</a><br/>Enumerated Constants - <a href="2-ec.html#SP3_1">§3.1</a>, <a href="2-ec.html#SP3_2">§3.2</a>, <a href="2-ec.html#SP3_3">§3.3</a><br/>The Analyser - <a href="3-ta.html#SP4_1">§4.1</a><br/>The Weaver - <a href="3-tw.html#SP2_7_2">§2.7.2</a>, <a href="3-tw.html#SP2_7_2_3_1_5">§2.7.2.3.1.5</a><br/>The Weaver of Text - <a href="3-twot.html#SP1_4">§1.4</a><br/>The Tangler - <a href="3-tt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="3-tt.html#SP3_1">§3.1</a><br/>Types and Functions - <a href="4-taf.html#SP7_3">§7.3</a><br/>Language Methods - <a href="4-lm.html#SP10">§10</a><br/>ACME Support - <a href="4-as.html#SP7">§7</a><br/>C-Like Languages - <a href="4-cl.html#SP3">§3</a>, <a href="4-cl.html#SP3_1">§3.1</a>, <a href="4-cl.html#SP3_2_2_1">§3.2.2.1</a>, <a href="4-cl.html#SP6_4">§6.4</a><br/>InC Support - <a href="4-is.html#SP10">§10</a>, <a href="4-is.html#SP11_2">§11.2</a><br/>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</a>, <a href="5-hf.html#SP5_15">§5.15</a><br/>Colonies - <a href="6-cln.html#SP8_4">§8.4</a>, <a href="6-cln.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sl</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sl</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP5" class="function-link"><span class="function-syntax">Errors::in_text_file_S</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">source</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="constant-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"%07d %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">source</span><span class="plain-syntax">.</span><span class="element-syntax">line_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -576,25 +576,35 @@ exist either way.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">chapter</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">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_WITHIN_TANGLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><a href="3-tt.html#SP4" class="function-link"><span class="function-syntax">Tangler::primary_target</span></a><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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">function_defined</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">-></span><span class="element-syntax">placed_very_early</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">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">function_defined</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">to_close</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><fn-></span><span class="element-syntax">no_conditionals</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">within_conditionals</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]-></span><span class="element-syntax">text</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"%c*inweb: always predeclare%c*"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">within_conditionals</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]-></span><span class="element-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">to_close</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">L</span><span class="plain-syntax">-></span><span class="element-syntax">function_defined</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">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err_mess</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err_mess</span><span class="plain-syntax">, </span><span class="string-syntax">"Function '%S' seems outside of any paragraph"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">function_defined</span><span class="plain-syntax">-></span><span class="element-syntax">function_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pc.html#SP8" class="function-link"><span class="function-syntax">Main::error_in_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err_mess</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err_mess</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</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::open_ifdefs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-lm.html#SP15" class="function-link"><span class="function-syntax">LanguageMethods::insert_line_marker</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">main_language</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S "</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">function_type</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-lm.html#SP19" class="function-link"><span class="function-syntax">LanguageMethods::tangle_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">main_language</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">function_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(%S;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">function_arguments</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::close_ifdefs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">to_close</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"#endif\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">-></span><span class="element-syntax">placed_very_early</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">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">function_defined</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">to_close</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><fn-></span><span class="element-syntax">no_conditionals</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">within_conditionals</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]-></span><span class="element-syntax">text</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"%c*inweb: always predeclare%c*"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">within_conditionals</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]-></span><span class="element-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">to_close</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</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::open_ifdefs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-lm.html#SP15" class="function-link"><span class="function-syntax">LanguageMethods::insert_line_marker</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">main_language</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S "</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="identifier-syntax">function_type</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-lm.html#SP19" class="function-link"><span class="function-syntax">LanguageMethods::tangle_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">main_language</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">function_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(%S;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-></span><span class="element-syntax">function_arguments</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::close_ifdefs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">to_close</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"#endif\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
|
|
@ -159,3 +159,10 @@ wchar_t Characters::remove_wchar_t_accent(wchar_t charcode) {
|
|||
return (wchar_t) Characters::remove_accent((int) charcode);
|
||||
}
|
||||
|
||||
@ This will do until we properly use Unicode character classes some day:
|
||||
|
||||
=
|
||||
int Characters::isalphabetic(int letter) {
|
||||
return Characters::isalpha((wchar_t) Characters::remove_accent(letter));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue