2019-03-17 14:40:57 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< title > 1/mn< / title >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
< link href = "inweb.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< / head >
< body >
<!-- Weave of '1/mrp' generated by 7 -->
< ul class = "crumbs" > < li > < a href = "../webs.html" > ★ < / a > < / li > < li > < a href = "index.html" > inrtps 2< / a > < / li > < li > < a href = "index.html#1" > Chapter 1: The Whole Shooting Match< / a > < / li > < li > < b > Making RTP Pages< / b > < / li > < / ul > < p class = "purpose" > To translate the text in one folder into RTP pages in another.< / p >
< ul class = "toc" > < li > < a href = "#SP1" > § 1. The translator< / a > < / li > < / ul > < hr class = "tocbar" >
< p class = "inwebparagraph" > < a id = "SP1" > < / a > < b > § 1. The translator. < / b > < / p >
< pre class = "display" >
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > translator_state< / span > < span class = "plain" > {< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > current_text< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > current_code< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > current_title< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > current_pcode< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > font< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > filename< / span > < span class = "plain" > *< / span > < span class = "identifier" > model_to_follow< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > pathname< / span > < span class = "plain" > *< / span > < span class = "identifier" > destination_folder< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > write_to< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > counter< / span > < span class = "plain" > ;< / span >
< span class = "plain" > } < / span > < span class = "reserved" > translator_state< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Translator::go< / span > < span class = "plain" > (< / span > < span class = "reserved" > pathname< / span > < span class = "plain" > *< / span > < span class = "identifier" > from_folder< / span > < span class = "plain" > , < / span > < span class = "reserved" > pathname< / span > < span class = "plain" > *< / span > < span class = "identifier" > to_folder< / span > < span class = "plain" > , < / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > font_setting< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > filename< / span > < span class = "plain" > *< / span > < span class = "identifier" > texts< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Filenames::in_folder< / span > < span class = "plain" > (< / span > < span class = "identifier" > from_folder< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "texts.txt"< / span > < span class = "plain" > );< / span >
< span class = "reserved" > translator_state< / span > < span class = "plain" > < / span > < span class = "identifier" > ts< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .current_text< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Str::new< / span > < span class = "plain" > ();< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .current_code< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Str::new< / span > < span class = "plain" > ();< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .current_title< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Str::new< / span > < span class = "plain" > ();< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .current_pcode< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Str::new< / span > < span class = "plain" > ();< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .destination_folder< / span > < span class = "plain" > = < / span > < span class = "identifier" > to_folder< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .model_to_follow< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .font< / span > < span class = "plain" > = < / span > < span class = "identifier" > font_setting< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > ts< / span > < span class = "element" > .counter< / span > < span class = "plain" > = 0;< / span >
< span class = "functiontext" > TextFiles::read< / span > < span class = "plain" > (< / span > < span class = "identifier" > texts< / span > < span class = "plain" > , < / span > < span class = "constant" > FALSE< / span > < span class = "plain" > , < / span > < span class = "string" > "unable to read file of source text"< / span > < span class = "plain" > , < / span > < span class = "constant" > TRUE< / span > < span class = "plain" > ,< / span >
< span class = "plain" > & < / span > < span class = "functiontext" > Translator::go_helper< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , & < / span > < span class = "identifier" > ts< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Translator::flush< / span > < span class = "plain" > (& < / span > < span class = "identifier" > ts< / span > < span class = "plain" > );< / span >
< span class = "identifier" > PRINT< / span > < span class = "plain" > (< / span > < span class = "string" > "%d problem texts written\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "element" > .counter< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > The function Translator::go is used in 1/mn (< a href = "1-mn.html#SP1" > § 1< / a > ).< / p >
< p class = "endnote" > The structure translator_state is private to this section.< / p >
< p class = "inwebparagraph" > < a id = "SP2" > < / a > < b > § 2. < / b > Thus, the following is called on each line in turn of the < code class = "display" > < span class = "extract" > texts.txt< / span > < / code > file:
< / p >
< pre class = "display" >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Translator::go_helper< / span > < span class = "plain" > (< / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "reserved" > text_file_position< / span > < span class = "plain" > *< / span > < span class = "identifier" > tfp< / span > < span class = "plain" > , < / span > < span class = "reserved" > void< / span > < span class = "plain" > *< / span > < span class = "identifier" > state< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > translator_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > ts< / span > < span class = "plain" > = (< / span > < span class = "reserved" > translator_state< / span > < span class = "plain" > *) < / span > < span class = "identifier" > state< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > match_results< / span > < span class = "plain" > < / span > < span class = "identifier" > mr< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Regexp::create_mr< / span > < span class = "plain" > (), < / span > < span class = "identifier" > mr2< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Regexp::create_mr< / span > < span class = "plain" > ();< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "--> *(%C+) *- *(%c*?) *"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Translator::flush< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Str::copy< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_pcode< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0]);< / span >
< span class = "functiontext" > Str::copy< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_title< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [1]);< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr2< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_pcode< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "P%d+"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_code< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_code< / span > < span class = "plain" > , < / span > < span class = "string" > "RTP_%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_pcode< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > else< / span >
< span class = "functiontext" > Str::copy< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_code< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_pcode< / span > < span class = "plain" > );< / span >
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > " *"< / span > < span class = "plain" > )) {< / span >
< span class = "plain" > ;< / span >
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > " *model *= *(%c*?) *"< / span > < span class = "plain" > )) {< / span >
< span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > model_to_follow< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Filenames::in_folder< / span > < span class = "plain" > (< / span > < span class = "identifier" > from_folder< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0]);< / span >
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > {< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > , < / span > < span class = "string" > "%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "functiontext" > Regexp::dispose_of< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Regexp::dispose_of< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr2< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > The function Translator::go_helper is used in < a href = "#SP1" > § 1< / a > .< / p >
< p class = "inwebparagraph" > < a id = "SP3" > < / a > < b > § 3. < / b > And this routine is called when we encounter either the start of a new
problem text, or else the end of the file: that means that the individual
text being read is now complete, and can be translated as HTML.
< / p >
< pre class = "display" >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Translator::flush< / span > < span class = "plain" > (< / span > < span class = "reserved" > translator_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > ts< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Str::len< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_code< / span > < span class = "plain" > ) > 0) {< / span >
< span class = "identifier" > TEMPORARY_TEXT< / span > < span class = "plain" > (< / span > < span class = "identifier" > leaf< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > leaf< / span > < span class = "plain" > , < / span > < span class = "string" > "%S.html"< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_code< / span > < span class = "plain" > );< / span >
< span class = "reserved" > filename< / span > < span class = "plain" > *< / span > < span class = "identifier" > F< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Filenames::in_folder< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > destination_folder< / span > < span class = "plain" > , < / span > < span class = "identifier" > leaf< / span > < span class = "plain" > );< / span >
< span class = "identifier" > DISCARD_TEXT< / span > < span class = "plain" > (< / span > < span class = "identifier" > leaf< / span > < span class = "plain" > );< / span >
< < span class = "cwebmacro" > Give any material in double-quotes a blue tint< / span > < span class = "cwebmacronumber" > 3.1< / span > > < span class = "plain" > ;< / span >
< < span class = "cwebmacro" > Translate the material out to HTML< / span > < span class = "cwebmacronumber" > 3.2< / span > > < span class = "plain" > ;< / span >
< span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > counter< / span > < span class = "plain" > ++;< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > The function Translator::flush is used in < a href = "#SP1" > § 1< / a > , < a href = "#SP2" > § 2< / a > .< / p >
< p class = "inwebparagraph" > < a id = "SP3_1" > < / a > < b > § 3.1. < / b > < code class = "display" >
< < span class = "cwebmacrodefn" > Give any material in double-quotes a blue tint< / span > < span class = "cwebmacronumber" > 3.1< / span > > =
< / code > < / p >
< pre class = "displaydefn" >
< span class = "reserved" > match_results< / span > < span class = "plain" > < / span > < span class = "identifier" > mr< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Regexp::create_mr< / span > < span class = "plain" > ();< / span >
< span class = "reserved" > while< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "(%c*?)\< / span > < span class = "plain" > "< / span > < span class = "string" > (%c*?)\< / span > < span class = "plain" > "< / span > < span class = "string" > (%c*)"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > , < / span > < span class = "string" > "%S< font color=_QUOTE_#000080_QUOTE_> < b> %S< /b> < /font> %S"< / span > < span class = "plain" > ,< / span >
< span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0], < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [1], < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [2]);< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > while< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "(%c*?)_QUOTE_(%c*)"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > , < / span > < span class = "string" > "%S\< / span > < span class = "plain" > "< / span > < span class = "string" > %S"< / span > < span class = "plain" > ,< / span >
< span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0], < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [1]);< / span >
< span class = "plain" > }< / span >
< span class = "functiontext" > Regexp::dispose_of< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > );< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > This code is used in < a href = "#SP3" > § 3< / a > .< / p >
< p class = "inwebparagraph" > < a id = "SP3_2" > < / a > < b > § 3.2. < / b > < code class = "display" >
< < span class = "cwebmacrodefn" > Translate the material out to HTML< / span > < span class = "cwebmacronumber" > 3.2< / span > > =
< / code > < / p >
< pre class = "displaydefn" >
< span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > write_to< / span > < span class = "plain" > = < / span > < span class = "identifier" > CREATE< / span > < span class = "plain" > (< / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Streams::open_to_file< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > write_to< / span > < span class = "plain" > , < / span > < span class = "identifier" > F< / span > < span class = "plain" > , < / span > < span class = "constant" > UTF8_ENC< / span > < span class = "plain" > ) == < / span > < span class = "constant" > FALSE< / span > < span class = "plain" > )< / span >
< span class = "functiontext" > Errors::fatal_with_file< / span > < span class = "plain" > (< / span > < span class = "string" > "unable to write RTP page file"< / span > < span class = "plain" > , < / span > < span class = "identifier" > F< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > TextFiles::read< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > model_to_follow< / span > < span class = "plain" > , < / span > < span class = "constant" > FALSE< / span > < span class = "plain" > , < / span > < span class = "string" > "unable to read file of model HTML"< / span > < span class = "plain" > , < / span > < span class = "constant" > TRUE< / span > < span class = "plain" > ,< / span >
< span class = "plain" > & < / span > < span class = "functiontext" > Translator::flush_helper< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > ts< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Streams::close< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > write_to< / span > < span class = "plain" > );< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > This code is used in < a href = "#SP3" > § 3< / a > .< / p >
< p class = "inwebparagraph" > < a id = "SP4" > < / a > < b > § 4. < / b > < / p >
< pre class = "display" >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Translator::flush_helper< / span > < span class = "plain" > (< / span > < span class = "reserved" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "reserved" > text_file_position< / span > < span class = "plain" > *< / span > < span class = "identifier" > tfp< / span > < span class = "plain" > , < / span > < span class = "reserved" > void< / span > < span class = "plain" > *< / span > < span class = "identifier" > state< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > translator_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > ts< / span > < span class = "plain" > = (< / span > < span class = "reserved" > translator_state< / span > < span class = "plain" > *) < / span > < span class = "identifier" > state< / span > < span class = "plain" > ;< / span >
< < span class = "cwebmacro" > Expand the asterisked escapes< / span > < span class = "cwebmacronumber" > 4.1< / span > > < span class = "plain" > ;< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > write_to< / span > < span class = "plain" > , < / span > < span class = "string" > "%S\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > The function Translator::flush_helper is used in < a href = "#SP3_2" > § 3.2< / a > .< / p >
< p class = "inwebparagraph" > < a id = "SP4_1" > < / a > < b > § 4.1. < / b > < code class = "display" >
< < span class = "cwebmacrodefn" > Expand the asterisked escapes< / span > < span class = "cwebmacronumber" > 4.1< / span > > =
< / code > < / p >
< pre class = "displaydefn" >
< span class = "reserved" > match_results< / span > < span class = "plain" > < / span > < span class = "identifier" > mr< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Regexp::create_mr< / span > < span class = "plain" > ();< / span >
< span class = "reserved" > while< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "(%c*?)%*1(%c*)"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "string" > "%S%S%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0], < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_pcode< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [1]);< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > while< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "(%c*?)%*2(%c*)"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "string" > "%S%S%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0], < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_text< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [1]);< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > while< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "(%c*?)%*3(%c*)"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "string" > "%S%S%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0], < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > current_title< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [1]);< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > while< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Regexp::match< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > , < / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "(%c*?)%*4(%c*)"< / span > < span class = "plain" > )) {< / span >
< span class = "functiontext" > Str::clear< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > text< / span > < span class = "plain" > , < / span > < span class = "string" > "%S%S%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [0], < / span > < span class = "identifier" > ts< / span > < span class = "plain" > -< / span > < span class = "element" > > font< / span > < span class = "plain" > , < / span > < span class = "identifier" > mr< / span > < span class = "element" > .exp< / span > < span class = "plain" > [1]);< / span >
< span class = "plain" > }< / span >
< span class = "functiontext" > Regexp::dispose_of< / span > < span class = "plain" > (& < / span > < span class = "identifier" > mr< / span > < span class = "plain" > );< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > This code is used in < a href = "#SP4" > § 4< / a > .< / p >
< hr class = "tocbar" >
< ul class = "toc" > < li > < a href = "1-mn.html" > Back to 'Main'< / a > < / li > < li > < i > (This section ends Chapter 1: The Whole Shooting Match.)< / i > < / li > < / ul > < hr class = "tocbar" >
2019-04-22 17:42:10 +03:00
<!-- End of weave -->
2019-03-17 14:40:57 +02:00
< / body >
< / html >