2020-04-04 19:46:43 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
2020-04-08 22:41:00 +00:00
< title > Language Methods< / title >
2020-04-23 22:23:44 +00:00
< link href = "../docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-04 19:46:43 +00:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
2020-04-20 22:26:08 +00:00
2020-05-02 22:50:23 +00:00
< link href = "../docs-assets/Contents.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-30 22:36:38 +00:00
< link href = "../docs-assets/Progress.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-25 10:33:39 +00:00
< link href = "../docs-assets/Navigation.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Fonts.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-20 22:26:08 +00:00
< link href = "../docs-assets/Base.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< script >
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
< / script >
< link href = "../docs-assets/Popups.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-21 16:55:17 +00:00
< link href = "../docs-assets/Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-23 22:23:44 +00:00
2020-04-04 19:46:43 +00:00
< / head >
2020-04-25 10:33:39 +00:00
< body class = "commentary-font" >
2020-04-04 19:46:43 +00:00
< nav role = "navigation" >
2020-04-13 16:06:45 +00:00
< h1 > < a href = "../index.html" >
2020-04-20 22:26:08 +00:00
< img src = "../docs-assets/Octagram.png" width = 72 height = 72" >
2020-04-13 16:06:45 +00:00
< / a > < / h1 >
< ul > < li > < a href = "index.html" > < span class = "selectedlink" > inweb< / span > < / a > < / li >
< / ul > < h2 > Foundation Module< / h2 > < ul >
< li > < a href = "../foundation-module/index.html" > foundation< / a > < / li >
2020-04-04 19:46:43 +00:00
< li > < a href = "../foundation-test/index.html" > foundation-test< / a > < / li >
2020-04-13 16:06:45 +00:00
< / ul > < h2 > Example Webs< / h2 > < ul >
2020-04-12 16:24:23 +00:00
< li > < a href = "../goldbach/index.html" > goldbach< / a > < / li >
< li > < a href = "../twinprimes/twinprimes.html" > twinprimes< / a > < / li >
2020-04-15 22:45:08 +00:00
< li > < a href = "../eastertide/index.html" > eastertide< / a > < / li >
2020-04-14 17:36:42 +00:00
< / ul > < h2 > Repository< / h2 > < ul >
2020-04-20 22:34:44 +00:00
< li > < a href = "https://github.com/ganelson/inweb" > < img src = "../docs-assets/github.png" height = 18 > github< / a > < / li >
2020-04-14 17:36:42 +00:00
< / ul > < h2 > Related Projects< / h2 > < ul >
< li > < a href = "../../../inform/docs/index.html" > inform< / a > < / li >
< li > < a href = "../../../intest/docs/index.html" > intest< / a > < / li >
2020-04-04 19:46:43 +00:00
2020-04-13 16:06:45 +00:00
< / ul >
2020-04-04 19:46:43 +00:00
< / nav >
< main role = "main" >
2020-04-23 22:23:44 +00:00
<!-- Weave of 'Language Methods' generated by Inweb -->
2020-04-30 22:36:38 +00:00
< div class = "breadcrumbs" >
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "index.html" > inweb< / a > < / li > < li > < a href = "index.html#4" > Chapter 4: Languages< / a > < / li > < li > < b > Language Methods< / b > < / li > < / ul > < / div >
< p class = "purpose" > To characterise the relevant differences in behaviour between the various programming languages supported.< / p >
2020-04-04 19:46:43 +00:00
2020-04-15 22:45:08 +00:00
< ul class = "toc" > < li > < a href = "4-lm.html#SP1" > § 1. Introduction< / a > < / li > < li > < a href = "4-lm.html#SP2" > § 2. Parsing methods< / a > < / li > < li > < a href = "4-lm.html#SP7" > § 7. Tangling methods< / a > < / li > < li > < a href = "4-lm.html#SP22" > § 22. Weaving methods< / a > < / li > < li > < a href = "4-lm.html#SP28" > § 28. Analysis methods< / a > < / li > < li > < a href = "4-lm.html#SP30" > § 30. What we support< / a > < / li > < / ul > < hr class = "tocbar" >
2020-04-04 19:46:43 +00:00
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP1" > < / a > < b > § 1. Introduction. < / b > The conventions for writing, weaving and tangling a web are really quite
2020-04-04 19:46:43 +00:00
independent of the programming language being written, woven or tangled;
Knuth began literate programming with Pascal, but now uses C, and the original
Pascal webs were mechanically translated into C ones with remarkably little
2020-04-22 22:57:09 +00:00
fuss or bother. Modern LP tools, such as < span class = "extract" > < span class = "extract-syntax" > noweb< / span > < / span > , aim to be language-agnostic.
2020-04-04 19:46:43 +00:00
But of course if you act the same on all languages, you give up the benefits
which might follow from knowing something about the languages you actually
write in.
< / p >
2020-04-24 23:06:02 +00:00
< p class = "commentary" > The idea, then, is that Chapters 1 to 3 of the Inweb code treat all
2020-04-04 19:46:43 +00:00
material the same, and Chapter 4 contains all of the funny little exceptions
and special cases for particular programming languages. (This means Chapter 4
can't be understood without having at least browsed Chapters 1 to 3 first.)
< / p >
2020-04-24 23:06:02 +00:00
< p class = "commentary" > Really all of the functionality of languages is provided through method calls,
2020-04-04 19:46:43 +00:00
all of them made from this section. That means a lot of simple wrapper routines
which don't do very much. This section may still be useful to read, since it
documents what amounts to an API.
< / p >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP2" > < / a > < b > § 2. Parsing methods. < / b > We begin with parsing extensions. When these are used, we have already read
2020-04-04 19:46:43 +00:00
the web into chapters, sections and paragraphs, but for some languages we will
need a more detailed picture.
< / p >
2020-04-24 23:06:02 +00:00
< p class = "commentary" > < span class = "extract" > < span class = "extract-syntax" > PARSE_TYPES_PAR_MTID< / span > < / span > gives a language to look for type declarations.
2020-04-11 20:39:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > PARSE_TYPES_PAR_MTID< / span >
2020-04-11 20:39:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PARSE_TYPES_PAR_MTID< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::parse_types< / 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" > LanguageMethods::parse_types< / span > < / span > :< br / > The Parser - < a href = "2-tp.html#SP1" > § 1< / 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 = "reserved-syntax" > programming_language< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PARSE_TYPES_PAR_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP3" > < / a > < b > § 3. < / b > < span class = "extract" > < span class = "extract-syntax" > PARSE_FUNCTIONS_PAR_MTID< / span > < / span > is, similarly, for function declarations.
2020-04-11 20:39:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > PARSE_FUNCTIONS_PAR_MTID< / span >
2020-04-11 20:39:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PARSE_FUNCTIONS_PAR_MTID< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::parse_functions< / 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" > LanguageMethods::parse_functions< / span > < / span > :< br / > The Parser - < a href = "2-tp.html#SP1" > § 1< / 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 = "reserved-syntax" > programming_language< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PARSE_FUNCTIONS_PAR_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP4" > < / a > < b > § 4. < / b > < span class = "extract" > < span class = "extract-syntax" > FURTHER_PARSING_PAR_MTID< / span > < / span > is "further" in that it is called when the main
2020-04-04 19:46:43 +00:00
parser has finished work; it typically looks over the whole web for something
of interest.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > FURTHER_PARSING_PAR_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > FURTHER_PARSING_PAR_MTID< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::further_parsing< / 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" > LanguageMethods::further_parsing< / span > < / span > :< br / > The Parser - < a href = "2-tp.html#SP1" > § 1< / 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 = "reserved-syntax" > programming_language< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > FURTHER_PARSING_PAR_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP5" > < / a > < b > § 5. < / b > < span class = "extract" > < span class = "extract-syntax" > SUBCATEGORISE_LINE_PAR_MTID< / span > < / span > looks at a single line, after the main parser
2020-04-04 19:46:43 +00:00
has given it a category. The idea is not so much to second-guess the parser
(although we can) but to change to a more exotic category which it would
otherwise never produce.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > SUBCATEGORISE_LINE_PAR_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SUBCATEGORISE_LINE_PAR_MTID< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::subcategorise_line< / 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" > LanguageMethods::subcategorise_line< / span > < / span > :< br / > The Parser - < a href = "2-tp.html#SP1_1_7_9" > § 1.1.7.9< / a > < / span > < / button > < 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > SUBCATEGORISE_LINE_PAR_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP6" > < / a > < b > § 6. < / b > Comments have different syntax in different languages. The method here is
2020-04-22 22:57:09 +00:00
expected to look for a comment on the < span class = "extract" > < span class = "extract-syntax" > line< / span > < / span > , and if so to return < span class = "extract" > < span class = "extract-syntax" > TRUE< / span > < / span > ,
2020-04-04 19:46:43 +00:00
but not before splicing the non-comment parts of the line before and
within the comment into the supplied strings.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > PARSE_COMMENT_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PARSE_COMMENT_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > line< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > before< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > within< / span > < span class = "plain-syntax" > )< / span >
2020-04-21 16:55:17 +00:00
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::parse_comment< / 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" > LanguageMethods::parse_comment< / span > < / span > :< br / > The Parser - < a href = "2-tp.html#SP1_1_7_5_1_7" > § 1.1.7.5.1.7< / a > < br / > The Weaver - < a href = "3-tw.html#SP2_7_2_3_2_3" > § 2.7.2.3.2.3< / a > < br / > The Painter - < a href = "4-tp.html#SP2" > § 2< / a > < / span > < / button > < 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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > line< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > before< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > within< / 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" > rv< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PARSE_COMMENT_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > line< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > before< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > within< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP7" > < / a > < b > § 7. Tangling methods. < / b > We take these roughly in order of their effects on the tangled output, from
2020-04-04 19:46:43 +00:00
the top to the bottom of the file.
< / p >
2020-04-24 23:06:02 +00:00
< p class = "commentary" > The top of the tangled file is a header called the "shebang". By default,
2020-04-22 22:57:09 +00:00
there's nothing there, but < span class = "extract" > < span class = "extract-syntax" > SHEBANG_TAN_MTID< / span > < / span > allows the language to add one.
For example, Perl prints < span class = "extract" > < span class = "extract-syntax" > #!/usr/bin/perl< / span > < / span > here.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > SHEBANG_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SHEBANG_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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" > tangle_target< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::shebang< / span > < button class = "popup" onclick = "togglePopup('usagePopup6')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup6" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::shebang< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP1_1" > § 1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > tangle_target< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > SHEBANG_TAN_MTID< / span > < 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 = "identifier-syntax" > target< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP8" > < / a > < b > § 8. < / b > Next is the disclaimer, text warning the human reader that she is looking
2020-04-04 19:46:43 +00:00
at tangled (therefore not original) material.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > SUPPRESS_DISCLAIMER_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SUPPRESS_DISCLAIMER_TAN_MTID< / 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 >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::disclaimer< / 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" > LanguageMethods::disclaimer< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP1_1" > § 1.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" > OUT< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > tangle_target< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL_WITHOUT_ARGUMENTS< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > SUPPRESS_DISCLAIMER_TAN_MTID< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / 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 >
2020-04-21 23:52:25 +00:00
< span class = "plain-syntax" > < / span > < a href = "4-lm.html#SP18" class = "function-link" > < span class = "function-syntax" > LanguageMethods::comment< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "Tangled output generated by inweb: do not edit"< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP9" > < / a > < b > § 9. < / b > Next is the disclaimer, text warning the human reader that she is looking
2020-04-04 19:46:43 +00:00
at tangled (therefore not original) material.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > ADDITIONAL_EARLY_MATTER_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > ADDITIONAL_EARLY_MATTER_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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" > tangle_target< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::additional_early_matter< / span > < button class = "popup" onclick = "togglePopup('usagePopup8')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup8" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::additional_early_matter< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP1_1" > § 1.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" > OUT< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > tangle_target< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > ADDITIONAL_EARLY_MATTER_TAN_MTID< / span > < 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 = "identifier-syntax" > target< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP10" > < / a > < b > § 10. < / b > A tangled file then normally declares "definitions". The following write a
2020-04-22 22:57:09 +00:00
definition of the constant named < span class = "extract" > < span class = "extract-syntax" > term< / span > < / span > as the value given. If the value spans
multiple lines, the first-line part is supplied to < span class = "extract" > < span class = "extract-syntax" > START_DEFN_TAN_MTID< / span > < / span > and
then subsequent lines are fed in order to < span class = "extract" > < span class = "extract-syntax" > PROLONG_DEFN_TAN_MTID< / span > < / span > . At the end,
< span class = "extract" > < span class = "extract-syntax" > END_DEFN_TAN_MTID< / span > < / span > is called.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > START_DEFN_TAN_MTID< / span >
2020-04-24 10:26:18 +00:00
< span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > PROLONG_DEFN_TAN_MTID< / span >
< span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > END_DEFN_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > START_DEFN_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > term< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > start< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > )< / span >
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PROLONG_DEFN_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > more< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > )< / span >
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > END_DEFN_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > )< / span >
2020-04-21 16:55:17 +00:00
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::start_definition< / 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" > LanguageMethods::start_definition< / span > < / span > :< br / > Enumerated Constants - < a href = "2-ec.html#SP4" > § 4< / a > < br / > The Tangler - < a href = "3-tt.html#SP1_1_1_1" > § 1.1.1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > term< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > start< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / 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" > rv< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > START_DEFN_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > term< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > start< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > S< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / 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 >
2020-04-21 23:52:25 +00:00
< 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" > I< / span > < span class = "string-syntax" > "this programming language does not support @d"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::prolong_definition< / span > < button class = "popup" onclick = "togglePopup('usagePopup10')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup10" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::prolong_definition< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP1_1_1_1" > § 1.1.1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > more< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / 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" > rv< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PROLONG_DEFN_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > more< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > S< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / 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 >
2020-04-21 23:52:25 +00:00
< 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" > I< / span > < span class = "string-syntax" > "this programming language does not support multiline @d"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::end_definition< / span > < button class = "popup" onclick = "togglePopup('usagePopup11')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup11" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::end_definition< / span > < / span > :< br / > Enumerated Constants - < a href = "2-ec.html#SP4" > § 4< / a > < br / > The Tangler - < a href = "3-tt.html#SP1_1_1_1" > § 1.1.1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 >
2020-04-21 16:55:17 +00:00
< 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" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / 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" > rv< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > END_DEFN_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > S< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP11" > < / a > < b > § 11. < / b > Then we have some "predeclarations"; for example, for C-like languages we
2020-04-04 19:46:43 +00:00
automatically predeclare all functions, obviating the need for header files.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > ADDITIONAL_PREDECLARATIONS_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > ADDITIONAL_PREDECLARATIONS_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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 >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::additional_predeclarations< / 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" > LanguageMethods::additional_predeclarations< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP1_1" > § 1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > ADDITIONAL_PREDECLARATIONS_TAN_MTID< / span > < 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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP12" > < / a > < b > § 12. < / b > So much for the special material at the top of a tangle: now we're into
2020-04-04 19:46:43 +00:00
the more routine matter, tangling ordinary paragraphs into code.
< / p >
2020-04-24 23:06:02 +00:00
< p class = "commentary" > Languages have the ability to suppress paragraph macro expansion:
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > SUPPRESS_EXPANSION_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SUPPRESS_EXPANSION_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > material< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::allow_expansion< / span > < button class = "popup" onclick = "togglePopup('usagePopup13')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup13" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::allow_expansion< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP3" > § 3< / a > < / span > < / button > < 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > material< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > SUPPRESS_EXPANSION_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > material< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > )?< / span > < span class = "identifier-syntax" > FALSE:TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP13" > < / a > < b > § 13. < / b > Inweb supports very few "tangle commands", that is, instructions written
2020-04-22 22:57:09 +00:00
inside double squares < span class = "extract" > < span class = "extract-syntax" > [[Thus]]< / span > < / span > . These can be handled by attaching methods
as follows, which return < span class = "extract" > < span class = "extract-syntax" > TRUE< / span > < / span > if they recognised and acted on the command.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > TANGLE_COMMAND_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > TANGLE_COMMAND_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > )< / span >
2020-04-21 16:55:17 +00:00
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::special_tangle_command< / span > < button class = "popup" onclick = "togglePopup('usagePopup14')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup14" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::special_tangle_command< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP3_2" > § 3.2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > TANGLE_COMMAND_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > data< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP14" > < / a > < b > § 14. < / b > The following methods make it possible for languages to tangle unorthodox
2020-04-22 22:57:09 +00:00
lines into code. Ordinarily, only < span class = "extract" > < span class = "extract-syntax" > CODE_BODY_LCAT< / span > < / span > lines are tangled, but
2020-04-04 19:46:43 +00:00
we can intervene to say that we want to tangle a different line; and if we
do so, we should then act on that basis.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > WILL_TANGLE_EXTRA_LINE_TAN_MTID< / span >
2020-04-24 10:26:18 +00:00
< span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > TANGLE_EXTRA_LINE_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WILL_TANGLE_EXTRA_LINE_TAN_MTID< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > )< / span >
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > TANGLE_EXTRA_LINE_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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 >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::will_insert_in_tangle< / span > < button class = "popup" onclick = "togglePopup('usagePopup15')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup15" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::will_insert_in_tangle< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP2" > § 2< / a > < / span > < / button > < 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > WILL_TANGLE_EXTRA_LINE_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::insert_in_tangle< / span > < button class = "popup" onclick = "togglePopup('usagePopup16')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup16" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::insert_in_tangle< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP2" > § 2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > TANGLE_EXTRA_LINE_TAN_MTID< / span > < 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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP15" > < / a > < b > § 15. < / b > In order for C compilers to report C syntax errors on the correct line,
2020-04-04 19:46:43 +00:00
despite rearranging by automatic tools, C conventionally recognises the
2020-04-22 22:57:09 +00:00
preprocessor directive < span class = "extract" > < span class = "extract-syntax" > #line< / span > < / span > to tell it that a contiguous extract follows
2020-04-04 19:46:43 +00:00
from the given file; we generate this automatically.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > INSERT_LINE_MARKER_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > INSERT_LINE_MARKER_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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 >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::insert_line_marker< / 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" > LanguageMethods::insert_line_marker< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP2_1" > § 2.1< / a > , < a href = "3-tt.html#SP3_1" > § 3.1< / a > < br / > C-Like Languages - < a href = "4-cl.html#SP6_3" > § 6.3< / a > , < a href = "4-cl.html#SP6_4" > § 6.4< / a > < br / > InC Support - < a href = "4-is.html#SP6" > § 6< / a > , < a href = "4-is.html#SP7" > § 7< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > INSERT_LINE_MARKER_TAN_MTID< / span > < 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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP16" > < / a > < b > § 16. < / b > The following hooks are provided so that we can top and/or tail the expansion
2020-04-04 19:46:43 +00:00
of paragraph macros in the code. For example, C-like languages, use this to
2020-04-22 22:57:09 +00:00
splice < span class = "extract" > < span class = "extract-syntax" > {< / span > < / span > and < span class = "extract" > < span class = "extract-syntax" > }< / span > < / span > around the expanded matter.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > BEFORE_MACRO_EXPANSION_TAN_MTID< / span >
2020-04-24 10:26:18 +00:00
< span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > AFTER_MACRO_EXPANSION_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > BEFORE_MACRO_EXPANSION_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > para_macro< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pmac< / span > < span class = "plain-syntax" > )< / span >
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > AFTER_MACRO_EXPANSION_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > para_macro< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pmac< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::before_macro_expansion< / span > < button class = "popup" onclick = "togglePopup('usagePopup18')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup18" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::before_macro_expansion< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP3_1" > § 3.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > para_macro< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pmac< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > BEFORE_MACRO_EXPANSION_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pmac< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::after_macro_expansion< / span > < button class = "popup" onclick = "togglePopup('usagePopup19')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup19" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::after_macro_expansion< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP3_1" > § 3.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > para_macro< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pmac< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > AFTER_MACRO_EXPANSION_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pmac< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP17" > < / a > < b > § 17. < / b > It's a sad necessity, but sometimes we have to unconditionally tangle code
2020-04-04 19:46:43 +00:00
for a preprocessor to conditionally read: that is, to tangle code which contains
2020-04-22 22:57:09 +00:00
< span class = "extract" > < span class = "extract-syntax" > #ifdef< / span > < / span > or similar preprocessor directive.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > OPEN_IFDEF_TAN_MTID< / span >
2020-04-24 10:26:18 +00:00
< span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > CLOSE_IFDEF_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OPEN_IFDEF_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > symbol< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sense< / span > < span class = "plain-syntax" > )< / span >
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > CLOSE_IFDEF_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > symbol< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sense< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::open_ifdef< / span > < button class = "popup" onclick = "togglePopup('usagePopup20')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup20" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::open_ifdef< / span > < / span > :< br / > Tags - < a href = "2-tgs.html#SP7" > § 7< / a > < br / > The Tangler - < a href = "3-tt.html#SP1_1_1" > § 1.1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > symbol< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sense< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > OPEN_IFDEF_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > symbol< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > sense< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::close_ifdef< / span > < button class = "popup" onclick = "togglePopup('usagePopup21')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup21" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::close_ifdef< / span > < / span > :< br / > Tags - < a href = "2-tgs.html#SP7" > § 7< / a > < br / > The Tangler - < a href = "3-tt.html#SP1_1_1" > § 1.1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > symbol< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sense< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > CLOSE_IFDEF_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > symbol< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > sense< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP18" > < / a > < b > § 18. < / b > Now a routine to tangle a comment. Languages without comment should write nothing.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > COMMENT_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > COMMENT_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > comm< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::comment< / span > < button class = "popup" onclick = "togglePopup('usagePopup22')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup22" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::comment< / span > < / span > :< br / > < a href = "4-lm.html#SP8" > § 8< / a > < br / > The Tangler - < a href = "3-tt.html#SP3_1" > § 3.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > comm< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > COMMENT_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > comm< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP19" > < / a > < b > § 19. < / b > The inner code tangler now acts on all code known not to contain CWEB
2020-04-04 19:46:43 +00:00
macros or double-square substitutions. In almost every language this simply
2020-04-22 22:57:09 +00:00
passes the code straight through, printing < span class = "extract" > < span class = "extract-syntax" > original< / span > < / span > to < span class = "extract" > < span class = "extract-syntax" > OUT< / span > < / span > .
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > TANGLE_LINE_UNUSUALLY_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > TANGLE_LINE_UNUSUALLY_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > original< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::tangle_line< / span > < button class = "popup" onclick = "togglePopup('usagePopup23')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup23" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::tangle_line< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP3" > § 3< / a > , < a href = "3-tt.html#SP3_1" > § 3.1< / a > , < a href = "3-tt.html#SP3_2" > § 3.2< / a > < br / > C-Like Languages - < a href = "4-cl.html#SP6_1" > § 6.1< / a > , < a href = "4-cl.html#SP6_4" > § 6.4< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > original< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > TANGLE_LINE_UNUSUALLY_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > original< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / 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 = "identifier-syntax" > WRITE< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "%S"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > original< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP20" > < / a > < b > § 20. < / b > We finally reach the bottom of the tangled file, a footer called the "gnabehs":
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > GNABEHS_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > GNABEHS_TAN_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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 >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::gnabehs< / span > < button class = "popup" onclick = "togglePopup('usagePopup24')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup24" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::gnabehs< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP1_1" > § 1.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > GNABEHS_TAN_MTID< / span > < 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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP21" > < / a > < b > § 21. < / b > But we still aren't quite done, because some languages need to produce
2020-04-04 19:46:43 +00:00
sidekick files alongside the main tangle file. This method exists to give
them the opportunity.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > ADDITIONAL_TANGLING_TAN_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > ADDITIONAL_TANGLING_TAN_MTID< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > tangle_target< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::additional_tangling< / span > < button class = "popup" onclick = "togglePopup('usagePopup25')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup25" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::additional_tangling< / span > < / span > :< br / > The Tangler - < a href = "3-tt.html#SP1" > § 1< / a > < / span > < / button > < 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > tangle_target< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > ADDITIONAL_TANGLING_TAN_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > target< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP22" > < / a > < b > § 22. Weaving methods. < / b > This metnod shouldn't do any actual weaving: it should simply initialise
2020-04-04 19:46:43 +00:00
anything that the language in question might need later.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > BEGIN_WEAVE_WEA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > BEGIN_WEAVE_WEA_MTID< / 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 = "reserved-syntax" > section< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > S< / 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 >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::begin_weave< / span > < button class = "popup" onclick = "togglePopup('usagePopup26')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup26" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::begin_weave< / span > < / span > :< br / > The Weaver - < a href = "3-tw.html#SP2" > § 2< / 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" > weave_order< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > wv< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > S< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > sect_language< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > BEGIN_WEAVE_WEA_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > S< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > wv< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP23" > < / a > < b > § 23. < / b > This method allows languages to tell the weaver to ignore certain lines.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > SKIP_IN_WEAVING_WEA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SKIP_IN_WEAVING_WEA_MTID< / 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 = "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" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::skip_in_weaving< / span > < button class = "popup" onclick = "togglePopup('usagePopup27')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup27" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::skip_in_weaving< / span > < / span > :< br / > The Weaver - < a href = "3-tw.html#SP2_7_2" > § 2.7.2< / a > < / span > < / button > < 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 = "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" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > SKIP_IN_WEAVING_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 >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP24" > < / a > < b > § 24. < / b > Languages most do syntax colouring by having a "state" (this is now inside
2020-04-04 19:46:43 +00:00
a comment, inside qupted text, and so on); the following method is provided
to reset that state, if so. Inweb runs it once per paragraph for safety's
sake, which minimises the knock-on effect of any colouring mistakes.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > RESET_SYNTAX_COLOURING_WEA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > RESET_SYNTAX_COLOURING_WEA_MTID< / 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 >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::reset_syntax_colouring< / span > < button class = "popup" onclick = "togglePopup('usagePopup28')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup28" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::reset_syntax_colouring< / span > < / span > :< br / > The Weaver - < a href = "3-tw.html#SP2_7_2_1" > § 2.7.2.1< / a > , < a href = "3-tw.html#SP2_7_2_3" > § 2.7.2.3< / a > < / span > < / button > < 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL_WITHOUT_ARGUMENTS< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > RESET_SYNTAX_COLOURING_WEA_MTID< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP25" > < / a > < b > § 25. < / b > And this is where colouring is done.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > SYNTAX_COLOUR_WEA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-04-21 16:55:17 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > colouring_state< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > PLAIN_COLOUR< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SYNTAX_COLOUR_WEA_MTID< / 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 >
2020-04-21 16:55:17 +00:00
< 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" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / 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" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > colouring< / span > < span class = "plain-syntax" > )< / span >
2020-05-07 15:42:53 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::syntax_colour< / span > < button class = "popup" onclick = "togglePopup('usagePopup29')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup29" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::syntax_colour< / span > < / span > :< br / > The Weaver - < a href = "3-tw.html#SP2_7_2_3_2" > § 2.7.2.3.2< / a > , < a href = "3-tw.html#SP2_7_2_3_2_6" > § 2.7.2.3.2.6< / a > < / span > < / button > < 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 >
2020-04-21 16:55:17 +00:00
< 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" > source_line< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > L< / 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" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > colouring< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 23:52:25 +00:00
< 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 > < 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" > matter< / span > < span class = "plain-syntax" > ); < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ++) < / span > < a href = "../foundation-module/4-sm.html#SP14" class = "function-link" > < span class = "function-syntax" > Str::put_at< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > colouring< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PLAIN_COLOUR< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< 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" > -> < / 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" > -> < / span > < span class = "element-syntax" > colour_as< / span > < span class = "plain-syntax" > ;< / span >
2020-05-07 18:11:08 +00:00
< 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" > ) & & (< / 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" > -> < / 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" > -> < / 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" > -> < / 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" > -> < / 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 >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_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 >
2020-04-21 16:55:17 +00:00
< 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 >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP26" > < / a > < b > § 26. < / b > This method is called for each code line to be woven. If it returns < span class = "extract" > < span class = "extract-syntax" > FALSE< / span > < / span > , the
2020-04-04 19:46:43 +00:00
weaver carries on in the normal way. If not, it does nothing, assuming that the
method has already woven something more attractive.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > WEAVE_CODE_LINE_WEA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WEAVE_CODE_LINE_WEA_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > OUT< / 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" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ,< / span >
2020-04-21 16:55:17 +00:00
< 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 = "reserved-syntax" > section< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > S< / 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" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > matter< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > concluding_comment< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::weave_code_line< / span > < button class = "popup" onclick = "togglePopup('usagePopup30')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup30" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::weave_code_line< / span > < / span > :< br / > The Weaver - < a href = "3-tw.html#SP2_7_2_3_2_5" > § 2.7.2.3.2.5< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > OUTPUT_STREAM< / 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 = "reserved-syntax" > weave_order< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > wv< / span > < span class = "plain-syntax" > ,< / span >
2020-04-21 16:55:17 +00:00
< 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" > chapter< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > C< / 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 = "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" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > matter< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > concluding_comment< / 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" > rv< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > WEAVE_CODE_LINE_WEA_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > OUT< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > wv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / 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 > < span class = "identifier-syntax" > L< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > matter< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > concluding_comment< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP27" > < / a > < b > § 27. < / b > When Inweb creates a new < span class = "extract" > < span class = "extract-syntax" > < / span > < / span > , it lets everybody know about that.
2020-04-04 19:46:43 +00:00
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > NOTIFY_NEW_TAG_WEA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > NOTIFY_NEW_TAG_WEA_MTID< / 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 = "reserved-syntax" > theme_tag< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > tag< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::new_tag_declared< / span > < button class = "popup" onclick = "togglePopup('usagePopup31')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup31" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::new_tag_declared< / span > < / span > :< br / > Tags - < a href = "2-tgs.html#SP2" > § 2< / a > < / span > < / button > < 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 >
2020-04-21 16:55:17 +00:00
< 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 = "identifier-syntax" > LOOP_OVER< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > programming_language< / span > < span class = "plain-syntax" > )< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > NOTIFY_NEW_TAG_WEA_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > tag< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP28" > < / a > < b > § 28. Analysis methods. < / b > These are really a little miscellaneous, but they all have to do with looking
2020-04-04 19:46:43 +00:00
at the code in a web and working out what's going on, rather than producing
any weave or tangle output.
< / p >
2020-04-24 23:06:02 +00:00
< p class = "commentary" > The "preweave analysis" is an opportunity to look through the code before
2020-04-04 19:46:43 +00:00
any weaving of it occurs. It's never called on a tangle run. These methods
are called first and last in the process, respectively. (What happens in
between is essentially that Inweb looks for identifiers, for later syntax
colouring purposes.)
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > ANALYSIS_ANA_MTID< / span >
2020-04-24 10:26:18 +00:00
< span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > POST_ANALYSIS_ANA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > ANALYSIS_ANA_MTID< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )< / span >
< span class = "identifier-syntax" > VOID_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > POST_ANALYSIS_ANA_MTID< / 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::early_preweave_analysis< / span > < button class = "popup" onclick = "togglePopup('usagePopup32')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup32" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::early_preweave_analysis< / span > < / span > :< br / > The Analyser - < a href = "3-ta.html#SP4_1" > § 4.1< / a > < / span > < / button > < 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > ANALYSIS_ANA_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::late_preweave_analysis< / span > < button class = "popup" onclick = "togglePopup('usagePopup33')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup33" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::late_preweave_analysis< / span > < / span > :< br / > The Analyser - < a href = "3-ta.html#SP4" > § 4< / a > < / span > < / button > < 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 = "reserved-syntax" > web< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > VOID_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > POST_ANALYSIS_ANA_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP29" > < / a > < b > § 29. < / b > And finally: in InC only, a few structure element names are given very slightly
2020-04-04 19:46:43 +00:00
special treatment, and this method decides which.
< / p >
2020-04-25 10:33:39 +00:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > enum< / span > < span class = "constant-syntax" > SHARE_ELEMENT_ANA_MTID< / span >
2020-04-04 19:46:43 +00:00
< / pre >
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-05-09 12:05:00 +00:00
< span class = "identifier-syntax" > INT_METHOD_TYPE< / span > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > SHARE_ELEMENT_ANA_MTID< / 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > element_name< / span > < span class = "plain-syntax" > )< / span >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::share_element< / span > < button class = "popup" onclick = "togglePopup('usagePopup34')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup34" > Usage of < span class = "code-font" > < span class = "function-syntax" > LanguageMethods::share_element< / span > < / span > :< br / > Types and Functions - < a href = "4-taf.html#SP4" > § 4< / a > < / span > < / button > < 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 = "reserved-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > element_name< / span > < span class = "plain-syntax" > ) {< / span >
2020-04-21 16:55:17 +00:00
< 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 >
2020-05-09 12:05:00 +00:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > INT_METHOD_CALL< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pl< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > SHARE_ELEMENT_ANA_MTID< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > element_name< / span > < span class = "plain-syntax" > );< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > rv< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-24 23:06:02 +00:00
< p class = "commentary firstcommentary" > < a id = "SP30" > < / a > < b > § 30. What we support. < / b > < / p >
2020-04-21 16:55:17 +00:00
2020-04-25 10:33:39 +00:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-04-27 22:43:23 +00:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > LanguageMethods::supports_definitions< / 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" > LanguageMethods::supports_definitions< / span > < / span > :< br / > ACME Support - < a href = "4-as.html#SP3" > § 3< / a > < / span > < / button > < 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 >
2020-04-21 23:52:25 +00:00
< 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" > pl< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > start_definition< / span > < span class = "plain-syntax" > ) > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "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" > pl< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > prolong_definition< / span > < span class = "plain-syntax" > ) > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "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" > pl< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > end_definition< / span > < span class = "plain-syntax" > ) > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2020-04-21 16:55:17 +00:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-04-24 10:26:18 +00:00
< / pre >
2020-04-30 22:36:38 +00:00
< nav role = "progress" > < div class = "progresscontainer" >
< ul class = "progressbar" > < li class = "progressprev" > < a href = "4-taf.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "M-iti.html" > M< / a > < / li > < li class = "progresschapter" > < a href = "P-htpw.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-bsc.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-tr.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-ta.html" > 3< / a > < / li > < li class = "progresscurrentchapter" > 4< / li > < li class = "progresssection" > < a href = "4-pl.html" > pl< / a > < / li > < li class = "progresssection" > < a href = "4-taf.html" > taf< / a > < / li > < li class = "progresscurrent" > lm< / li > < li class = "progresssection" > < a href = "4-as.html" > as< / a > < / li > < li class = "progresssection" > < a href = "4-tp.html" > tp< / a > < / li > < li class = "progresssection" > < a href = "4-cl.html" > cl< / a > < / li > < li class = "progresssection" > < a href = "4-is.html" > is< / a > < / li > < li class = "progresschapter" > < a href = "5-wt.html" > 5< / a > < / li > < li class = "progresschapter" > < a href = "6-mkf.html" > 6< / a > < / li > < li class = "progressnext" > < a href = "4-as.html" > ❯ < / a > < / li > < / ul > < / div >
< / nav > <!-- End of weave -->
2020-04-23 22:23:44 +00:00
2020-04-04 19:46:43 +00:00
< / main >
< / body >
< / html >