% This file generates the user manual; TeX it, don't read it! \def\tangref{3} % where the main explanation of CTANGLing is given \input cwebmac \def\page{\box255 } \normalbottom \parskip 0pt plus 1pt \def\RA{\char'31 } % right arrow \def\hang{\hangindent 4em\ignorespaces} \font\eightrm=cmr8 \font\ninerm=cmr9 \font\ninett=cmtt9 \font\eighttt=cmtt8 \font\twelvett=cmtt12 \font\quoterm=cmssq8 \font\quoteit=cmssqi8 \font\authorfont=cmr12 \font\sectionfont=cmbx12 \def\pb{\.{|...|}} \def\v{\.{\char'174}} % vertical (|) in typewriter font \def\lpile{\def\cr{\hfill\endline}\matrix} % I only use \lpile by itself \abovedisplayskip=.5\abovedisplayskip \belowdisplayskip=.5\belowdisplayskip \abovedisplayshortskip=.5\abovedisplayshortskip \belowdisplayshortskip=.5\belowdisplayshortskip \advance\baselineskip by -.5pt \advance\pageheight by \baselineskip % the manual just got a bit longer \advance\fullpageheight by \baselineskip \setpage \outer\def\section #1.{\penalty-500\bigskip \centerline{\sectionfont\def\.##1{{\twelvett##1}} #1}\nobreak\vskip 6pt \everypar{\hskip-\parindent\everypar{}}} \def\lheader{\mainfont\the\pageno\hfill\sc\runninghead\hfill} \def\rheader{\hfill\sc\runninghead\hfill\mainfont\the\pageno} \def\runninghead{ПСЙНБНДЯРБН ОНКЭГНБЮРЕКЪ {\tentt CWEB} (БЕПЯХЪ 3.0)} % This verbatim mode assumes that ! marks are !! in the text being copied. \def\verbatim{\begingroup \def\do##1{\catcode`##1=12 } \dospecials \parskip 0pt \parindent 0pt \let\!=! \catcode`\ =13 \catcode`\^^M=13 \tt \catcode`\!=0 \verbatimdefs \verbatimgobble} {\catcode`\^^M=13{\catcode`\ =13\gdef\verbatimdefs{\def^^M{\ \par}\let =\ }} % \gdef\verbatimgobble#1^^M{}} \null\vfill \centerline{\titlefont The {\ttitlefont CWEB} System of Structured Documentation} \vskip 18pt\centerline{(Version 3.0)} \vskip 24pt \centerline{\authorfont Donald E. Knuth and Silvio Levy} \vfill \noindent \TeX\ is a trademark of the American Mathematical Society. \bigskip\noindent The printed form of this manual is copyright \copyright\ 1994 by Addison-Wesley Publishing Company, Inc. All rights reserved. \smallskip\noindent The electronic form is copyright \copyright\ 1987, 1990, 1993 by Silvio Levy and Donald E. Knuth. \smallskip\noindent The russian translation is copyright \copyright\ 1999 by Sergey V. Korop \.{} \bigskip\noindent Permission is granted to make and distribute verbatim copies of the electronic form of this document provided that the electronic copyright notice and this permission notice are preserved on all copies. \smallskip\noindent Permission is granted to copy and distribute modified versions of the electronic form of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. \smallskip\noindent Individuals may make copies of the documentation from the electronic files for their own personal use. \pageno=0 \titletrue\eject \null\vfill \centerline{\titlefont Яхярелю ярпсйрспмнцн днйслемрхпнбюмхъ {\ttitlefont CWEB}} \vskip 18pt\centerline{(Бепяхъ 3.0)} \vskip 24pt \centerline{\authorfont Днмюкэд Щ. Ймср х Яхкэбхн Кебх} \vfill \noindent \TeX\ ъбкъеряъ рнпцнбни люпйни American Mathematical Society. \bigskip\noindent \copyright\ 1994. Опюбюлх мю хгдюмхе щрнцн псйнбндярбю накюдюер Addison-Wesley Publishing Company, Inc. Бяе опюбю янупюмемш. \smallskip\noindent \copyright\ 1987, 1990, 1993. Опюбю мю щкейрпнммсч тнплс щрнцн псйнбндярбю опхмюдкефюр Яхкэбхн Кебх х Днмюкэдс Щ. Ймсрс. \smallskip\noindent \copyright\ 1999. Оепебнд мю псяяйхи ъгшй: Яепцеи Йнпно \.{} \bigskip\noindent Б яксвюе йнмткхйрю псяяйнцн оепебндю сякнбхи пюяопнярпюмемхъ я ху юмцкхияйхл бюпхюмрнл, опхнпхрернл онкэгсеряъ нпхцхмюк. \bigskip\noindent Permission is granted to make and distribute verbatim copies of the electronic form of this document provided that the electronic copyright notice and this permission notice are preserved on all copies. \smallskip\noindent Permission is granted to copy and distribute modified versions of the electronic form of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. \smallskip\noindent Individuals may make copies of the documentation from the electronic files for their own personal use. \smallskip\noindent Пюгпеьюеряъ пюяопнярпюмемхе рнвмшу йнохи щкейрпнммни бепяхх щрнцн днйслемрю опх сякнбхх, врн яннаыемхе на юбрнпяйху опюбюу мю щкейрпнммсч бепяхч х щрн пюгпеьемхе опхясрярбсер бн бяеу йнохъу. \smallskip\noindent Пюгпеьюеряъ пюяопнярпюмемхе хглемеммшу йнохи щкейрпнммни бепяхх щрнцн днйслемрю мю сякнбхъу рнвмнцн йнохпнбюмхъ, х опх сякнбхх, врн опнхгбндмюъ пюанрю пюяопнярпюмъеряъ мю сякнбхъу, хдемрхвмшу щрхл. \smallskip\noindent Вюярмше кхжю лнцср декюрэ йнохх днйслемрюжхх хг щкейрпнммшу тюикнб дкъ кхвмнцн хяонкэгнбюмхъ. \pageno=0 \titletrue\eject \titletrue \centerline{\titlefont Яхярелю ярпсйрспмнцн днйслемрхпнбюмхъ {\ttitlefont CWEB}} \vskip 15pt plus 3pt minus 3pt \centerline{\authorfont Днмюкэд Щ. Ймср х Яхкэбхн Кебх} \vskip 24pt plus 3pt minus 3pt \noindent Щрнр днйслемр ъбкъеряъ нохяюмхел бепяхх яхярелш \.{WEB} Д.~Ймсрю, юдюорхпнбюммни й ъгшйс \CEE/ Яхкэбхн Кебх. Я лнлемрю ябнецн янгдюмхъ б 1987~ц., \.{CWEB} янблеярмшлх сяхкхълх Ймсрю х Кебх бн лмнцнл ашк лндхтхжхпнбюм х сксвьем. Б мюярнъыхи лнлемр лш онкюцюел ецн щбнкчжхч акхгйни й гюбепьемхч, мн рел ме лемее, яннаыемхъ на ньхайюу, опедкнфемхъ х йнллемрюпхх беяэлю фекюрекэмш х лнцср мюопюбкърэяъ Кебх (\.{levy@math.berkeley.edu}). Вхрюрекх, гмюйнлше я лелнпюмдслнл ``The \.{WEB} System of Structured Documentation'' Ймсрю, лнцср кхьэ аецкн нгмюйнлхрэяъ я щрхл днйслемрнл, оняйнкэйс \.{CWEB} х \.{WEB} хлечр наысч тхкнянтхч х (б нямнбмнл) яхмрюйяхя. Б мейнрнпшу бнопняюу \.{CWEB} ъбкъеряъ сопныемхел \.{WEB}: мюопхлеп, \.{CWEB} ме мсфдюеряъ б леуюмхглюу нопедекемхъ люйпнянб х напюанрйх ярпнй \.{WEB}, оняйнкэйс ъгшй \CEE/ х ецн опеопнжеяянп аепср щрс пюанрс мю яеаъ. Юмюкнцхвмн, янцкюьемхъ \.{WEB} нрмняхрекэмн тнплюрю бняэлхпхвмшу х ьеярмюджюрхпхвмшу вхяек \.{@'77} х \.{@"3f} гюлемемш опхмършлх б ъгшйе \CEE/ \.{077} х \.{0x3f}. Бяе опнвхе бнглнфмнярх \.{WEB} янупюмемш х пюяьхпемш. Лш бшпюфюел ябнч акюцндюпмнярэ бяел, йрн ябнхлх онфекюмхълх х гюлевюмхълх свюярбнбюк б пюгпюанрйе \.{CWEB}. Нянасч опхгмюрекэмнярэ лш опхмняхл Steve Avery, Nelson Beebe, Hans-Hermann Bode, Klaus Guntermann, Norman Ramsey х Joachim Schnitter, йнрнпше опеднярюбхкх опнцпюллмши йнд, ю рюйфе Cameron Smith, гю лмнфеярбн опедкнфемхи он днйслемрюжхх. Ramsey ядекюк "цпюлнрмне опнцпюллхпнбюмхе" ("literate programming",---рюй Д. Ймср мюгшбюер лерндхйс опнцпюллхпнбюмхъ я хяонкэгнбюмхел \.{CWEB}---{\sl опхл. оепеб.\/}) днярсомшл дкъ дпсцху ъгшйнб ябнеи яхярелни \.{SPIDER} [ял. {\sl Communications of the ACM\/ \bf32} (1989), 1051--1055]. Bode юдюорхпнбюк \.{CWEB} й ъгшйс \CPLUSPLUS/, рюй врн дюкее он рейярс бяе яяшкйх мю \CEE/ ондпюгслебючр х \CPLUSPLUS/. \section Ббедемхе. Ясрэ тхкнянтхх \.{CWEB} б рнл, врн опнцпюллхярш, фекючыхе ямюадхрэ ябнч опнцпюллс мюхксвьеи днйслемрюжхеи, днкфмш ндмнбпелеммн онкэгнбюрэяъ ъгшйнл, онднамшл \TeX{}, дкъ ондцнрнбйх днйслемрюжхх х ъгшйнл, онднамшл \CEE/, дкъ опнцпюллхпнбюмхъ. Мх рнр, мх дпсцни яюл он яеае ме опеднярюбкъер бяецн менаундхлнцн, мн асдсвх днкфмшл напюгнл на╝едхмемш, нйюгшбючряъ йсдю анкее онкегмшлх, вел онпнгмэ. Ярпсйрспю йнлоэчрепмни опнцпюллш лнфер ашрэ опедярюбкемю, йюй ``яерэ'' (``web'' --- ``оюсрхмю''), янярнъыюъ хг лмнфеярбю бгюхлмн гюбхяхлшу вюяреи. Врнаш днйслемрхпнбюрэ рюйсч опнцпюллс, менаундхлн нохяюрэ йюфдсч рюйсч вюярэ х ее бгюхлннрмньемхъ я дпсцхлх. Япедярбю напюанрйх рейярнб, опеднярюбкъелше \TeX{}, онгбнкъчр мюл нохяюрэ кнйюкэмсч ярпсйрспс йюфдни вюярх опнцпюллш, ю япедярбю опнцпюллхпнбюмхъ ъгшйю \CEE/ --- тнплюкэмн х ндмнгмювмн яоежхтхжхпнбюрэ юкцнпхрлш. На╝едхмхб ху, лш онксвюел ярхкэ опнцпюллхпнбюмхъ, люйяхлюкэмн яонянаярбсчыхи онмхлюмхч ярпсйрспш якнфмшу опнцпюлл, х ндмнбпелеммн --- унпньн днйслемрхпнбюммше опнцпюллш, дкъ йнрнпшу юбрнлюрхвеяйх наеяоевхбюеряъ бгюхлмне яннрберярбхе опнцпюллш х днйслемрюжхх. Яхярелю \.{CWEB} янярнхр хг дбсу опнцпюлл, мюгбюммшу \.{CWEAVE} х \.{CTANGLE}. Опх опнцпюллхпнбюмхх б яхяреле \.{CWEB} опнцпюллю мю ъгшйе \CEE/ х днйслемрюжхъ й меи на╝едхмемш б ндмнл тюике, мюгшбюелнл \.{CWEB}-тюик, я хлемел бпнде \.{something.w}. Йнлюмдю `\.{cweave} \.{something}' янгдюер тюик \.{something.tex}, йнрнпши я онлныэч \TeX{} опебпюыюеряъ б йпюяхбн нтнплкеммсч (``pretty printed'') бепяхч \.{something.w}, йнрнпюъ янакчдюер бяе рхонцпютяйхе янцкюьемхъ, рюйхе йюй дхгюим ярпюмхжш, хяонкэгнбюмхе нрярсонб, йспяхбмшу х фхпмшу ьпхтрнб, люрелюрхвеяйху яхлбнкнб. Днонкмхрекэмн юбрнлюрхвеяйх ярпнхряъ яхярелю оепейпеярмшу яяшкнй. Юмюкнцхвмн, йнлюмдю `\.{ctangle} \.{something}' онпнфдюер опнцпюллс мю ъгшйе \CEE/ \.{something.c}, йнрнпюъ лнфер ашрэ нрйнлохкхпнбюмю б хяонкмхлши йнд. Онлхлн опеднярюбкемхъ сднамнцн япедярбю днйслемрхпнбюмхъ, \.{CWEB} пюяьхпъер ъгшй \CEE/ бнглнфмнярэч лемърэ леярюлх вюярх рейярю опнцпюллш, рюй врн анкэьхе опнцпюллмше яхярелш лнцср ашрэ бняопхмърш жекхйнл б реплхмюу меанкэьху яейжхи х ху кнйюкэмшу бгюхлнябъгеи. Опнцпюллю \.{CTANGLE} мюгбюмю рюй онрнлс, врн нмю пюяярюбкъер яейжхх web-ярпсйрспш б онпъдйе, рпеаселнл \CEE/; опехлсыеярбнл опнцпюллхпнбюмхъ б \.{CWEB} ъбкъеряъ рн, врн юкцнпхрлш лнцср ашрэ бшпюфемш б "пюгбепмсрни" тнпле, б йнрнпни йюфдюъ яейжхъ на╝ъямъеряъ нрдекэмн нр дпсцху. Опнцпюллю \.{CWEAVE}, б яннрберярбхх ябнелс мюгбюмхч, "яокерюер" яндепфюыхеяъ б йюфдни яейжхх \TeX х \CEE/-вюярх б ярпсйрспхпнбюммши днйслемр. Бнглнфмн, ме яксвюимн мележйхл щйбхбюкемрнл ``weave'' ъбкъеряъ ``{\it webe\/}'', ю яннрберярбсчыхи хл кюрхмяйхи хлоепюрхб --- ``{\it texe\/}''! Онкэгнбюрекэ \.{CWEB} днкфем ашрэ унпньн гмюйнл я ъгшйнл \CEE/. Лхмхлюкэмне гмюйнлярбн я \TeX{} рюйфе фекюрекэмн, мн тюйрхвеяйх лнфер ашрэ онксвемн сфе б опнжеяяе пюанрш я \.{CWEB}, оняйнкэйс опнярни рейяр ондцнрюбкхбюеряъ б \TeX{} опюйрхвеяйх аег йюйнцн-кхан гмюмхъ ецн ъгшйю. Рел, йрн унпньн гмюйнл я наехлх яхярелюлх онрпеасчряъ янбяел меанкэьхе сяхкхъ, врнаш хгсвхрэ йнлюмдш \.{CWEB}. \section Нагнп. Яндепфхлшл тюикнб \.{CWEB} лнфер ашрэ \TeX{}-рейяр х \CEE/-рейяр. \.{CWEB}-опнцпюллхяр днкфем верйн опедярюбкърэ бяе опнхяундъыее я мхлх йюй б опнжеяяе цемепюжхх днйслемрюжхх, рюй х опнцпюллш, р.е. гмюрэ ясрэ бяеу реу деиярбхи, йнрнпше асдср опнхгбндхрэяъ мюд \.{CWEB}-тюикнл опнцпюллюлх \.{CWEAVE} х \.{CTANGLE}. Рейяр б тнплюре \TeX{} онкмнярэч йнохпсеряъ опнцпюллни \.{CWEAVE} х хцмнпхпсеряъ \.{CTANGLE}, щрн "вхярюъ днйслемрюжхъ". Я дпсцни ярнпнмш, \CEE/-опнцпюллю тнплюрхпсеряъ \.{CWEAVE} х опенапюгсеряъ \.{CTANGLE} он опюбхкюл, йнрнпше асдср ярпнцн нопедекемш онгдмее. Б мюярнъыхи лнлемр днярюрнвмн онмърэ, врн ясыеярбсер дбе пюгмнбхдмнярх рейярю. Янгдюмхе \.{CWEB}-опнцпюллш б вел-рн яунфе я ондцнрнбйни днйслемрю \TeX{} я хяонкэгнбюмхел днонкмхрекэмни ``\CEE/-лндш'', онднамни хлечыхляъ б \TeX{} цнпхгнмрюкэмни, бепрхйюкэмни х люрелюрхвеяйни лндюл. \.{CWEB}-тюик яндепфхр {\sl яейжхх\/}, йнрнпше анкее хкх лемее яюлнднярюрнвмш. Йюфдюъ яейжхъ янярнхр хг рпеу вюяреи: \yskip\item{$\bullet$} \TEX/-вюярэ, яндепфюыюъ люрепхюк, пюг╝ъямъчыхи ясрэ яндепфхлнцн яейжхх. \item{$\bullet$} Опнлефсрнвмюъ (middle) вюярэ яндепфхр люйпннопедекемхъ, яксфюыхе янйпюыемхълх дкъ \CEE/-йнмярпсйжхи, йнрнпше месднамн бшохяшбюрэ йюфдши пюг гюмнбн. Нмх опенапюгсчряъ \.{CTANGLE} б люйпняш опеопнжеяянпю. \item{$\bullet$} \CEE/-вюярэ, яндепфюыюъ вюярэ опнцпюллш, цемепхпселни \.{CTANGLE}. Дкхмю \CEE/-вюярх б хдеюке ме днкфмю опебшьюрэ дчфхмш ярпнвей, врнаш нмю янярюбкъкю гюйнмвеммши тпюцлемр опнцпюллш х ашкю кецйн онмхлюелни. \yskip\noindent Рпх вюярх йюфдни яейжхх днкфмш пюяонкюцюрэяъ б щрнл онпъдйе, р.е. \TeX-йнллемрюпхи днкфем якеднбюрэ оепбшл, гюрел опнлефсрнвмюъ вюярэ х, мюйнмеж, \CEE/-йнд. Кчаюъ хг щрху вюяреи лнфер ашрэ осярни. Яейжхъ мювхмюеряъ кхан `\.{@\ }', кхан `\.{@*}', цде `\.{\ }' нгмювюер яхлбнк "опнаек". Яейжхъ гюйюмвхбюеряъ мювюкнл якедсчыеи яейжхх, р.е. якедсчыхл `\.{@\ }' хкх `\.{@*}', кхан йнмжнл тюикю. \.{CWEB}-тюик лнфер яндепфюрэ опнхгбнкэмши рейяр, пюяонкюцючыхияъ оепед мювюкнл оепбни яейжхх х ме бундъыхи мх б ндмс хг яейжхи. Онднамши рейяр дюкее асдел хлемнбюрэ "опеюласкни" (``in limbo''), нм хцмнпхпсеряъ \.{CTANGLE} х онкмнярэч йнохпсеряъ \.{CWEAVE}, рюй врн ецн мюгмювемхе янярнхр б нопедекемхх опнхгбнкэмшу хмярпсйжхи \TeX'ю. Йюй опюбхкн, щрх хмярпсйжхх гюцпсфючр рпеаселше ьпхтрш, нопедекъчр люйпняш, хглемъчр пюглепш ярпюмхжш х/хкх цемепхпсчр рхрскэмши кхяр. Яейжхх мслепсчряъ онякеднбюрекэмн, мювхмюъ я~1. Щрх мнлепю онъбкъчряъ б мювюке йюфдни яейжхх б \TeX-днйслемре, онксвеммнл \.{CWEAVE}, ю рюйфе б йнллемрюпхъу, нрлевючыху мювюкн х йнмеж йюфдни яейжхх б \CEE/-опнцпюлле, яцемепхпнбюммни \.{CTANGLE}. \section Хлемю яейжхи. Й явюярэч, мер мхйюйни мюднамнярх мслепнбюрэ яейжхх бпсвмсч. Опнярн онлеярхре `\.{@\ }' кхан `\.{@*}' б мювюке йюфдни мнбни яейжхх, х ху мнлепю асдср яцемепхпнбюмш \.{CWEAVE} х \.{CTANGLE} юбрнлюрхвеяйх. Опх менаундхлнярх яейжхх лнфер ашрэ опхябнемн {\sl хлъ} блеярн мнлепю. Хлъ мювхмюеряъ `\.{@<}', дюкее якедсер опнхгбнкэмши рейяр \TEX/, ю гюрел --- `\.{@>}'. Йнцдю \.{CWEAVE} бшбндхр хлъ яейжхх, `\.{@<}' х `\.{@>}' гюлемъчряъ сцкнбшлх яйнайюлх, х днаюбкъеряъ мнлеп яейжхх анкее лекйхл ьпхтрнл. Онщрнлс, йнцдю бш вхрюере бшбнд \.{CWEAVE}, кецйн опнякедхрэ бяе бгюхлнябъгх лефдс яейжхълх. Дкъ мюцкъдмнярх хлъ яейжхх днкфмн ашрэ унпньхл нохяюмхел яндепфхлнцн яейжхх, р.е. онъямърэ юаярпюйжхч, опедярюбкеммсч яейжхеи. Бонякедярбхе яейжхъ лнфер ашрэ "бярпнемю" б дпсцхе яейжхх рюй, врн люкнгмювхлше дерюкх ее пеюкхгюжхх нйюфсряъ яйпшршлх. Хлъ яейжхх, якеднбюрекэмн, днкфмн ашрэ днярюрнвмн дкхммшл, врнаш бшпюгхрэ опх щрнл ее ясрэ. Й янфюкемхч, срнлхрекэмн х впебюрн ньхайюлх охяюрэ дкхммне хлъ яейжхх ямнбю х ямнбю. Онщрнлс \.{CTANGLE} х \.{CWEAVE} онгбнкъчр хяонкэгнбюрэ янйпюыемхъ. Бяъйхи пюг, йнцдю б \.{CWEB}-тюике днкфмн онъбхрэяъ хлъ яейжхх, бш лнфере хяонкэгнбюрэ `\.{@<$\alpha$...@>}', цде $\alpha$ --- кчаюъ ярпнйю, ъбкъчыюъяъ опетхйянл онкмнцн хлемх. Мюопхлеп, `\.{@}' лнфер ашрэ янйпюыемн дн `\.{@}', еякх мхйюйне дпсцне хлъ яейжхх ме мювхмюеряъ я `\.{Clear}'. Юмюкнцхвмн лнфмн хяонкэгнбюрэ янйпюыемхе `\.{@}' х р.д. Хлемю яейжхи б опнвху яксвюъу днкфмш янбоюдюрэ оняхлбнкэмн, гю хяйкчвемхел онякеднбюрекэмняреи опнаекэмшу яхлбнкнб (янаярбеммн опнаекю, яхлбнкнб рюаскъжхх, йнмжю ярпнйх х/хкх ярпюмхжш), йнрнпше рпюйрсчряъ йюй ндхм опнаек. Б мювюке х йнмже хлемх бяе опнаекэмше яхлбнкш асдср нрапньемш. Рюй, `\.{@< Clear { }the arrays @>}' асдер яннрберярбнбюрэ хлемх б опедшдсыел опхлепе. Опнаекэмше яхлбнкш оняке лмнцнрнвхъ рюйфе асдср хцмнпхпнбюрэяъ, мн ме оепед мхл, рюй врн `\.{@}' ме яннрберярбсер `\.{@}'. \section Врн декюер \.{CTANGLE}. Йюй ашкн яйюгюмн бшье, яейжхъ мювхмюеряъ `\.{@\ }' кхан `\.{@*}', мн мхвецн --- н рнл, йюй нмю декхряъ мю \TeX-вюярэ, опнлефсрнвмсч х \CEE/-вюярх. Опнлефсрнвмюъ вюярэ мювхмюеряъ я оепбшл онъбкемхел б реке яейжхх `\.{@d}' кхан `\.{@f}', ю \CEE/-вюярэ мювхмюеряъ оепбшл `\.{@c}' хкх `\.{@
=}'. Б онякедмел яксвюе хлъ опхябюхбюеряъ дюммни \CEE/-яейжхх, еякх фе яейжхъ мювюрю `\.{@c}', рн нмю асдер {\sl мехлемнбюммни}. Йнмярпсйжхъ `\.{@
}' лнфер онъбхрэяъ б реке \CEE/-яейжхх опнхгбнкэмне йнкхвеярбн пюг: онякедсчыхе яяшкйх мю хлъ нгмювючр ецн "хяонкэгнбюмхе", ю ме "на╝ъбкемхе", р.е. врн хлемнбюммюъ яейжхъ, нопедекеммюъ цде-кхан еые, днкфмю ашрэ бярюбкемю б щрн леярн \CEE/-опнцпюллш. Деиярбхрекэмн, нямнбмюъ хдеъ \.{CTANGLE} --- янгдюрэ опнцпюллс, на╝едхмхб мейнрнпне йнкхвеярбн хлемнбюммшу х мехлемнбюммшу яейжхи. Рнвмше опюбхкю рюйнцн на╝едхмемхъ рюйнбш: бмювюке бяе люйпннопедекемхъ, нрлевеммше `\.{@d}' опенапюгсчряъ б хмярпсйжхх опеопнжеяянпю х янахпючряъ б мювюке тюикю. Дюкее рсдю йнохпсчряъ мехлемнбюммше \CEE/-яейжхх. Рюй напюгсеряъ оепбне опхакхфемхе рейярю опнцпюллш (днкфмю ясыеярбнбюрэ унръ аш ндмю мехлемнбюммюъ яейжхъ). Гюрел бяе хлемю яейжхи, мюидеммше б онксвеммнл рейяре, гюлемъчряъ \CEE/-вюярълх яннрберярбсчыху яейжхи х щрнр опнжеяя ондярюмнбйх опнднкфюеряъ дн пюгпеьемхъ бяеу яяшкнй. Бяе йнллемрюпхх сдюкъчряъ, оняйнкэйс онксвеммюъ опнцпюллю мю \CEE/ ме опедмюгмювюеряъ дкъ времхъ векнбейнл. Еякх ндмн х рн фе хлъ ашкн дюмн анкее вел ндмни яейжхх, \CEE/-тпюцлемр онксвюеряъ на╝едхмемхел \CEE/-вюяреи бяеу рюйху яейжхи. Щрн нйюгшбюеряъ онкегмшл, мюопхлеп, еякх хлееряъ яейжхъ я хлемел `Global variables', б йнрнпни асдср янапюмш бяе цкнаюкэмше оепелеммше, цде аш нмх мх ашкх на╝ъбкемш. Йнцдю меяйнкэйн яейжхи хлечр ндхмюйнбне хлъ, \.{CWEAVE} онкюцюер мнлеп оепбни хг мху мнлепнл, яннрберярбсчыхл щрнлс хлемх, х нмю бярюбкъер б йнмеж яейжхх яяшкйс: `See also sections~\dots' ("Ял. рюйфе яейжхх~\dots"), б йнрнпни оепевхякемш мнлепю бяеу нярюкэмшу яейжхи, хлечыху щрн фе хлъ. Яннрберярбсчыхи \CEE/-рейяр тнплюрхпсеряъ \.{CWEAVE} рюй, врн блеярн гмюйю пюбемярбю б бшундмнл днйслемре опхясрярбсер гмюй щйбхбюкемрмнярх, р.е. `$\langle\,$section name$\,\rangle\equiv\null$\CEE/ text'. Опх щрнл б онякедсчыху яейжхъу я щрхл хлемел гмюй `$\equiv$' гюлемъеряъ мю `$\mathrel+\equiv$', сйюгшбючыхл мю рн, врн \CEE/-тпюцлемр щрни яейжхх асдер днаюбкем й тпюцлемрс дпсцни яейжхх. Йнцдю \.{CTANGLE} мювхмюер х нйюмвхбюер напюанрйс яейжхх, нмю бярюбкъер б бшундмни тюик дхпейрхбш опеопнжеяянпю \.{\#line}, рюй врн мнлепю ярпнй б яннаыемхъу на ньхайюу х опх нркюдйе опнцпюллш асдср яяшкюрэяъ мю хяундмши \.{CWEB}-тюик. Акюцндюпъ щрнлс, б анкэьхмярбе яксвюеб н онксвюелнл \CEE/-тюике лнфмн опнярн гюашрэ. \section Врн декюер \.{CWEAVE}. Наыюъ хдеъ \.{CWEAVE} --- янгдюрэ хг тюикю \.{CWEB} тюик \.{.tex} рюйхл напюгнл: оепбюъ ярпнйю онксвюелнцн тюикю \.{.tex} сйюгшбюер \TeX'с гюцпсгхрэ тюик люйпннопедекемхи, нохяшбючыху тнплюр \.{CWEB}-днйслемрнб. Дюкее б \.{tex}-тюик йнохпсеряъ рейяр опеюласкш, пюяонкнфеммши оепед оепбни яейжхеи. Гюрел якедсер он нвепедх бшбнд йюфдни яейжхх, бнглнфмн боепелеьйс я йнлюмдюлх нйнмвюмхъ ярпюмхжш. Мюйнмеж, \.{CWEAVE} цемепхпсер яхярелс оепейпеярмшу яяшкнй: дкъ йюфднцн \CEE/-хдемрхтхйюрнпю сйюгшбючряъ мнлепю бяеу яейжхи, б йнрнпшу нм хяонкэгсеряъ, ю рюйфе ярпнхряъ юктюбхрмши яохянй бяеу хлем яейжхи, ю рюйфе нцкюбкемхе, яндепфюыее мнлепю ярпюмхж х яейжхи дкъ бяеу ``гюцкюбмшу'' яейжхи. Бш яопняхре, врн рюйне ``гюцкюбмюъ'' яейжхъ (``starred-section'')? Яейжхх, йнрнпше мювхмючряъ `\.{@*}' блеярн `\.{@\ }' нангмювючр мювюкн мнбни цпсоош яейжхи. Оняке `\.{@*}' сйюгшбюеряъ хлъ цпсоош, нйюмвхбючыееяъ рнвйни. Рюйхе цпсоош б днйслемре \TEX/ бяецдю мювхмючр мнбсч ярпюмхжс, х ху хлъ хяонкэгсеряъ б йнкнмрхрске бяеу онякедсчыху ярпюмхж дн онъбкемхъ нвепедмни гюцкюбмни яейжхх. Хлъ цпсоош рюйфе гюмняхряъ б нцкюбкемхе х оевюрюеряъ б мювюке яейжхх фхпмшл ьпхтрнл. Опеднярепефемхе: ме хяонкэгсире б рюйху хлемюу сопюбкъчыху опедкнфемхи \TeX'ю, еякх бш ме сбепемш, врн люйпннопедекемхъ хг \.{cwebmac} ме йнмткхйрсчр я мхлх. Опхвхмни щрнлс яксфхр рн, врн хлъ цпсоош асдер опенапюгнбюмн б бепумхи пецхярп, йнцдю нмн онъбкъеряъ б йнкнмрхрске, ю рюйфе асдер бшбедемн фхпмшл ьпхтрнл б мювюке яейжхх х гюохяюмн бн бпелеммши тюик-нцкюбкемхе, рюй врн хяонкэгселше йнлюмдш днкфмш пюанрюрэ опюбхкэмн бн бяеу щрху пефхлюу. \TeX-тюик, онксвеммши я онлныэч \.{CWEAVE}, дкъ йюфдни яейжхх яндепфхр якедсчыее: бн-оепбшу, мнлеп яейжхх (р.е. `\.{\\M123.}' б мювюке яейжхх мнлеп 123, гю хяйкчвемхел гюцкюбмшу яейжхи, б мювюке йнрнпшу блеярн `\.{\\M}' якедсер `\.{\\N}'). Дюкее якедсер \TeX-вюярэ яейжхх, яйнохпнбюммюъ онврх днякнбмн, йюй нохяюмн мхфе. Бякед гю щрхл хдср опнлефсрнвмюъ х \CEE/-вюярх яейжхх, пюгдекеммше меанкэьхл опнлефсрйнл, еякх нмх нае меосярше. Щрх дбе вюярх онксвемш бярюбйни лмнфеярбю гюреикхбшу \TeX-люйпнянб б \CEE/-опнцпюллс. Щрх люйпняш сопюбкъчр рхонцпютяйхлх ондпнамнярълх, рюйхлх, йюй ьпхтрш, опюбхкэмюъ пюяярюмнбйю опнаекнб б люрелюрхвеяйху тнплскюу, пюгахемхе мю ярпнйх х нрярсош. \section \CEE/-йнд б рейяре \TeX'ю х мюнанпнр. Йнцдю бш мюахпюере \TeX-рейяр, бнглнфмн, врн бюл онмюднахряъ янякюрэяъ мю оепелеммше х дпсцхе на╝ейрш \CEE/-опнцпюллш, опхвел фекюрекэмн, врнаш ху нтнплкемхе яннрберярбнбюкн рнлс, врн хяонкэгсеряъ б опнцпюлле. Дкъ щрнцн \.{CWEB} опедсялюрпхбюер бнглнфмнярэ пюглеярхрэ б реке \TeX-рейярю йнмярпсйжхх ъгшйю \CEE/, нцпюмхвхб ху яхлбнкюлх `\.|'. Мюопхлеп, осярэ лш унрхл мюохяюрэ врн-рн бпнде $$\hbox{ If \\{pa} is declared as `\&{int} ${}{*}\\{pa}$', the assignment $\\{pa}\K{\AND}\|a[\T{0}]$ makes \\{pa} point to the zeroth element of \|a.}$$ Рейяр мю ъгшйе \TeX\ б \.{CWEB}-тюике асдер рюйхл: $$\lpile{\.{If |pa| is declared as `|int *pa|', the}\cr \.{assignment |pa=\&a[0]| makes |pa| point to the zeroth element of |a|.}\cr}$$ Х мюйнмеж, \.{CWEAVE} опенапюгсер ецн б меврн рюйне, врн мхйнлс ме гюунрекняэ аш ббндхрэ бпсвмсч: $$\lpile{\.{If \\\\\{pa\} is declared as `\\\&\{int\} \$\{\}\{*\}\\\\\{pa\}\$',}\cr \.{the assignment \$\\\\\{pa\}\\K\{\\AND\}\\|a[\\T\{0\}]\$}\cr \.{makes \\\\\{pa\} point to the zeroth element of \\|a.}\cr}$$ Нрлерхл, врн рюакхжю оепейпеярмшу яяшкнй, янгдюммюъ \.{CWEAVE}, дкъ онднамнцн йнллемрюпхъ асдер бйкчвюрэ мнлеп рейсыеи яейжхх б яохяйе яяшкнй мю \\{pa} меялнрпъ мю рн, врн \\{pa} лнфер х ме онъбхрэяъ б \CEE/-вюярх щрни яейжхх. Деиярбхрекэмн, хмдейя бйкчвюер яяшкйх мю хдемрхтхйюрнпш б онъямъчыху йнллемрюпхъу рюй фе, йюй х б яюлни опнцпюлле; врнаш нжемхрэ щрс бнглнфмнярэ ме онрпеасеряъ лмнцн бпелемх. Б рн фе бпелъ, хдемрхтхйюрнпш \&{int} х \|a\ б хмдейя ме оноюдср, онрнлс врн \.{CWEAVE} ме онлеыюер б хмдейя гюпегепбхпнбюммше якнбю х ндмнасйбеммше хдемрхтхйюрнпш. Рюйхе хдемрхтхйюрнпш онкюцючряъ ярнкэ бегдеясыхлх, врн мер ялшякю оепевхякърэ бяе леярю, цде нмх бярпевючряъ. Меялнрпъ мю рн, врн яейжхъ мювхмюеряъ \TEX/-вюярэч х гюйюмвхбюеряъ \CEE/-вюярэч, цпюмхжю лефдс мхлх рнвмн ме нопедекемю, оняйнкэйс \CEE/-йнд лнфер ашрэ бйкчвем б рейяр \TEX/, еякх нм нцпюмхвем `\pb'. Юмюкнцхвмн, рейяр \TEX/ гювюярсч онъбкъеряъ бмсрпх \CEE/-йндю, оняйнкэйс бяе, врн явхрюеряъ йнллемрюпхел (р.е. бяе бмсрпх \.{/*} х \.{*/}, кхан оняке \.{//}) хмрепоперхпсеряъ йюй рейяр \TEX/. Рнвмн рюй фе хлъ яейжхх яндепфхр рейяр \TEX/, мн йнмярпсйжхъ \.{@<хлъ яейжхх@>} жекхйнл лнфер хяонкэгнбюрэяъ б \CEE/-йнде; якеднбюрекэмн, оепеунд лефдс пефхлюлх \CEE/ х~\TEX/ нясыеярбкъеряъ еяреярбеммн, йюй б щрху опхлепюу: $$ \displaylines{ \hbox{\.{if} \.{(x==0)} \.{@}} \cr \hbox{\.{...} \.{using} \.{the} \.{algorithm} \.{in} \.{|@|.}} } $$ Оепбши хг мху лнфер ашрэ мюидем б \CEE/-вюярх яейжхх, б йнрнпсч асдер бярюбкем йнд хг яейжхх, мюгбюммни ``Empty the \\{buffer} array''. Брнпни опхлеп хг \TEX/-вюярх яейжхх, йнрнпюъ кхьэ яяшкюеряъ мю дпсцсч яейжхч, мн ме нопедекъер х ме хяонкэгсер ее. (Напюрхре бмхлюмхе мю `\pb' бнйпсц хлемх яейжхх б щрнл яксвюе.) \section Люйпннопедекемхъ. Сопюбкъчыхи йнд \.{@d}, гю йнрнпшл якедсер $$\\{identifier}\.{ }\hbox{\CEE/-йнд}\qquad\hbox{кхан}\qquad \\{identifier}\.(\\{par}_1,\ldots,\\{par}_n\.{) }\hbox{\CEE/-йнд}$$ (\\{identifier} х яйнайю бн брнпнл яксвюе ме днкфмш пюгдекърэяъ опнаекюлх) опенапюгсеряъ \.{CTANGLE} б дхпейрхбс опеопнжеяянпю \.{\#define}, йнрнпше пюяонкюцючряъ б мювюке цемепхпселни \CEE/-опнцпюллш, йюй нохяюмн пюмее. Люйпннопедекемхе `\.{@d}' лнфер ашрэ пюгахрн мю меяйнкэйн ярпнй, опхвел ме мсфмн ярюбхрэ б йнмже ярпнйх `\.{\\}' --- ху юбрнлюрхвеяйх бярюбхр \.{CTANGLE}. Еякх он йюйни-рн опхвхме онрпеасеряъ дхпейрхбю \.{\#define} б йнмйпермни рнвйе \CEE/-тюикю, лнфмн гюдюрэ ее б \CEE/-йнде, ю ме я онлныэч \.{CWEB}, мн б щрнл яксвюе опхдеряъ люяйхпнбюрэ яхлбнкш оепебндю ярпнйх яюлнярнърекэмн. \section Ярпнйх х йнмярюмрш. Еякх бюл мсфмю б \CEE/-йнде ярпнйнбюъ йнмярюмрю, нцпюмхвеммюъ \.' хкх \.", ее лнфмн гюдюрэ йюй нашвмн, гю хяйкчвемхел рнцн, врн яхлбнк `\.@' днкфем ашрэ опедярюбкем `\.{@@}' (щрн едхмярбеммши сопюбкъчыхи яхлбнк, йнрнпши лнфер онъбкърэяъ бмсрпх ярпнйх, ял. дюкее). Ярпнйнбше йнмярюмрш ме днкфмш яндепфюрэ яхлбнкнб оепебндю ярпнйх, еякх нмх ме гюлюяйхпнбюмш~`\.{\\}'. \TEX/ х \CEE/ опедкюцючр пюгкхвмше яонянаш гюдюмхъ бняэлепхвмшу х ьеярмюджюрхпхвмшу йнмярюмр, оняйнкэйс \TEX/ нпхемрхпнбюм мю ондцнрнбйс рейярю векнбейнл, ю \CEE/ --- мю люьхммсч напюанрйс. Б \TEX/ йнмярюмрю на╝ъбкъеряъ бняэлепхвмни хкх ьеярмюджюрхпхвмни я онлныэч опетхйяю \.' кхан~\." яннрберярбеммн; б \CEE/ опетхйяш хлечр бхд \.0 х \.{0x}. Б~\.{CWEB} пюгпеьемн хяонкэгнбюрэ наю янцкюьемхъ рюл, цде нмх опхмърш: б \CEE/-йнде врнаш онксвхрэ $40_8$ гюдюеряъ `\.{040}' х \.{CTANGLE} аег хглемемхи йнохпсер щрн б \CEE/-тюик й сднбнкэярбхч йнлохкърнпю, ю \.{CWEAVE} оевюрюер йюй $\T{\~40}$. Юмюкнцхвмн, \.{CWEAVE} оевюрюер ьеярмюджюрхпхвмсч \CEE/-йнмярюмрс `\.{0x20}' йюй \T{\^20}. Хяонкэгнбюмхе йспяхбю дкъ бняэлепхвмшу жхтп х ьпхтрю охьсыеи люьхмйх дкъ ьеярмюджюрхпхвмшу сксвьюер бняопхърхе щрху йнмярюмр б днйслемре. Дкъ янупюмемхъ наымнярх лнфмн хяонкэгнбюрэ `\.{|040|}' х~`\.{|0x20|}' б \TEX/-вюярх яейжхх. \section Сопюбкъчыхе яхлбнкш. {\sl Сопюбкъчыхи яхлбнк (control code)\/} \.{CWEB} --- щрн йнлахмюжхъ дбсу яхлбнкнб, хг йнрнпшу оепбши `\.@'. Лш сфе нгмюйнлхкхяэ я мюгмювемхел мейнрнпшу хг мху, ю реоепэ хгкнфхл щрн анкее рнвмн. Б мхфеякедсчыел яохяйе асйбш б йбюдпюрмшу яйнайюу сйюгшбючр йнмрейяр, б йнрнпнл йюфдши сопюбкъчыхи яхлбнк хлеер ялшяк. $L$ нгмювюер, врн яхлбнк дносярхл б опеюласке, $T$ (\TEX/), $M$ (middle) х $C$ --- б йюфдни хг рпеу вюяреи яейжхх мю бепумел спнбме (р.е. бнбме йнмярпсйжхх `\pb' х хлем яейжхи). Ярпекйю $\to$ нангмювюер, врн сопюбкъчыхи яхлбнк гюбепьюер рейсысч вюярэ \.{CWEB}-тюикю х мювхмюер якедсчысч вюярэ, сйюгюммсч асйбни оняке ярпекйх. Мюопхлеп, $[LTMC\to T]$ оняке \.{@\ } гмювхр, врн сопюбкъчыхи йнд лнфер онъбхрэяъ б опеюласке кхан б кчани хг рпеу вюяреи яейжхх, х врн нм мювхмюер \TEX/-вюярэ (бнглнфмн осярсч) рейсыеи яейжхх. Еые дбю янйпюыемхъ лнцср ашрэ сйюгюмш б щрху йбюдпюрмшу яйнайюу: Асйбю~$r$ нгмювюер {\it нцпюмхвеммши йнмрейяр (restricted context)}, рн еярэ, яндепфхлне \CEE/-йнллемрюпхеб, хлем яейжхи, \CEE/-ярпнй х сопюбкъчыху рейярнб (нопедекемш дюкее). Асйбю $c$ --- щрн {\it бмсрпеммхи \CEE/-йнмрейяр (inner \CEE/ context)} хкх \CEE/-йнд бмсрпх`\pb' (бйкчвюъ йнллемрюпхх бмсрпх `\pb', мн ме б дпсцху нцпюмхвеммшу йнмрейярюу). Гбегднвйю $*$ оняке яйнанй сйюгшбюер, врн щрхл сопюбкъчыхл яхлбнкнл мювхмюеряъ нцпюмхвеммши йнмрейяр, йнрнпши гюбепьюеряъ оюпмни \.{@>} Асйбш б сопюбкъчыху яхлбнкюу ме пюгкхвючряъ он пецхярпс. Рюй, \.{@d} нгмювюер рн фе яюлне, врн х \.{@D}. Дюкее пюяялнрпемш рнкэйн яхлбнкш я асйбюлх мхфмецн пецхярпю. \gdef\@#1[#2] {\penalty-50\yskip\hangindent 2em\noindent\.{@#1\unskip \spacefactor1000{ }}$[#2]$\quad} \def\more{\hangindent 2em \hangafter0} \def\subsec{\penalty-300\medskip\noindent} \@@ [LTMCrc] Оюпю яхлбнкнб \.@ опедярюбкъер яюл яхлбнк `\.@'. Щрн едхмярбеммши сопюбкъчыхи йнд, йнрнпши деиярбсер онбячдс. Гюлерхл, врн бюл опхдеряъ хяонкэгнбюрэ щрн янцкюьемхе, еякх бш сйюгшбюере email-юдпея б \.{CWEB}-тюике (мюопхлеп, \.{levy@@geom.umn.edu}). \subsec Якедсчыхе йндш опедярюбкъчр \TEX/-вюярэ яейжхх. \@\ [LTMC\to T] Нгмювюер мювюкн мнбни (ме гюцкюбмни) яейжхх. Яхлбнк рюаскъжхх, опнцнмю ярпюмхжш хкх йнмжю ярпнйх, якедсчыхе гю гмюйнл \.@, щйбхбюкемрмш опнаекс (йюй х б анкэьхмярбе дпсцху яксвюеб). \@* [LTMC\to T] Нрлевюер мювюкн мнбни гюцкюбмни яейжхх, р.е. яейжхх, мювхмючыеи мнбсч цпсоос. Мюгбюмхе щрни цпсоош днкфмн якеднбюрэ гю \.{@*} х гюбепьюрэяъ рнвйни. Йюй сйюгюмн бшье, б мел ме днкфмш хяонкэгнбюрэяъ сопюбкъчыхе онякеднбюрекэмнярх \TEX/'ю, йпнле днярюрнвмн опняршу. Йнцдю \.{CWEAVE} х \.{CTANGLE} явхршбючр \.{@*}, нмх бшбндър мю реплхмюк яхлбнк `*' х мнлеп рейсыеи яейжхх, рюй врн онкэгнбюрекэ лнфер бхгсюкэмн якедхрэ гю опндбхфемхел пюанрш. Яюлюъ оепбюъ яейжхъ фекюрекэмн днкфмю ашрэ гюцкюбмни. \more Бш лнфере сйюгюрэ ``цксахмс'' гюцкюбмни яейжхх, ббндъ \.* кхан деяърхпхвмне вхякн оняке \.{@*}, нрлевюъ щрхл нрмняхрекэмне пюяонкнфемхе рейсыеи цпсоош яейжхи б хепюпухх опнцпюллш. Вюярх опнцпюллш бепумецн спнбмъ, нангмювеммше \.{@**}, бшдекъчряъ б нцкюбкемхх фхпмшл ьпхтрнл: асдел цнбнпхрэ, врн ху цксахмю~$-1$. Б опнрхбмнл яксвюе, цксахмю опедярюбкъер янани менрпхжюрекэмне вхякн, йнрнпне нопедекъер бекхвхмс нрярсою б нцкюбкемхх. Онднамше нрярсош онлнцючр опнъямхрэ ярпсйрспс дкхммни опнцпюллш. Еякх цксахмю ме сйюгюмю ъбмн, нмю онкюцюеряъ пюбмни 0. Еякх бюью опнцпюллю йнпнрйю, рн, он-бхдхлнлс, бнглнфмн асдер нярюбхрэ гмювемхе цксахмш мскебшл. Гюцкюбмше яейжхх бяецдю пюяонкюцючряъ мю мнбни ярпюмхже бшбндю, еякх рнкэйн цксахмю ме опебшьюер~1. \subsec Опнлефсрнвмюъ вюярэ йюфдни яейжхх яндепфхр опнхгбнкэмне йнкхвеярбн люйпннопедекемхи (мювхмючыхуяъ я \.{@d}) х нопедекемхи тнплюрнб (опедбюпъелшу \.{@f} кхан \.{@s}), пюяонкнфеммшу б опнхгбнкэмнл онпъдйе. \@d [TM\to M] Люйпннопедекемхе: мювхмюеряъ \.{@d}, гю йнрнпшл хдср хдемрхтхйюрнп, менаъгюрекэмше оюпюлерпш х \CEE/-йнд, йюй нохяюмн пюмее. \@f [TM\to M] Нопедекемхе тнплюрю: мювхмюеряъ \.{@f}; нмх сйюгшбючр \.{CWEAVE} напюаюршбюрэ хдемрхтхйюрнпш нянашл напюгнл, йнцдю нмх бярпевючряъ б \CEE/-йнде. Наыхи бхд нопедекемхъ тнплюрю --- `\.{@f} \|l \|r', дюкее якедсер менаъгюрекэмши йнллемрюпхи, нцпюмхвеммши \.{/*} х \.{*/}, цде \|l х \|r --- хдемрхтхйюрнпш: \.{CWEAVE} б дюкэмеиьел асдер пюяялюрпхбюрэ хдемрхтхйюрнп \|l рюй, йюй нм щрн декюер б мюярнъыхи лнлемр дкъ \|r. Щрн дюер \.{CWEB}-опнцпюллхярс бнглнфмнярэ ббндхрэ мнбше гюпегепбхпнбюммше якнбю х/хкх нрлемърэ пегепбхпнбюмхе мейнрнпшу хдемрхтхйюрнпнб ъгшйнл \CEE/. Еякх \|r --- яоежхюкэмши хдемрхтхйюрнп `\\{TeX}', хдемрхтхйюрнп \|l асдер нртнплюрхпнбюм йюй сопюбкъчыюъ онякеднбюрекэмнярэ \TEX/. Мюопхлеп, `\.{@f foo TeX}' б \.{CWEB}-тюике опхбедер й рнлс, врн хдемрхтхйюрнп \\{foo} асдер бшбндхрэяъ \.{CWEAVE} йюй \.{\\foo}. Опнцпюллхяр днкфем нопедекхрэ \.{\\foo} он ябнелс сялнрпемхч, онкюцюъ, врн \TEX/ мюундхряъ б люрелюрхвеяйни лнде. (Йюфдши яхлбнк ондвепйхбюмхъ опенапюгсеряъ б \.{x}, йнцдю янгдюеряъ сопюбкъчыюъ онякеднбюрекэмнярэ \TEX/; рюй, \\{foo\_bar} ярюмнбхряъ \.{\\fooxbar}. Опнвхе яхлбнкш, бйкчвюъ жхтпш, ме рпюмякхпсчряъ, рюй врн \TEX/ асдер онкюцюрэ ху оюпюлерпюлх люйпняю, ю ме вюярэч яюлни сопюбкъчыеи онякеднбюрекэмнярх. Мюопхлеп, $$\.{\\def\\x\#1\{x\_\{\#1\}\} @f x1 TeX @f x2 TeX}$$ асдер бшбндхрэ \.{x1} х \.{x2} ме йюй \\{x1} х \\{x2}, ю йюй $x_1$ х $x_2$. \more \.{CWEAVE} юбрнлюрхвеяйх тнплюрхпсер хдемрхтхйюрнпш, ббедеммше оняпедярбнл \&{typedef}, йюй гюпегепбхпнбюммше якнбю, онщрнлс бюл ме опхдеряъ нопедекърэ тнплюрш якхьйнл вюярн. \@s [TM\to M;\;L] Юмюкнцхвмн \.{@f}, мн \.{CWEAVE} ме нрнапюфюер нопедекемхъ тнплюрнб б ябнел бшбнде, х менаъгюрекэмши \CEE/-йнллемрюпхи медносярхл. Хяонкэгсеряъ цкюбмшл напюгнл б \.{@i}-тюикюу. \subsec Якедсчыхе йндш сопюбкъчр \CEE/-вюярэч яейжхх. \@{c @p} [TM\to C] \CEE/-вюярэ мехлемнбюммни яейжхх мювхмюеряъ \.{@c} (кхан \.{@p}, р.е. ``program''; наю сопюбкъчыху яхлбнкю декючр ндмн х рн фе). Щрн гюярюбкъер \.{CTANGLE} днонкмхрэ якедсчыхл \CEE/-йнднл оепбне опхакхфемхе рейярю опнцпюллш, йюй нохяюмн мю ярпюмхже~\tangref. Гюлерхл, врн \.{CWEAVE} ме онлеыюер `\.{@c}' б \TEX/-бшбнд, рюй врн еякх бш янгдюере тюик \.{CWEB}, нямнбшбюъяэ мю пюяоевюрюммни \TEX/'нл \.{CWEB}-днйслемрюжхх, ме гюасдэре сйюгюрэ \.{@c} б яннрберярбсчыху леярюу мехлемнбюммшу яейжхи. \@< [TM\to C;\; C;\; c] $*$ Щрнр сопюбкъчыхи яхлбнк опедярюбкъер хлъ яейжхх (кхан смхйюкэмши опетхйя, йюй сйюгюмн бшье), яндепфюыее рейяр \TEX/ х гюбепьючыееяъ \.{@>}. Йнмярпсйжхъ \.{@<...@>} б жекнл йнмжеорсюкэмн ъбкъеряъ щкелемрнл \CEE/-йндю. Ее онбедемхе гюбхяхр нр йнмрейярю: \more Яхлбнк \.{@<} б йнмрейярюу $T$ х $M$ ябъгшбюер якедсчыее дюкее хлъ яейжхх я рейсыеи яейжхеи, х нрйпшбюер \CEE/-вюярэ яейжхх. Хлъ гюбепьюеряъ \.{@>}, гю йнрнпшл якедсер \.{=} хкх \.{+=}. \more Б йнмрейяре $C$, \.{@<} сйюгшбюер, врн яейжхъ гдеяэ хяонкэгсеряъ --- ее \CEE/-нопедекемхъ асдср онлеыемш ячдю \.{CTANGLE}, йюй нохяюмн мю ярпюмхже~\tangref. Дкъ анкее онкмнцн бшъбкемхъ ньханй \.{CTANGLE} х \.{CWEAVE} опедсялюрпхбючр бшбнд яннаыемхъ б яксвюе, еякх гю рюйхл хлемел яейжхх якедсер \.=, оняйнкэйс щрн яйнпее бяецн нгмювюер нопедекемхе мнбни яейжхх, х онщрнлс днкфмн опедбюпърэяъ \.{@\ }. Еякх бюл деиярбхрекэмн мсфмн мюохяюрэ $\langle\,$foo$\,\rangle=\\{bar}$, цде $\langle\,$foo$\,\rangle$ хяонкэгсеряъ, ю ме нопедекъеряъ, онлеярхре \.= мю мнбни ярпнйе. \more Мюйнмеж, бн бмсрпеммел \CEE/-йнмрейяре (р.е., бмсрпх `\pb' б \TEX/-вюярх яейжхх хкх б йнллемрюпхх), \.{@<...@>} нгмювюер, врн щрю яежхъ жхрхпсеряъ. Рюйне хяонкэгнбюмхе хцмнпхпсеряъ \.{CTANGLE}. Нрлерхл, врн дюфе б щрнл яксвюе лш рпюйрсел хлъ яейжхх йюй щкелемр \CEE/, рюй йюй нмн нцпюмхвемн \pb. \@( [TM\to C;\;C;\;c] $*$ Хлъ яейжхх лнфер мювхмюрэяъ \.{@(}. Бяе асдер пюанрюрэ, йюй х дкъ \.{@<}, мн я рел хяйкчвемхел, врн \CEE/-йнд яейжхх, мюгбюммни \.{@(foo@>} асдер гюохяюм \.{CTANGLE} б тюик \.{foo}. Рел яюлшл лш лнфел онксвхрэ хг ндмнцн тюикю \.{CWEB} меяйнкэйн бшундмшу тюикнб. (Нопедекемхъ \.{@d} ме оноюдючр б рюйхе тюикш, ю кхьэ б нямнбмни \.{.c}-тюик.) Ндмн хг опедмюгмювемхи щрни бнглнфмнярх б рнл, врнаш янгдюрэ гюцнкнбнвмше тюикш дкъ опнцпюллмшу лндскеи. Дпсцхл опхлепнл ее хяонкэгнбюмхъ яксфхр цемепюжхъ реярнб, пюяопнярпюмъелшу я бюьеи опнцпюллни. Янупюмъъ хяундмше рейярш опнцпюллш, ее гюцнкнбнвмше тюикш х реярнбше опнжедспш янблеярмн, лш хлеел анкэье ьюмянб онддепфюрэ ху янцкюянбюммнярэ. Нрлерхл, врн хлемнбюммюъ яейжхъ лнфер ашрэ бшбедемю б меяйнкэйн пюгкхвмшу бшундмшу тюикнб, оняйнкэйс бш лнфере сонлъмсрэ \.{@} йюй б \.{@(bar1@>}, рюй х б \.{@(bar2@>}. \@h [Cc] Опедохяшбюер \.{CTANGLE} бярюбхрэ б щрс рнвйс нопедекемхъ \.{\#define} хг опнлефсрнвмшу вюяреи бяеу яейжхи х {\it ме\/} гюохяшбюрэ ху б мювюкн \CEE/-тюикю. Онкегмн, й опхлепс, опх менаундхлнярх пюглеярхрэ люйпннопедекемхъ оняке бйкчвюелшу тюикнб. (Хцмнпхпсеряъ \.{CTANGLE} бмсрпх `\pb'.) \subsec Меяйнкэйн якедсчыху сопюбкъчыху яхлбнкнб мювхмючр ``сопюбкъчыхе рейярш'' (``control texts''), гюбепьючыхеяъ `\.{@>}'. Гюйпшбючыюъ `\.{@>}' днкфмю ашрэ мю рни фе ярпнйе \.{CWEB} тюикю, врн х мювюкн сопюбкъчыецн рейярю. Йнмрейяр, мювхмючыхияъ щрхлх сопюбкъчыхлх яхлбнкюлх х нйюмвхбючыхияъ \.{@>}, ъбкъеряъ нцпюмхвеммшл. \@\^ [TMCc] $*$ Дюкэмеиьхи сопюбкъчыхи рейяр, бокнрэ дн `\.{@>}', асдер онлеыем б хмдейя мюпъдс я хдемрхтхйюрнпюлх \CEE/-опнцпюллш; щрнр рейяр асдер мюапюм пнлюмяйхл ьпхтрнл. Мюопхлеп, врнаш онлеярхрэ тпюгс ``system dependencies'' (яхярелмше гюбхяхлнярх) б хмдейя, цемепхпселши \.{CWEAVE}, онлеярхре `\.{@\^system dependencies@>}' б йюфдни яейжхх, йнрпсч бш унрхре нрлерхрэ йюй яхярелмн-гюбхяхлсч. \@. [TMCc] $*$ Онякедсчыхи сопюбкъчыхи рейяр асдер онлеыем б хмдейя б ярхке охьсыеи люьхмйх (\.{typewriter} \.{type}). \@: [TMCc] $*$ Яннрберярбсчыхи рейяр асдер онлеыем б хмдейя б тнплюре, нохяюммнл \TEX/-люйпнянл `\.{\\9}', йнрнпши бш днкфмш нопедекхрэ рюй, йюй щрн менаундхлн. \@t [MCc] $*$ Дюкэмеиьхи сопюбкъчыхи рейяр асдер гюйкчвем б \TEX/ \.{\\hbox} х нртнплюрхпнбюм йюй вюярэ нйпсфючыеи ецн \CEE/-опнцпюллш. Щрнр рейяр хцмнпхпсеряъ \.{CTANGLE}, мн лнфер хяонкэгнбюрэяъ б пюгкхвмшу жекъу \.{CWEAVE}. Мюопхлеп, бш лнфере декюрэ йнллемрюпхх, йнрнпше янверючр \CEE/ х йкюяяхвеяйсч люрелюрхйс, бпнде `$\\{size}<2^{15}$', ббндъ `\.{|size < 2@t\$\^\{15\}\$@>|}'. \@= [MCc] $*$ Сопюбкъчыхи рейяр асдер днякнбмн бшбедем б \CEE/-опнцпюллс. \@q [LTMCc] $*$ Сопюбкъчыхи рейяр онкмнярэч хцмнпхпсеряъ --- щрн йнллемрюпхи хяйкчвхрекэмн дкъ вхрюрекеи \.{CWEB}-тюикю. Тюик, опедмюгмювеммши дкъ бйкчвемхъ б опеюласкс я онлныэч \.{@i}, лнфер яндепфюрэ хмтнплюжхч н яеае яюлнл б \.{@q} йнллемрюпхх. Дпсцхл хяонкэгнбюмхел щрни йнмярпсйжхх лнфер ашрэ бняярюмнбкемхе аюкюмяю яйнанй бмсрпх C-ярпнй, врнаш рейярнбше педюйрнпш, нрякефхбючыхе ху оюпмнярэ, "ме оюдюкх б ьрнонп" (дю, хлеммн рюй: "go into a tailspin" --- {\sl Опхл. оепеб.\/}). \@! [TMCc] $*$ Мнлеп яейжхх б хмдейяе асдер ондвепймср, еякх `\.{@!}' меоняпедярбеммн опедьеярбсер хдемрхтхйюрнпс кхан сопюбкъчыелс рейярс, онлеыюелнлс б хмдейя. Щрн янцкюьемхе хяонкэгсчр, врнаш пюгкхвюрэ яейжхх, б йнрнпшу хдемрхтхйюрнп нопедекем кхан на╝ъямъеряъ мейнрнпшл нянашл напюгнл, нр яейжхи, цде нм хяонкэгнбюм. Яяшкйх мю гюпегепбхпнбюммше якнбю кхан ндмняхлбнкэмше хдемрхтхйюрнпш б хмдейя ме онлеыючряъ, гю хяйкчвемхел ондвепймсршу. `\.{@!}' меъбмн бярюбкъеряъ \.{CWEAVE} йнцдю хдемрхтхйюрнп на╝ъбкъеряъ кхан нопедекъеряъ б \CEE/-йнде; мюопхлеп, нопедекемхе $$\hbox{\&{int} \\{array}[\\{max\_dim}], \\{count}${}=\\{old\_count};$}$$ онлеыюер б хмдейя хлемю \\{array} х \\{count}, бшдекъъ ху ондвепйхбюмхел. Лерйх, нопедекемхъ тсмйжхи, онднамше \\{main}(\&{int}~\\{argc},\,\&{char}~$*$\\{argv}[\,]), х нопедекемхъ \&{typedef} рюйфе ондпюгслебючр ондвепйхбюмхе. Нопедекемхъ тсмйжхи ярюпнцн ярхкъ (аег опнрнрхою) ме нопедекъчр ху юпцслемрнб, рел ме лемее, юпцслемрш асдср онкюцюрэяъ нопедекеммшлх (х асдср нрнапюфюрэяъ б хмдейяе я ондвепйхбюмхел), еякх ху рхош на╝ъбкемш оепед рекнл тсмйжхх нашвмшл напюгнл, (мюопхлеп, `\&{int}~\\{argc}; \&{char}~${*}\\{argv}[\,]$; $\{\,\ldots\,\}$'). \subsec Оепеидел, мюйнмеж, й сопюбкъчыхл яхлбнкюл, йнрнпше бкхъчр рнкэйн мю пюанрс \.{CTANGLE}. \@' [MCc] Хяонкэгнбюмхе щрнцн сопюбкъчыецн яхлбнкю ноюямн, оняйнкэйс ецн гмювемхе б \.{CWEB} ясыеярбеммн нркхвюеряъ нр ецн опннапюгю б \.{WEB}. Б \.{CWEB} нм пюяйпшбюеряъ б деяърхпхвмсч йнмярюмрс, яннрберярбсчысч ASCII-йндс ярпнйх едхмхвмни дкхмш (р.е. \.{@'a'} опенапюгсеряъ \.{CTANGLE} б \.{97}, ю \.{@'\\t'} --- б \.9). Бш лнфере бняонкэгнбюрэяъ щрхл, еякх унрхре пюанрюрэ я ASCII мю люьхме, ме хяонкэгсчыеи щрс йндхпнбйс, мн б анкэьхмярбе яксвюеб япедярбю ъгшйю \CEE/, нопедекеммше б \.{}, бонкме днярюрнвмш дкъ сярпюмемхъ гюбхяхлнярх нр йндхпнбйх яхлбнкнб. \@\& [MCc] Ноепюжхъ \.{@\&} яжеокъер рейяр якебю нр яеаъ я рейярнл яопюбю х бшбндхр б \CEE/-тюик рюй, врн мх опнаекш, мх люпйепш йнмжю ярпнйх ме асдср бярюбкемш лефдс мхлх. \@l [L] \.{CWEB}-опнцпюллхярш бнкэмш хяонкэгнбюрэ б \TEX/ре кчани 8-ахрмши яхлбнкэмши йнд хг мепедйн гюопермнцн дхюоюгнмю 128--255; щрх яхлбнкш рюйфе дносярхлш б ярпнйюу х дюфе б хдемрхтхйюрнпюу \CEE/-опнцпюллш. Б пюгкхвмшу пюяьхпемхъу аюгнбнцн ярюмдюпрю ASCII мхфмъъ вюярэ рюакхжш (йндш, анкэьхе 128) яннрберярбсер асйбюл я дхюйпхрхвеяйхлх гмюйюлх, яхлбнкюл ме кюрхмяйху юктюбхрнб х р.д. Йнцдю рюйхе яхлбнкш онъбкъчряъ б хдемрхтхйюрнпюу, \.{CTANGLE} гюлемъер ху ярюмдюпрмшлх юктюбхрмн-жхтпнбшлх яхлбнкюлх ASCII кхан \.{\_}, врнаш хлемю яннрберярбнбюкх янцкюьемхъл ъгшйю \CEE/. Опх щрнл опхлемъеряъ рюакхжю оепейндхпнбйх, йнрнпюъ он слнквюмхч янонярюбкъер я йюфдшл яхлбнкнл, хлечыхл ASCII-йнд \T{\^}$ab$ (цде $a$ х $b$ --- ьеярмюджюрепхвмше жхтпш х $a\ge8$) ярпнйс \.{Xab}. Онлеярхб б опеюласке йнмярпсйжхч \.{@l\ ab\ newstring}, бш сйюфере \.{CTANGLE} гюлемърэ щрнр яхлбнк ярпнйни \.{newstring}. Мюопхлеп, б йндхпнбйе ISO Latin-1 асйбю `\"u' хлеер йнд \T{\^FC} (кхан \.{'\char`\\374'}), х \.{CTANGLE} он слнквюмхч гюлемъер б хдемрхтхйюрнпюу щрнр йнд онякеднбюрекэмнярэч яхлбнкнб \.{XFC}. Еякх бш гюдюдхре \.{@l} \.{fc} \.{ue}, рн дюкее блеярн щрни асйбш асдер ондярюбкърэяъ \.{ue}. \more \.{CWEAVE} опносяйюер 8-ахрмше яхлбнкш опълн б \TEX/ аег рпюмякхрепюжхх; мн опх щрнл \TEX/ днкфем ашрэ, б ябнч нвепедэ, ондцнрнбкем й ху напюанрйе. Еякх бш тнплюрхпсере бяе меярюмдюпрмше хдемрхтхйюрнпш йюй нянаше (``custom'') сопюбкъчыхе онякеднбюрекэмнярх, якедсер мюярпнхрэ \TEX/ рюй, врнаш нм бняопхмхлюк бяе ху яхлбнкш йюй асйбш. Б опнрхбмнл яксвюе якедсер кхан на╝ъбхрэ б \TEX/'е 8-ахрмше яхлбнкш ``юйрхбмшлх'', кхан гюцпсгхрэ ьпхтрш, яндепфюыхе б яннрберярбсчыеи онгхжхх мсфмше яоежхюкэмше яхлбнкш. (Дкъ хдемрхтхйюрнпнб хяонкэгсеряъ ьпхтр, бшахпюелши йнлюмдни \TEX/'ю \.{\\it}.) Хыхре яоежхюкэмше люйпноюйерш, мюохяюммше дкъ хяонкэгнбюмхъ б \.{CWEB} бюьецн ъгшйю кхан, еякх ме анхреяэ рпсдмняреи, мюохьхре ябни янаярбеммши. \subsec Якедсчыхе бняелэ сопюбкъчыху яхлбнкнб (ю хлеммн, `\.{@,}', `\.{@/}', `\.{@|}', `\.{@\#}', `\.{@+}', `\.{@;}', `\.{@[}', х `\.{@]}') ме бкхъчр мю цемепюжхч \CEE/-опнцпюллш \.{CTANGLE}, мн б мейнрнпшу менашвмшу яксвюъу лнцср онлнвэ сксвьхрэ вхрюелнярэ ее \TEX/-опедярюбкемхъ, онксвеммнцн \.{CWEAVE}. Бярнеммши юкцнпхрл тнплюрхпнбюмхъ беяэлю унпнь, йнцдю опхлемъеряъ й яхмрюйяхвеяйх опюбхкэмни опнцпюлле, мн ме лнфер свеярэ бяеу бнглнфмшу яхрсюжхи, онрнлс врн пюанрюер я тпюцлемрюлх рейярю, бйкчвючыхлх люйпняш х хлемю яейжхи; рюйхе тпюцлемрш ме бяецдю янакчдючр яхмрюйяхя. Меялнрпъ мю рн, врн \.{CWEB} онгбнкъер оепейпшбюрэ юбрнлюрхвеяйне тнплюрхпнбюмхе, ксвьеи ярпюрецхеи асдер мювюрэ я мецн, оняйнкэйс лнфер нйюгюрэяъ, врн онмюднаъряъ кхьэ меяйнкэйн лекйху йнппейрхб. \@, [MCc] Щрнр сопюбкъчыхи яхлбнк бярюбкъер рнмйхи опнаек (thin space) б бшбнд \.{CWEAVE}. Хмнцдю днонкмхрекэмши опнаек лнфер онмюднахрэяъ опх менашвмнл хяонкэгнбюмхх люйпнянб, мюопхлеп, йнцдю дбю хдемрхтхйюрнпю пюяонкнфемш пъднл. \@/ [MC] Щрнр сопюбкъчыхи яхлбнк бшгшбюер пюгпшб ярпнйх б \CEE/-опнцпюлле, нртнплюрхпнбюммни \.{CWEAVE}. Пюгпшбш ярпнй юбрнлюрхвеяйх бшахпючряъ \TEX/'нл он яуеле, пюанрючыеи йнппейрмн б 99\%\ яксвюеб, мн хмнцдю менаундхлн ъбмне сйюгюмхе, врнаш пюгахемхе яннрберярбнбюкн, онлхлн бмеьмеи опхбкейюрекэмнярх, кнцхйе опнцпюллш. Мюопхлеп, хяонкэгсире `\.{@/@,}' оепед йнллемрюпхълх, врнаш нмх мювхмюкхяэ я мнбни ярпнйх. \@| [MC] Щрнр сопюбкъчыхи яхлбнк гюдюер менаъгюрекэмши пюгпшб ярпнйх оняпедх бшпюфемхъ. Мюопхлеп, еякх хлееряъ дкхммне бшпюфемхе б опюбни вюярх опхябюхбюмхъ, я онлныэч `\.{@|}' лнфмн сйюгюрэ б мел бнглнфмше рнвйх пюгпшбю, йнрнпше асдср ксвье ондвепйхбюрэ кнцхйс опнцпюллш, мефекх бшапюммше \TEX/'нл юбрнлюрхвеяйх. \@\# [MC] Щрнр сопюбкъчыхи яхлбнк бшгшбюер пюгпшб ярпнйх онднамн \.{@/}, ю рюйфе бярюбкъер меанкэьни днонкмхрекэмши опнаек б рнвйс пюгпшбю. Нм лнфер хяонкэгнбюрэяъ, мюопхлеп, лефдс кнцхвеяйх пюгкхвмшлх цпсооюлх люйпнянб, пюглеыеммшлх б ндмни яейжхх. \.{CWEB} юбрнлюрхвеяйх бярюбкъер рюйни днонкмхрекэмши опнаек лефдс тсмйжхълх, бмеьмхлх на╝ъбкемхълх х тсмйжхълх, ю рюйфе лефдс на╝ъбкемхълх х ноепюрнпюлх б реке тсмйжхх. \@+ [MC] Щрнр сопюбкъчыхи яхлбнк люяйхпсер пюгпшб ярпнйх, йнрнпши днкфем ашрэ ядекюм \.{CWEAVE}, мюопхлеп, оепед `\&{else}', еякх бш унрхре пюглеярхрэ йнпнрйсч if--else йнмярпсйжхч мю ндмни ярпнйе. Еякх сйюгюрэ `\.{\{@+}' б мювюке янярюбмнцн ноепюрнпю, ъбкъчыецняъ рекнл тсмйжхх, рн оепбне на╝ъбкемхе хкх ноепюрнп тсмйжхх асдср пюяонкнфемш мю рни фе ярпнйе, врн х нрйпшбючыюъ яйнайю, х я нрярсонл, йнрнпши асдер опедьеярбнбюрэ брнпнлс ноепюрнпс хкх на╝ъбкемхч мю якедсчыеи ярпнйе. \@; [MC] Щрнр сопюбкъчыхи яхлбнк опх тнплюрхпнбюмхх юмюкнцхвем рнвйе я гюоърни, мн мебхдхл. Бш лнфере бняонкэгнбюрэяъ мхл, мюопхлеп, оняке хлемх яейжхх хкх люйпняю, йнцдю \CEE/-йнд, опедярюбкеммши б щрни яейжхх хкх люйпняе, еярэ янярюбмни ноепюрнп кхан нйюмвхбюеряъ рнвйни я гюоърни. Опхлепнл рюйни йнмярпсйжхх ъбкъеряъ $$\lpile{\.{if (condition) macro @;}\cr \.{else break;}\cr}$$ цде нопедекемхел \\{macro} яксфхр янярюбмни ноепюрнп (гюйкчвеммши б тхцспмше яйнайх). Щрн унпньн хгбеярмши меднярюрнй яхмрюйяхяю \CEE/. \@{[} [MC] Ял. \.{@]}. \@] [MC] Онлеярхре йбюдпюрмше яйнайх \.{@[...@]} бнйпсц рейярю опнцпюллш, йнрнпши днкфем ашрэ нртнплюрхпнбюм \.{CWEAVE} йюй бшпюфемхе, еякх щрнцн ме опнхгнькн. (Рюйне хмнцдю яксвюеряъ я менашвмшлх юпцслемрюлх люйпнянб.) Рюйфе бярюбкъире `\.{@[@]}' лефдс хлемел рхою х кебни яйнайни, йнцдю на╝ъбкъере сйюгюрекэ мю тсмйжхч, бпнде, $$\.{int @[@] (*f)();}$$ б опнрхбмнл яксвюе \.{CWEAVE} яосрюер оепбсч вюярэ щрнцн нопедекемхъ я бшпюфемхел \CPLUSPLUS/ `\&{int}($*f$)'. \subsec Нярюкэмше сопюбкъчыхе яхлбнкш \.{CWEB} псйнбндър ббнднл дюммшу. \@{x @y @z}[\\{change\_file}] \.{CWEAVE} х \.{CTANGLE} опедмюгмювемш дкъ пюанрш я дбслъ бундмшлх тюикюлх, мюгшбюелшлх \\{web\_file} х тюик хглемемхи \\{change\_file}, цде \\{change\_file} яндепфхр дюммше, гюлеыючыхе нрдекэмше вюярх \\{web\_file}. Пегскэрхпсчыхи рейяр х еярэ рнр яюлши тюик \.{CWEB}, йнрнпши сонлхмюеряъ онбяелеярмн б щрнл псйнбндярбе. \more Йюй щрн пюанрюер: тюик хглемемхи яндепфхр мскэ х анкее ``йнппейрхб'', цде йнппейрхбю хлеер бхд `\.{@x}$\langle$ярюпше ярпнйх$\rangle$\.{@y}$\langle$% мнбше ярпнйх$\rangle$\.{@z}'. Яоежхюкэмше сопюбкъчыхе яхлбнкш \.{@x}, \.{@y}, \.{@z}, дносярхлше рнкэйн б тюикюу хглемемхи, днкфмш онъбкърэяъ б мювюке ярпнйх, нярюрнй рюйни ярпнйх хцмнпхпсеряъ. Яндепфхлне $\langle$ярюпше ярпнйх$\rangle$ опедярюбкъер люрепхюк, йнрнпши рнвмн яннрберярбсер онякеднбюрекэмшл ярпнйюл \\{web\_file}; ю $\langle$мнбше ярпнйх$\rangle$ яндепфхр мскэ хкх анкее ярпнй, йнрнпшлх опедонкюцюеряъ гюлемхрэ ярюпше. Йюй рнкэйн оепбюъ ``ярюпюъ ярпнйю'' йнппейрхбш нйюгшбюеряъ янбоюдючыеи ян ярпнйни б~\\{web\_file}, бяе нярюкэмше ярпнйх щрни йнппейрхбш рюйфе днкфмш янбоюярэ. \more Лефдс йнппейрхбюлх, оепед оепбни йнппейрхбни х оняке онякедмеи йнппейрхбш тюик хглемемхи лнфер яндепфюрэ кчане йнкхвеярбн ярпнй, ме мювхмючыхуяъ `\.{@x}', `\.{@y}', кхан~`\.{@z}'. Рюйхе ярпнйх опносяйючряъ х ме хяонкэгсчряъ б янонярюбкемхх. \more Рюйюъ бнглнфмнярэ онкегмю, йнцдю пюанрюеьэ я нпхцхмюкэмшл \.{CWEB}-тюикнл, онксвеммшл нрйсдю-кхан (мюопхлеп, \.{tangle.w} х \.{weave.w} кхан \.{tex.web}), йнрнпши менаундхлн хглемхрэ дкъ юдюорюжхх опнцпюллш й нянаеммняръл бюьеи яхярелш. Бш лнфере нркюфхбюрэ ябнх яхярелмн-гюбхяхлше хглемемхъ, ме хяопюбкъъ нямнбмнцн тюикю; х йюй рнкэйн нмх гюпюанрючр, ху лнфмн асдер кецйн бйкчвюрэ б мнбше бепяхх нямнбмнцн тюикю, йнрнпше асдср онъбкърэяъ бпелъ нр бпелемх. \@i [\\{web\_file}] Б ябнч нвепедэ, \\{web\_file} яюл он яеае лнфер ашрэ йнлахмюжхеи меяйнкэйху тюикнб. Йнцдю \.{CWEAVE} кхан \.{CTANGLE}, явхршбюъ тюик, намюпсфхбючр сопюбкъчыхи яхлбнк \.{@i} б мювюке ярпнйх, нмх опепшбючр времхе х мювхмючр напюанрйс тюикю, хлъ йнрнпнцн якедсер гю \.{@i}, онднамн опеопнжеяянпс йнлохкърнпю \CEE/, напюаюршбючыелс дхпейрхбс \.{\#include}. Оняке гюбепьемхъ времхъ бйкчвюелнцн тюикю опнцпюллю оепеундхр й якедсчыеи ярпнйе хяундмнцн тюикю. Хлъ тюикю, якедсчыее гю \.{@i}, лнфер нйпсфюрэяъ яхлбнкюлх \.", мн щрн менаъгюрекэмн. Бйкчвемхе лнфер ашрэ бкнфеммшл. \more Тюикш хглемемхи лнцср хлерэ ярпнйх, мювхмючыхеяъ \.{@i}. Рюйхл яонянанл бш лнфере ондлемърэ ндхм бйкчвюелши тюик дпсцхл. Йнмжеорсюкэмн, нохяюммши бшье леуюмхгл ондярюмнбйх деиярбсер оепбшл, ю гюрел б ецн бшбнде напюаюршбючряъ дхпейрхбш \.{@i}. Еякх \.{@i} \.{foo} онъбхряъ лефдс \.{@y} х \.{@z} б тюике хглемемхи, нрдекэмше ярпнйх тюикю \.{foo} х тюикш, йнрнпше нм бйкчвюер, ме хглемъчряъ; лндхтхйюжхх лнцср ашрэ бмеяемш б ярпнйх, йнрпше бйкчвюкхяэ ме хглемеммни дхпейрхбни input. \more Б яхяреле UNIX (х дпсцху, онддепфхбючыху оепелеммше нйпсфемхъ), еякх сярюмнбкемю оепелеммюъ \.{CWEBINPUTS}, кхан еякх ндмнхлеммне нопедекемхе ашкн гюдюмн опх йнлохкъжхх, \.{CWEB} асдер хяонкэгнбюрэ ее гмювемхе б йювеярбе хлемх йюрюкнцю, б йнрнпнл асдер опнхяундхрэ онхяй бйкчвюелшу тюикнб, еякх нмх ме асдср мюидемш б рейсыел йюрюкнце. \section Днонкмхрекэмше бнглнфмнярх х опеднярепефемхъ. 1. Б мейнрнпшу пеюкхгюжхъу \.{CWEB}, йнрнпше {\def\\#1#2{`{\tentex\char'#1#2}'}% дносяйючр хяонкэгнбюмхе пюяьхпеммнцн яхлбнкэмнцн мюанпю, яхлбнкш \\13, \\01, \\31, \\32, \\34, \\35, \\36, \\37, \\04, \\20 х~\\21} лнцср опхлемърэяъ йюй янйпюыемхъ дкъ `\.{++}', `\.{--}', `\.{->}', `\.{!=}', `\.{<=}', `\.{>=}', `\.{==}', `\.{\v\v}', `\.{\&\&}', `\.{<<}' х~`\.{>>}' яннрберярбеммн. 2. Еякх бюью яхярелю хлеер пюяьхпеммши мюанп яхлбнкнб, нм лнфер ашрэ хяонкэгнбюм я лхмхлюкэмшлх нцпюмхвемхълх, йюй щрн нохяюмн бшье опх наясфдемхх \.{@l}. Мн бюл якедсер опхдепфхбюрэяъ ярюмдюпрмшу яхлбнкнб ASCII, еякх бш унрхре охяюрэ опнцпюллш, йнрнпше нйюфсряъ онкегмшлх х рел, йнлс рюйне пюяьхпемхе меднярсомн. 3. Днйслемр \TEX/, опнхгбедеммши \.{CWEAVE}, пюгахбюеряъ мю ярпнйх я люйяхлюкэмни дкхмни 80 яхлбнкнб. Йнцдю рейяр \TEX/ йнохпсеряъ, бняопнхгбндъряъ х ясыеярбсчыхе пюгпшбш ярпнй. Еякх бш ме декюере мхвецн якхьйнл ухрпнцн, \.{CWEAVE} пюяонгмюер, йнцдю йнллемрюпхи \TEX/'ю пюгахбюеряъ мю меяйнкэйн ярпнй, х днаюбхр `\.\%' б мювюкн йюфдни рюйни ярпнйх. 4. \CEE/-рейяр рпюмякхпсеряъ ``бняундъыеи'' (``bottom up'') опнжедспни, йнрнпюъ пюяонгмюер йюфдсч кейяелс йюй ``вюярэ певх'' (``part of speech'') х йнлахмхпсер щрх вюярх бн бяе а\'нкэьхе х а\'нкэьхе тпюгш, онйю щрн бнглнфмн, янцкюямн яоежхюкэмни цпюллюрхйе, нохяюммни б днйслемрюжхх й~\.{CWEAVE}. Кецйн онмърэ яуелс, опхлемъелсч й опняршл йнмярпсйжхъл, рюйхл йюй нрдекэмше хдемрхтхйюрнпш х йнпнрйхе бшпюфемхъ, опнярн хгсвхб меяйнкэйн опхлепнл бшбндю \.{CWEAVE}, мн наыхи леуюмхгл меяйнкэйн якнфмее, оняйнкэйс днкфем напюаюршбюрэ меврн анкэьее, вел опнярн \CEE/. Онлхлн щрнцн, бшбнд яндепфхр йнлюмдш, йнрнпше гюярюбкъчр \TEX/ декюрэ нрярсош х пюгпшбш ярпнй цде менаундхлн, яннрберярбеммн хяонкэгнбюммшл ьпхтрюл х пюглепс ярпюмхжш. Дкъ днярхфемхъ мюхксвьху пегскэрюрнб акюцнпюгслмн хгаецюрэ гюйкчвемхъ дкхммшу \CEE/-рейярнб б \pb, оняйнкэйс нрярсош х люпйепш йнмжю ярпнйх хцмнпхпсчряъ, йнцдю яндепфхлне \pb\ рпюмякхпсеряъ я \CEE/ б \TEX/. Ярпелхреяэ й опнярнре бшпюфемхи х ноепюрнпнб. Еякх дхпейрхбю опеопнжеяянпю гюйкчвемю б \pb, рн мювхмючыхи ее \.\# днкфем пюяонкюцюрэяъ б мювюке ярпнйх, хмюве \.{CWEAVE} ме мюоевюрюер ее опюбхкэмн. 5. Йнллемрюпхх б \pb-рейяре медносярхлш. Оняке `\.|', сйюгшбючыецн мю оепеунд нр рейярю \TEX/ й \CEE/, якедсчыхи `\.|', йнрнпши ме ъбкъеряъ вюярэч ярпнйх, сопюбкъчыецн рейярю кхан хлемх яейжхх, гюбепьюер \CEE/-рейяр. 6. Йнллемрюпхи днкфем хлерэ опюбхкэмне бкнфемхе тхцспмшу яйнанй, б опнрхбмнл яксвюе \.{CWEAVE} бшпюгхр ябне меднбнкэярбн, мн опх щрнл ядекюер оношрйс бняярюмнбхрэ аюкюмя яйнанй, рюй врн \TEX/'с ме опхдеряъ якхьйнл рпсдмн. 7. Еякх бн бпелъ нркюдйх опнцпюллш бнгмхйюер менаундхлнярэ носярхрэ мейнрнпсч вюярэ \CEE/-йндю, МЕ якедсер ошрюрэяъ опнярн ецн ``гюйнллемрхпнбюрэ''. Рюйхе йнллемрюпхх ме б дсуе \.{CWEB}; вхрюрекъл нмх онйюфсряъ онъямемхълх й нярюкэмшл хмярпсйжхъл. Йпнле рнцн, йнллемрюпхх днкфмш ашрэ йнппейрмш я рнвйх гпемхъ \TEX/'ю; якеднбюрекэмн, \.{CWEAVE} асдер б гюрпсдмемхх, еякх бш гюйкчвхре опедкнфемхъ \CEE/ б \.{/*...*/} блеярн \.{/*|...|*/}. Еякх вюярэ \CEE/-йндю днкфмю ашрэ ``гюйнллемрхпнбюмю'', бш лнфере нцпюмхвхрэ ее дхпейрхбюлх опеопнжеяянпю, онднамшлх \.{\#if 0==1} х \.{\#endif}. 8. Опх онлных \.{@f} бнглнфмн нопедекхрэ ндхм хдемрхтхйюрнп рюй, врнаш нм бек яеаъ онднамн дпсцнлс, х щрх нопедекемхъ тнплюрю опхлемъчряъ онякеднбюрекэмн. Бннаые цнбнпъ, дюммши хдемрхтхйюрнп хлеер едхмярбеммши тнплюр бшбндю мю опнръфемхх бяецн днйслемрю, х щрнр тнплюр хяонкэгсеряъ дюфе дн рнцн, йюй асдер нопедекем оняпедярбнл \.{@f}. Щрн на╝ъямъеряъ рел, врн \.{CWEAVE} пюанрюер б дбю опнундю; мю оепбнл опнунде напюаюршбючряъ дхпейрхбш \.{@f} х оепейпеярмше яяшкйх, ю мю брнпнл опнхгбндхряъ бшбнд. (Рел ме лемее, хдемрхтхйюрнпш, ббедеммше \.{typedef}, йнрнпшл меъбмн опхябюхбюеряъ тнплюр бшбндю фхпмшл ьпхтрнл, ме якедсчр щрнлс опюбхкс: нмх бшбндъряъ он-пюгмнлс дн х оняке яннрберярбсчыецн \.{typedef}. Щрн пюгнвюпнбшбюер, мн врн-кхан хяопюбхрэ гюрпсдмхрекэмн. Бш лнфере нанирх щрн нцпюмхвемхе, хяонкэгсъ \.{@s}, дн кхан оняке \.{typedef}.) 9. Хмнцдю фекюрекэмн бярюбхрэ б нртнплюрхпнбюммши \CEE/-йнд опнаек, нркхвмши нр опеднярюбкъелнцн `\.{@,}'. Дкъ щрнцн лнфмн бняонкэгнбюрэяъ \.{@t}; мюопхлеп, `\.{@t\\hskip 1in@>}' дюер опнаек дкхмни 1~дчил. Йпнле рнцн, `\.{@t\\4@>}' лнфер хяонкэгнбюрэяъ дкъ бнгбпюрю мю ндмс едхмхжс нрярсою, оняйнкэйс сопюбкъчыюъ онякеднбюрекэмнярэ \.{\\4} нопедекемю б \.{cwebmac} рюй, врнаш декюрэ рюйни бнгбпюр. (Нмю хяонкэгсеряъ, й опхлепс, б мювюке ярпнй, йнрнпше яндепфюр онлевеммше ноепюрнпш, рюй врн лерйю асдер мелмнцн ялеыемю бкебн.) Бш рюйфе лнфере хяонкэгнбюрэ `\.{@t\}\\3\{-5@>}' дкъ опхмсдхрекэмнцн пюгпшбю ярпнйх оняпедх бшпюфемхъ. 10. Йюфдши хдемрхтхйюрнп б \.{CWEB} хлеер ндхм ярхкэ тнплюрхпнбюмхъ. Онщрнлс бш ме днкфмш хяонкэгнбюрэ ндмн х рн фе хлъ дкъ ндмнбпелеммнцн нангмювемхъ, мюопхлеп, хлемх рхою х онкъ \.{struct}, меялнрпъ мю рн, врн \CEE/ онгбнкъер щрн. \section Гюосяй опнцпюлл. Йнлюмдмюъ ярпнйю \UNIX/ йюй дкъ \.{CTANGLE}, рюй х дкъ \.{CWEAVE} хлеер бхд $$\.{ctangle [options] web\_file[.w] [\{change\_file[.ch]|-\} [out\_file]]}$$ Еякх тюик хглемемхи носыем кхан гюдюм `\.-', нм онкюцюеряъ осяршл. Пюяьхпемхъ \.{.w} х \.{.ch} днаюбкъчряъ рнкэйн б рнл яксвюе, еякх гюдюммше хлемю тюикнб ме яндепфюр рнвей. Еякх тюик я рюйхл хлемел ме мюидем, асдер хяопнанбюмн пюяьхпемхе \.{.web}. Мюопхлеп, `\.{cweave} \.{cob}' оношрюеряъ опнвхрюрэ \.{cob.w}; еякх щрн ме сдюеряъ, асдер хяопнанбюмн \.{cob.web} оепед юбюпхимшл гюбепьемхел пюанрш. Еякх хлъ бшундмнцн тюикю ме гюдюмн, хлъ \CEE/-тюикю, цемепхпселнцн \.{CTANGLE}, онксвюеряъ днаюбкемхел пюяьхпемхъ \.{.c}; хлъ \TEX/-тюикю, опнхгбедеммнцн \.{CWEAVE}, онксвхр пюяьхпемхе \.{.tex}. Б хмдейямшу тюикюу, онпнфдюелшу \.{CWEAVE}, \.{.tex} гюлемъеряъ \.{.idx} х \.{.scn}. Опхбепфемжш кюйнмхвмнярх лнцср рюй мюярпнхрэ ябни йнлюмдмши хмрепоперюрнп, врн `\.{wv}' асдер нгмювюрэ `\.{cweave -bhp}'; щрн ондюбкъер беяэ бшбнд \.{CWEAVE} мю реплхмюк, гю хяйкчвемхел яннаыемхи на ньхайюу. Оюпюлерпш-ножхх мювхмючряъ кхан яхлбнкнл `\.-', гюопеыючыхл деиярбхе ножхх, кхан `\.+', йнрнпши ецн пюгпеьюер. Мюопхлеп, `\.{-fb}' гюопеыюер ножхх \.f х \.b; `\.{+s}' пюгпеьюер ножхч \.s. Ножхх лнцср гюдюбюрэяъ оепед хлемюлх тюикнб, оняке мху, кхан х рн, х дпсцне. Б мюярнъыхи лнлемр онддепфхбючряъ якедсчыхе ножхх: \yskip \def\option#1 {\textindent{\.#1}\hangindent2\parindent} \option b Бшбндхрэ яннаыемхе опх ярюпре. (Пюгпеьемн он слнквюмхч.) \option f Опхмсфдюер гюбепьюрэ йюфдши ноепюрнп \CEE/, нртнплюрхпнбюммши \.{CWEAVE}, люпйепнл йнмжю ярпнйх. (Пюгпеьемн он слнквюмхч; \.{-f} щйнмнлхр аслюцс, мн лмнцхе онкюцючр, врн рюйни ярхкэ тнплюрхпнбюмхъ опнцпюллш бшцкъдхр б \CEE/ "мееяреярбеммн".) (Ме бкхъер мю \.{CTANGLE}.) \option h Бшбнд яннаыемхъ н мнплюкэмнл гюбепьемхх опнцпюллш. (Пюгпеьем он слнквюмхч.) \option p Нрнапюфюрэ бн бпелъ пюанрш опнцпюллш яннаыемхъ н ее опнцпеяяе. (Пюгпеьемн он слнквюмхч.) \option s Бшдюер ярюрхярхйс хяонкэгнбюмхъ оюлърх он нйнмвюмхх пюанрш опнцпюллш. (Гюопеыемн он слнквюмхч.) Еякх бюьх \.{CWEB}-тюикш кхан яейжхх бекхйх, лнфер нйюгюрэяъ онкегмшл сбхдерэ, мюяйнкэйн бш акхгйх й хявепоюмхч пеяспянб \.{CTANGLE} х/хкх \.{CWEAVE}. \option x Бйкчвюрэ хмдейя х нцкюбкемхе б \TEX/-тюик, бшбндхлши \.{CWEAVE}. (Пюгпеьемн он слнквюмхч.) (Ме бкхъер мю \.{CTANGLE}.) \section Днонкмхрекэмше ябедемхъ н тнплюрхпнбюмхх. Бюл лнфер ме онмпюбхрэяъ, йюй \.{CWEAVE} напюаюршбюер мейнрнпше яхрсюжхх. Еякх с бюя мер дпсцнцн бшундю, бш лнфере мюярпнхрэ \.{CWEAVE} хглемъъ ецн цпюллюрхйс. Щрн рпеасер лндхтхйюжхх хяундмшу рейярнб, пюанрш, йнрнпюъ лнфер онйюгюрэяъ гюмхлюрекэмни. Рюакхжю цпюллюрхвеяйху опюбхк яндепфхряъ б хяундмшу рейярюу \.{CWEAVE}, х бш лнфере ядекюрэ нрдекэмсч йнохч щрни рюакхжш, яйнохпнбюб тюик~\.{prod.w}, мюидеммши б хяундмшу рейярюу \.{CWEB} х яйнлюмднбюб `\.{cweave}~\.{-x}~\.{prod}' х `\.{tex}~\.{prod}'. Бш лнфере рнвмн сгмюрэ, йюй \.{CWEAVE} пюгахпюер бюь \CEE/-йнд, еякх онлеярхре оепед мхл ярпнйс `\.{@ @c @2}'. (Сопюбкъчыхи йнд `\.{@2}' юйрхбхгхпсер ``якедъыхи'' (``peeping'') пефхл пюанрш, ю `\.{@0}' нрлемъер ецн.) Мюопхлеп, еякх опносярхрэ вепег \.{CWEAVE} тюик \medskip \begingroup \verbatim @ @c @2 main (argc,argv) char **argv; { for (;argc>0;argc--) printf("%s\n",argv[argc-1]); } !endgroup \endgroup \medskip\noindent мю щйпюм асдер бшбедемю якедсчыюъ рюпюаюпыхмю: \medskip \begingroup \verbatim [...] 4:*exp ( +exp+ )... 11:*exp +exp+ int... 5:*+exp+ int +unorbinop+... [...] 60: +fn_decl+*+{+ -stmt- +}- 55:*+fn_decl+ -stmt- 52:*+function- [...] !endgroup \endgroup \medskip Оепбюъ ярпнйю сйюгшбюер, врн ашкн опхлемемн опюбхкн мнлеп 4, х \.{CWEAVE} б мюярнъыхи лнлемр яндепфхр б ябнеи оюлърх онякеднбюрекэмнярэ тпюцлемрнб (chunk) рейярю б тнплюре \TEX/ (мюгшбюелшу ``бшпегйюлх'', ``scraps''), хлечыху яннрберярбеммн рхо \\{exp} (дкъ бшпюфемхи), нрйпшбючыюъ яйнайю, ямнбю \\{exp}, гюйпшбючыюъ яйнайю, х онякедсчыхе бшпегйх, йнрнпше ме ашкх еые явхрюмш яхмрюйяхвеяйхл юмюкхгюрнпнл. (Гмюйх \.+ х \.- сйюгшбючр, врн \TEX/ днкфем бнирх б люрелюрхвеяйсч лндс кхан бширх хг мее мю цпюмхже бшпегйх. Яхлбнк \.* нрлевюер рейсысч онгхжхч юмюкхгюрнпю.) Дюкее опхлемъеряъ опюбхкн 11, х онякеднбюрекэмнярэ $(\,exp\,)$ ябепршбюеряъ дн \\{exp} х рюй дюкее. Б йнмже йнмжнб беяэ \CEE/-рейяр нйюгшбюеряъ ндмни анкэьни бшпегйни рхою \\{function}. Хмнцдю бяе хдер ме рюй цкюдйн, х бш онксвюере цпсоос ярпнй, ябюкеммшу б ндмс йсвс. Щрн гмювхр, врн \.{CWEAVE} ме ялнц оепебюпхрэ врн-рн б бюьел \CEE/-йнде. Мюопхлеп, осярэ `\.{@}' гюилер леярн `\.{char **argv;}' б опнцпюлле, сонлъмсрни бшье. Б щрнл яксвюе \.{CWEAVE} асдер якецйю нгюдювем, оняйнкэйс явхрюер, врн хлемю яейжхи бяецн кхьэ рнкэйн \\{exp}. Онщрнлс \TEX/'с асдер опедохяюмн бшбеярх `\X2:Argument declarations\X' б рни фе яюлни ярпнйе, врн х `$\\{main}(\\{argc},\39\\{argv}{}$)'. Б щрнл яксвюе лнфмн онлнвэ \.{CWEAVE}, онлеыюъ `\.{@/}' оняке `\.{main(argc,argv)}'. \.{CWEAVE} юбрнлюрхвеяйх бярюбкъер меанкэьни опнлефсрнй лефдс нохяюмхълх х оепбшл ноепюрнпнл акнйю. Бнр ндхм яоняна кнйюкэмн ецн нрлемхрэ: $$\vbox{\halign{#\hfil\cr \.{int x;@+@t\}\\6\{@>}\cr \.{@@;@\#}\cr}}$$ `\.{@\#}' онлеярхр днонкмхрекэмши опнаек оняке `$\langle\,$Other locals$\,\rangle$'. \section Опхкнфемхъ. Йюй опхлеп пеюкэмни опнцпюллш, мюохяюммни б \.{CWEB}, Опхкнфемхе~A яндепфхр тпюцлемрш опнцпюлл, бундъыху б янярюб яюлни яхярелш \.{CWEB}. Ре хг вхрюрекеи, йрн рыюрекэмн хгсвюр кхярхмцх б щрнл опхкнфемхх, ялнцср цксанйн опнвсбярбнбюрэ нямнбмше хдех \.{CWEB}. Опхкнфемхе~B --- щрн тюик нопедекемхи, йнрнпше мюярпюхбючр \TEX/ мю пюанрс я бшбнднл \.{CWEAVE}, ю б Опхкнфемхх~C наясфдюеряъ, йюй хяонкэгнбюрэ мейнрнпше хг щрху люйпнянб дкъ хглемемхъ тнплюрю бшбндю. ``Онкмюъ'' бепяхъ щрнцн псйнбндярбю, йнрнпюъ лнфер ашрэ яцемепхпнбюмю хг хяундмшу рейярнб \.{CWEB} йнлюмдни \UNIX/ \.{make} \.{fullmanual}, яндепфхр рюйфе опхкнфемхъ D, E, х~F, опедярюбкъчыхе янани онкмше хяундмше рейярш \.{CTANGLE} х \.{CWEAVE}. \vfil\eject\titletrue \def\runninghead{Опхкнфемхе A --- тнплюр хяундмнцн тюикю {\tentt CWEB}} \section Опхкнфемхе~A: Тпюцлемрш опнцпюлл \.{CWEB}. Щрн опхкнфемхе яндепфхр вершпе кхярхмцю. Оепбши яндепфхр бундмше дюммше дкъ \.{CWEB}, он йнрнпшл цемепхпсчряъ яейжхх~12--15 тюикю~\.{common.w}, йнрнпши яндепфхр ондопнцпюллш, наыхе дкъ \.{CWEAVE} х~\.{CTANGLE}. Нрлерхл, врн мейнрнпше ярпнйх яндепфюр нрярсош, ондвепйхбючыхе ярпсйрспс опнцпюллш; нрярсош щрх хцмнпхпсчряъ йюй \.{CWEAVE}, рюй х \.{CTANGLE}, мн онкэгнбюрекх мюундър, врн тюикш \.{CWEB} цнпюгдн кецве бняопхмхлючряъ, еякх б мху хлечряъ рюйхе нрярсош. Брнпни х рперхи кхярхмцх яндепфюр яннрберярбсчыхе тпюцлемрш \CEE/-йндю, яцемепхпнбюммнцн \.{CTANGLE} х рейярю б тнплюре \TEX/, онксвеммнцн \.{CWEAVE} опх напюанрйе \.{common.w}. Вербепрши кхярхмц делнмярпхпсер, йюй асдер бшцкъдерэ щрнр бшундмни тюик мю аслюце. \vskip 6pt \begingroup \def\tt{\eighttt} \baselineskip9pt \verbatim @ Procedure |prime_the_change_buffer| sets |change_buffer| in preparation for the next matching operation. Since blank lines in the change file are not used for matching, we have |(change_limit==change_buffer && !!changing)| if and only if the change file is exhausted. This procedure is called only when |changing| is 1; hence error messages will be reported correctly. @c void prime_the_change_buffer() { change_limit=change_buffer; /* this value is used if the change file ends */ @; @; @; } @ While looking for a line that begins with \.{@@x} in the change file, we allow lines that begin with \.{@@}, as long as they don't begin with \.{@@y}, \.{@@z} or \.{@@i} (which would probably mean that the change file is fouled up). @= while(1) { change_line++; if (!!input_ln(change_file)) return; if (limit } } @ Here we are looking at lines following the \.{@@x}. @= do { change_line++; if (!!input_ln(change_file)) { err_print("!! Change file ended after @@x"); @.Change file ended...@> return; } } while (limit==buffer); @ @= { change_limit=change_buffer-buffer+limit; strncpy(change_buffer,buffer,limit-buffer+1); } !endgroup \endgroup \vfill\eject \def\runninghead{Опхкнфемхе A --- бшбнд {\tentt CTANGLE}} Гдеяэ опхбедемю онпжхъ \CEE/-йндю, яцемепхпнбюммнцн \.{CTANGLE}, йнрнпши яннрберярбсер хяундмнлс рейярс мю опедшдсыеи ярпюмхже. Напюрхре бмхлюмхе, врн яейжхх~13, 14 х~15 ашкх "бокеремш" б яейжхч~12. \vskip6pt \begingroup \def\tt{\eighttt} \baselineskip9pt \verbatim /*:9*//*12:*/ #line 247 "common.w" void prime_the_change_buffer() { change_limit= change_buffer; /*13:*/ #line 261 "common.w" while(1){ change_line++; if(!!input_ln(change_file))return; if(limit}', мюл онлеьюер яхлбнк `\.{\\}', х щрнр щкелемр хмдейяю ме онъбхряъ блеяре я дпсцхлх, мювхмючыхлхяъ мю T. Пеьемхел асдер хяонкэгнбюрэ йнмярпсйжхч `\.{@:}', нопедекхб люйпня, йнрнпши опнярн сдюкъер йкчв: $$\.{\\def\\9\#1\{\}}$$ Бш лнфере гюдюрэ, й опхлепс, `\.{@:TeX\}\{\\TeX@>}' б ябнел \.{CWEB}-тюике; \.{CWEAVE} онлеярхр щрн б хмдейя б юктюбхрмнл онпъдйе, яннрберярбеммн йкчвс, х яцемепхпсер люйпнбшгнб `\.{\\9\{TeX\}\{\\TeX\}}', йнрнпши цюпюмрхпсер, врн йкчв ме асдер мюоевюрюм. Юмюкнцхвмн б хлемю яейжхи лнфер онлеыюрэяъ яйпшрши люрепхюк, рюй врн нмх лнцср ашрэ янпрхпнбюмш б кчанл менаундхлнл онпъдйе. Мейнрнпше кчдх мюгшбючр онднамше рпчйх ``special refinements''; дпсцхе гнбср ху ``kludges''. \point 12. Йнлюмдмнлс якнбс \.{\\secno} опхябюхбюеряъ мнлеп рейсыеи напюаюршбюелни яейжхх. \point 13. Еякх бш унрхре бшбеярх мю оевюрэ рнкэйн яейжхх, йнрнпше ашкх хглемемш (я онлныэч тюикю йнппейрхб) х нцкюбкемхе, онлеярхре йнлюмдс `\.{\\let\\maybe=\\iffalse}' б опеюласкс, оепед оепбни яейжхеи тюикю \.{CWEB}. Наыеопхмърни опюйрхйни ъбкъеряъ ядекюрэ ее оепбни йнппейрхбни. \point 14. Дкъ оевюрх мю дпсцху ъгшйюу (ме он-юмцкхияйх), оепенопедекхре люйпняш \.{\\A}, \.{\\ET}, \.{\\Q}, \.{\\U}, \.{\\ch}, \.{\\fin}, \.{\\con}, \.{\\today}, \.{\\datethis}, х \.{\\datecontentspage}. Янаярбеммн \.{CWEAVE} хглемърэ ме рпеасеряъ. \point 15. Бшбнд нрдекэмшу вюяреи днйслемрю лнфер ашрэ хгахпюрекэмн гюопеыем я онлныэч \.{\\noatl}, \.{\\noinx}, \.{\\nosecs}, \.{\\nocon}. \point 16. Бяе дхюйпхрхвеяйхе гмюйх х дпсцхе яоежхюкэмше рейярнбше яхлбнкш тнплюрю plain \TEX/ асдср пюанрюрэ б днйслемрюу \.{CWEB} б рнвмнярх рюй, йюй щрн нохяюмн б цкюбе~9 {\sl The \TEX/book}, я ндмхл хяйкчвемхел. Юйжемр "рнвйю" (нашвмн \.{\\.}) днкфем ббндхрэяъ йюй \.{\\:}. \point 17. "Гюйнллемрхпнбюммше" ярпнйх \.{cwebmac.tex} опедкюцючр мейнрнпше днонкмхрекэмше бнглнфмнярх, йнрнпше лнцср опхцндхрэяъ онкэгнбюрекъл. Мюопхлеп, ндмю хг мху бярюбкъер осярсч ярпюмхжс, еякх с бюя дсокейямши опхмреп. Опхкнфемхъ D, E, х F б онкмни бепяхх щрнцн псйнбндярбю мюоевюрюмш я хяонкэгнбюмхел гюйнллемрхпнбюммни ножхх, йнрнпюъ гюлемъер `$\gets$' мю `$=$' б кхярхмцюу опнцпюлл. Бш лнфере опнялнрперэ щрх опхкнфемхъ, врнаш пеьхрэ, йюйни тнплюр бюл анкэье мпюбхряъ. \vfill\end