% 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 \.{<svk@lib.ru>}

\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. ߵ����� �� ������� Ϸ˺: ����� ھ��� \.{<svk@lib.ru>}

\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 the arrays@>}' ����� ���� �����ɵ�� �� `\.{@<Clear...@>}',
���� ������� ��ó�� ��� ���Ƹ� �� ��Ǹ������ � `\.{Clear}'. н�����ǽ�
����� �����̷����� �����ɵ��� `\.{@<Clear t...@>}' � �.�.

ؼ��� ���Ƹ� � ���Ǹ� ���ǰ�� ������ ��������� ��������̽�, ��
�����ǵ���� ���������µ�̽��µ� ������̽�� �������� (����²���� �������,
�������� °�û�Ƹ�, ���ư ������ �/��� ��������), ��¾�˵ ���������� ���
���� ������. � ��ǰ�� � ���Ƶ ����� ��� ������̽˵ ������� �ô��
�±��ȵ��. ⰺ,  `\.{@< Clear { }the arrays @>}' �ô�� ���²���²�����
����� � ����˴�ɵ� �������. ������̽˵ ������� ����� �����¾Ǹ� °���
�ô�� ��������������, �� �� ����� ���, °� �¾ `\.{@<Clear t ...@>}' ��
���²���²õ� `\.{@<Clear the arrays@>}'.

\section �¾ ������ \.{CTANGLE}.
ڰ� �˻� ������� ��ȵ, ���Ƹ� ��Ǹ������ `\.{@\ }' ���� `\.{@*}', ��
��ǵ�� --- � ¾�, ��� ��� ������� �� \TeX-ǰ���, �������¾ǽ�� �
\CEE/-ǰ�¸. �������¾ǽ�� ǰ��� ��Ǹ������ � ����˼ ��ϲ������ � µ��
���Ƹ� `\.{@d}' ���� `\.{@f}', � \CEE/-ǰ��� ��Ǹ������ ����˼ `\.{@c}'
��� `\.{@<section name@>=}'. � ��������� ���ǰ� ��� ������������� ������
\CEE/-���Ƹ�, ���� �� ���Ƹ� ��ǰ° `\.{@c}', ¾ ��� �ô�� {\sl
�������������}.

ھ����úƸ� `\.{@<section name@>}' ����� ��ϲ����� � µ�� \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)} \.{@<Empty} \.{the} \.{|buffer|} \.{array@>}} \cr
\hbox{\.{...} \.{using}  \.{the} \.{algorithm}
\.{in} \.{|@<Empty} \.{the} \.{|buffer|} \.{array@>|.}} }
$$
ߵ��˹ �� ��� ����� ���� ������ � \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}-İ��.) ޴�� �� ���������ǵ��� �¾� ���������¸
� ¾�, �¾��  ������� ��������ǽ˵ İ��� ��� ����������� ���û��.
��ó�� �������� �� �����̷������ ��ö��  ������Ƹ�
µ�¾�, �����������ϵ��� � ��ȵ� ����������. ������� ��ž��˵ µ����
���������, �� ��������ǽ˵ İ��� � µ�¾�˵ ���Ƶ���� ������½�,
�� ����� ����ȵ Ȱ���� ���������� �� ���������������.
�¼�¸�, �¾ ����������� ���Ƹ� ����� ���� �˲����� �
������̺� �����ǽ�� ��ž���� İ����, ������̺�
�� ����µ ÿ��Ͻ��� \.{@<foo@>} ��� � \.{@(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/, ����������˵ � \.{<ctype.h>},
������ ���°¾ǽ� ��� ���������� ���������¸ �� ��������� ��������.

\@\& [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/-����.  ݰ������, �����
`\.{@<Argument definitions@>}' ������ ���¾ `\.{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
\.{@<Other locals@>@;@\#}\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 */
  @<Skip over comment lines in the change file; |return| if end of file@>;
  @<Skip to the next nonblank line; |return| if end of file@>;
  @<Move |buffer| and |limit| to |change_buffer| and |change_limit|@>;
}

@ 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).

@<Skip over comment lines in the change file...@>=
while(1) {
  change_line++;
  if (!!input_ln(change_file)) return;
  if (limit<buffer+2) continue;
  if (buffer[0]!!='@@') continue;
  if (xisupper(buffer[1])) buffer[1]=tolower(buffer[1]);
  if (buffer[1]=='x') break;
  if (buffer[1]=='y' || buffer[1]=='z' || buffer[1]=='i') {
    loc=buffer+2;
    err_print("!! Missing @@x in change file");
@.Missing @@x...@>
  }
}

@ Here we are looking at lines following the \.{@@x}.

@<Skip to the next nonblank line...@>=
do {
  change_line++;
  if (!!input_ln(change_file)) {
    err_print("!! Change file ended after @@x");
@.Change file ended...@>
    return;
  }
} while (limit==buffer);

@ @<Move |buffer| and |limit| to |change_buffer| and |change_limit|@>=
{
  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<buffer+2)continue;
if(buffer[0]!!='@')continue;
if(xisupper(buffer[1]))buffer[1]= tolower(buffer[1]);
if(buffer[1]=='x')break;
if(buffer[1]=='y'||buffer[1]=='z'||buffer[1]=='i'){
loc= buffer+2;
err_print("!! Missing @x in change file");

}
}

/*:13*/
#line 252 "common.w"
;
/*14:*/
#line 278 "common.w"

do{
change_line++;
if(!!input_ln(change_file)){
err_print("!! Change file ended after @x");

return;
}
}while(limit==buffer);

/*:14*/
#line 253 "common.w"
;
/*15:*/
#line 288 "common.w"

{
change_limit= change_buffer-buffer+limit;
strncpy(change_buffer,buffer,limit-buffer+1);
}

/*:15*/
#line 254 "common.w"
;
}

/*:12*//*16:*/
!endgroup
\endgroup
\vfill\eject

\def\runninghead{���������� A --- �˲�� {\tentt CWEAVE}}

ι²���²��ɸ� ���˲�� \.{common.tex} �˳�ϴ�� °�:

\vskip6pt
\begingroup \def\tt{\eighttt} \baselineskip9pt
\verbatim
\M{12}Procedure \PB{\\{prime\_the\_change\_buffer}}
sets \PB{\\{change\_buffer}} in preparation for the next matching operation.
Since blank lines in the change file are not used for matching, we have
\PB{$(\\{change\_limit}\E\\{change\_buffer}\W\R\\{changing})$} if and only if
the change file is exhausted. This procedure is called only when
\PB{\\{changing}} is 1; hence error messages will be reported correctly.
!vskip-.5!baselineskip
\Y\B\&{void} \\{prime\_the\_change\_buffer}(\,)\1\1\2\2\6
${}\{{}$\1\6
${}\\{change\_limit}\K\\{change\_buffer}{}$;\C{ this value is used if the
change file ends }\6
\X13:Skip over comment lines in the change file; \PB{\&{return}} if end of file%
\X;\6
\X14:Skip to the next nonblank line; \PB{\&{return}} if end of file\X;\6
\X15:Move \PB{\\{buffer}} and \PB{\\{limit}} to \PB{\\{change\_buffer}} and %
\PB{\\{change\_limit}}\X;\6
\4${}\}{}$\2\par
\fi
!vskip-.5!baselineskip
\M{13}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).
!vskip-.5!baselineskip
\Y\B\4\X13:Skip over comment lines in the change file; \PB{\&{return}} if end
of file\X${}\E{}$\6
\&{while} (\T{1})\5
${}\{{}$\1\6
${}\\{change\_line}\PP;{}$\6
\&{if} ${}(\R\\{input\_ln}(\\{change\_file})){}$\1\5
\&{return};\2\6
\&{if} ${}(\\{limit}<\\{buffer}+\T{2}){}$\1\5
\&{continue};\2\6
\&{if} ${}(\\{buffer}[\T{0}]\I\.{'@'}){}$\1\5
\&{continue};\2\6
\&{if} (\\{xisupper}(\\{buffer}[\T{1}]))\1\5
${}\\{buffer}[\T{1}]\K\\{tolower}(\\{buffer}[\T{1}]);{}$\2\6
\&{if} ${}(\\{buffer}[\T{1}]\E\.{'x'}){}$\1\5
\&{break};\2\6
\&{if} ${}(\\{buffer}[\T{1}]\E\.{'y'}\V\\{buffer}[\T{1}]\E\.{'z'}\V\\{buffer}[%
\T{1}]\E\.{'i'}){}$\5
${}\{{}$\1\6
${}\\{loc}\K\\{buffer}+\T{2};{}$\6
\\{err\_print}(\.{"!!\ Missing\ @x\ in\ cha}\)\.{nge\ file"});\6
\4${}\}{}$\2\6
\4${}\}{}$\2\par
\U12.\fi
!vskip-.5!baselineskip
\M{14}Here we are looking at lines following the \.{@x}.
!vskip-.5!baselineskip
\Y\B\4\X14:Skip to the next nonblank line; \PB{\&{return}} if end of file\X${}%
\E{}$\6
\&{do}\5
${}\{{}$\1\6
${}\\{change\_line}\PP;{}$\6
\&{if} ${}(\R\\{input\_ln}(\\{change\_file})){}$\5
${}\{{}$\1\6
\\{err\_print}(\.{"!!\ Change\ file\ ended}\)\.{\ after\ @x"});\6
\&{return};\6
\4${}\}{}$\2\6
\4${}\}{}$\2\5
\&{while} ${}(\\{limit}\E\\{buffer}){}$;\par
\U12.\fi
!vskip-.5!baselineskip
\M{15}\B\X15:Move \PB{\\{buffer}} and \PB{\\{limit}} to \PB{\\{change\_buffer}}
and \PB{\\{change\_limit}}\X${}\E{}$\6
${}\{{}$\1\6
${}\\{change\_limit}\K\\{change\_buffer}-\\{buffer}+\\{limit};{}$\6
${}\\{strncpy}(\\{change\_buffer},\39\\{buffer},\39\\{limit}-\\{buffer}+%
\T{1});{}$\6
\4${}\}{}$\2\par
\Us12\ET16.\fi
!endgroup
\endgroup
\vfil\eject

\def\runninghead{���������� A --- ����ǰµ�̽˹ ���ü���}

� ��� °� �¾� �� ���˹ �������� �˳�ϴ�� ��� ��ǰ¸.

\M{12}Procedure \PB{\\{prime\_the\_change\_buffer}}
sets \PB{\\{change\_buffer}} in preparation for the next matching operation.
Since blank lines in the change file are not used for matching, we have
\PB{$(\\{change\_limit}\E\\{change\_buffer}\W\R\\{changing})$} if and only if
the change file is exhausted. This procedure is called only when
\PB{\\{changing}} is 1; hence error messages will be reported correctly.

\Y\B\&{void} \\{prime\_the\_change\_buffer}(\,)\1\1\2\2\6
${}\{{}$\1\6
${}\\{change\_limit}\K\\{change\_buffer}{}$;\C{ this value is used if the
change file ends }\6
\X13:Skip over comment lines in the change file; \PB{\&{return}} if end of file%
\X;\6
\X14:Skip to the next nonblank line; \PB{\&{return}} if end of file\X;\6
\X15:Move \PB{\\{buffer}} and \PB{\\{limit}} to \PB{\\{change\_buffer}} and %
\PB{\\{change\_limit}}\X;\6
\4${}\}{}$\2\par
\fi

\M{13}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).

\Y\B\4\X13:Skip over comment lines in the change file; \PB{\&{return}} if end
of file\X${}\E{}$\6
\&{while} (\T{1})\5
${}\{{}$\1\6
${}\\{change\_line}\PP;{}$\6
\&{if} ${}(\R\\{input\_ln}(\\{change\_file})){}$\1\5
\&{return};\2\6
\&{if} ${}(\\{limit}<\\{buffer}+\T{2}){}$\1\5
\&{continue};\2\6
\&{if} ${}(\\{buffer}[\T{0}]\I\.{'@'}){}$\1\5
\&{continue};\2\6
\&{if} (\\{xisupper}(\\{buffer}[\T{1}]))\1\5
${}\\{buffer}[\T{1}]\K\\{tolower}(\\{buffer}[\T{1}]);{}$\2\6
\&{if} ${}(\\{buffer}[\T{1}]\E\.{'x'}){}$\1\5
\&{break};\2\6
\&{if} ${}(\\{buffer}[\T{1}]\E\.{'y'}\V\\{buffer}[\T{1}]\E\.{'z'}\V\\{buffer}[%
\T{1}]\E\.{'i'}){}$\5
${}\{{}$\1\6
${}\\{loc}\K\\{buffer}+\T{2};{}$\6
\\{err\_print}(\.{"!\ Missing\ @x\ in\ cha}\)\.{nge\ file"});\6
\4${}\}{}$\2\6
\4${}\}{}$\2\par
\U12.\fi

\M{14}Here we are looking at lines following the \.{@x}.

\Y\B\4\X14:Skip to the next nonblank line; \PB{\&{return}} if end of file\X${}%
\E{}$\6
\&{do}\5
${}\{{}$\1\6
${}\\{change\_line}\PP;{}$\6
\&{if} ${}(\R\\{input\_ln}(\\{change\_file})){}$\5
${}\{{}$\1\6
\\{err\_print}(\.{"!\ Change\ file\ ended}\)\.{\ after\ @x"});\6
\&{return};\6
\4${}\}{}$\2\6
\4${}\}{}$\2\5
\&{while} ${}(\\{limit}\E\\{buffer}){}$;\par
\U12.\fi

\M{15}\B\X15:Move \PB{\\{buffer}} and \PB{\\{limit}} to \PB{\\{change\_buffer}}
and \PB{\\{change\_limit}}\X${}\E{}$\6
${}\{{}$\1\6
${}\\{change\_limit}\K\\{change\_buffer}-\\{buffer}+\\{limit};{}$\6
${}\\{strncpy}(\\{change\_buffer},\39\\{buffer},\39\\{limit}-\\{buffer}+%
\T{1});{}$\6
\4${}\}{}$\2\par
\Us12\ET16.\fi

\vfil\eject\titletrue
\rightskip=0pt % get out of C mode (cf. \B)
\sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50

\def\runninghead{���������� B --- ľ���¸���ɸ� �������}
\section ����������~B: İ�� \.{cwebmac.tex}.
�¾� İ�� ���ȸ�ϵ� ľ���� ``plain \TEX/'' ����������ϼ�, ����ž���˼�
��� ������º� �˲��� \.{CWEAVE}.

\vskip6pt
\begingroup \def\tt{\eighttt} \baselineskip9pt
\def\printmacs{\input cwebmac}
\verbatim
!printmacs
!endgroup
\endgroup
\vfill\eject

\def\runninghead{���������� C --- ����ǰ��� �� ľ���¸�������}
\section ����������~C: ڰ� ���̷������� ��������� \.{CWEB}.
ܰ��������������, �������ɸ��� � \.{cwebmac}, ������Ǹ���� ����ǵ���
�˲��� � �����ǽ�� ľ���µ ��� ������¸����� ���û�°° ������
\.{CWEAVE}, � Ƶ�� �¾�� ���������� --- ���������� ����¾�˵ ��
���������µ�.

\def\point#1.{\yskip\indent#1.\quad\ignorespaces}

\point 1. � ���������� � �°����½˼ ����°� ľ���° \.{PLAIN} ��������
ǵ���� �����: ����� ����¸ `\.{\{\\mc UNIX\}}' � ����Ǹ�� {\mc UNIX},
�˲������� �������˼� �ú���� �������� ������� (medium-size caps);
°��� ����� ������ `\.{\{\\sc STUFF\}}' ���
������ {\sc STUFF} ����¾� "���˵ �������˵" (small caps);
������ �¾�� ����� �˱���� ������ ò���ǵ����� �������
\.{\\titlefont} � \.{\\ttitlefont} ��� ���������� ���ü��°, ���
\.{\\ttitlefont} �������ϵ� ����� ¸�� "����ɰ� ��ȸ���".
ܰ�������������� \.{\\UNIX/} � \.{\\CEE/} ������ǰ�� \UNIX/ � \CEE/,
�������˵  �������� �������˼� �ú����.

\point 2. ھ��� � µ��µ \TEX/ ÿ��������� ����¸ĸ��¾�,  ���ǽ� �¾
�˳�ϴ�� ��� `\.{|identifier|}'. ݾ °��� �������� ������úƸ�
`\.{\\\\\{identifier\}}'. ൷û�°� �ô�� �˳�ϴ��� ���������,
�� �¾��� ������� �� ����ɰ�� \\{identifier} � ������, ������̺� ��
�ô�� �������˲����� \.{CWEAVE} ��� ������úƸ� \CEE/. ����� ¾��, ��
�¾��� ���ǰ� �������� �����¸�� `\.{\\}' ����� ����˼ ��������
���ǵ��������, �ž��ɸ� � ����¸ĸ��¾�.

\point 3. Ի� ����ǵ��� �¸�� "����ɰ� ��ȸ���", ����� `\.{CWEB}', �����
������̷������� �������� `\.{\\.}' (��������, `\.{\\.\{CWEB\}}').
װ����� ���ü��� �¾�� �������, ����õ� ��°���� `\.{\\}' �����
���������, ��¾�˵ ����Ǹ����� � �ý�µ `special string characters'
������� \.{CWEAVE}, �.�., ����� �������� `\.{\\}', ������ �������
� ��. ߾ϲ����� � µ��µ `\.{\\\ }' �������� � ��°��� �������
"�������� �������"; �¾�� ����Ǹ�� ��˺������˹ ������ ����� ���������
���������µ�̽��¸, �����̷ùµ `\.{\{\ \}}'. ���� ������ ���Ⱥ��
�������, ��� ����� ���� �����° �� ǰ�¸ � ������� `\.{\\)}'\,; ����
\TEX/ �ô�� �˽ö��� �������¸ ������, �� �� �������� �� �¾� �������,
�����̷�� `\.{\\}' ��� ������ ��������.

\point 4. ��� ��������� �����: \.{\\pagewidth}, \.{\\pageheight},
� \.{\\fullpageheight} ����� ���� �������������� � ���Ƹ�-������û�,
��Ǹ���ɵ� \.{CWEB}-İ��, ��� ������� �ö��� �������� ��������.
׽�ǵ��� �� ü��ǰ���
$$\lpile{\.{\\pagewidth=6.5in}\cr
  \.{\\pageheight=8.7in}\cr
  \.{\\fullpageheight=9in}\cr}$$
�����̷����� ��� �����¾��� �¾�� �ú�����²�; \.{\\fullpageheight}
����ǰ���� ��������� \.{\\pageheight} � �������� �������µ�̽��� ���������
� ������ ������� ������ ��������. ߾��� ��������� ž�� �� ������ �� �¸�
���������� ����õ� ���������� �˷���� \.{\\setpage}.

\point 5. ܰ���� \.{\\pageshift} �������ϵ� ����Ǹ��, �� ��¾���
������¾������ �������� (�.�., � ��ǵ½˼� ��������) �ô�� �������� ��
�½�ȵ��� � �����¾������ (ǵ½˵ ������). ط����� ��� ����Ǹ��, �����
����Ǹ�� ����¾������ �˲��, � ��¾��� ������ ������� �ô�� ������������� ��
���¸���������� �¾����� ���°.

\point 6. ᾴ������� \.{\\title} ��ǰ°���� ������ ������ ��������
���˼� �������˼� �ú����; �� ü��ǰ��� �¾ \.{\\jobname}.

\point 7. ޱ�ǽ� ������ ������Ƶ ������������� ����� 1. �¾�� ��ǰ�� ��
�������� 16, �����¸� ���������� �� ������Ƶ 15, �����̷ùµ
`\.{\\def\\contentspagenumber\{15\}}
\.{\\pageno=\\contentspagenumber} \.{\\advance\\pageno by 1}'.

\point 8. ھ������� ����� \.{\\iftitle} �ô�� ��������� �˲��
�����¸�û�, ���� ������ `\.{\\titletrue}'. ޱ�ǽ�� ���ǵ��� ---
\.{\\titlefalse}, �� �����ǵ���� ����������, °� �¾ �������� ����������
��� ������� �� �ü�������.

Ի� �������� ������¸ ���Ƶ��� ������Ƹ� ���������� ��ö�� ������ɸ�
�������: \.{\\topofcontents} �˷˲����� ���������²���� �����
�Ǹ�˲����� ��ľ���Ƹ� ����������, � \.{\\botofcontents} --- ����� �¾��.
⸿�ǽ�� �����������:
$$\lpile{\.{\\def\\topofcontents\{\\null\\vfill}\cr
  \.{ { }\\titlefalse \% include headline on the contents page}\cr
  \.{ { }\\def\\rheader\{\\mainfont The \{\\tt CWEAVE\}{ }processor\\hfil\}}\cr
  \.{ { }\\centerline\{\\titlefont The \{\\ttitlefont CWEAVE\}{ }processor\}}\cr
  \.{ { }\\vskip 15pt \\centerline\{(Version 3.0)\}{ }\\vfill\}}\cr}$$
ߵ������������ \.{\\rheader}, ϲ���ɵ��� �����¸�û�� ������¾������ �������,
�ô�� � �¾� ���ǰ� ���°¾ǽ�, �¾�� ������¸�� �ö��� ��ľ���Ƹ� � ���Ž��
ǰ�¸ �������� ����������.

\point 9. ԰��˵ ���������� �˲������ � İ��, ��¾�˹ �Ǹ�˲����� �����
������º� �������; ������ ��������� ���Ƹ� ���²���²õ� ���� ������.
䰹� \.{common.toc} ����� �˳�ϴ��� °�:
$$\lpile{\.{\\ZZ \{Introduction\}\{0\}\{1\}\{23\}}\cr
  \.{\\ZZ \{The character set\}\{2\}\{5\}\{24\}}\cr}$$
� �.�. ܰ���� \.{\\topofcontents} ����� ��������������
\.{\\ZZ}, °� �¾ ��ľ���Ƹ� ����� ���� �˲����� � �α�� �ö��� ľ���µ.

\point 10. ؽ���� �˲��� ����µ�̽� ���� ����ž���� ��������� �˲��
\.{CWEAVE} �� ���İ���, ��¾�˵ ����� �������˲����� ������̽�.
ݰ������, ���¸�� \TEX/'� �����Ȱ�� 500 �������, ǵ�� ������ ���°¾ǽ�
��� ��ǵ������ ���������µ� ������ ��ǰ°�ɸ� �������² �/��� ��������.
ھ��� �ǵ�� ����Ⱦ� ���ü��� �� �������� �� ����� ������ ǰ�¸,
����º� ������°�� ��� Ƶ����� ����� ���� ������� �� ��� �����²�����
�ȸ����, ����� ��¾��� �������� ��ǰ�� ��� ���ǰ��.

ݸ�� ������ ��������˹ ������ ��������� ��ž���� İ�� \.{CWEAVE} �� ��� ǰ�¸:
����� ǰ�¸ ���˲����� $\alpha$, $\beta$, � $\gamma$, ��� ������ ǰ���
��Ǹ������ ��������� ���Ƹ��.
��� ������� ������ ������������ � ������û� $\alpha$, � ����� �¸�
����������� \TEX/'� ������ ���� ����ɵ�� � ��ǰ�� $\beta$ � $\gamma$.
�¾�� �������˲��� ǰ�¸ ������̽�, �� ������ ������¸���� � ���� ��ɰ�:
������ ��ǰ�̽�� ������� $\beta$ � $\gamma$ ������ ���� �������¸������,
� ����˵ ���������� ���� ���� ǰ�µ� ������ ���� ����������.

䰹� \.{cwebmac} �������� ��� ��������� �����: \.{\\contentsfile} �
\.{\\readcontents}, ��¾�˵ �����ǰ�� �˿������� ����ž����� ����²��.  ݰ�
����õ��� ����Ǹ�� `\.{\\def\\contentsfile\{cont1\}}' � ������û� $\alpha$,
� `\.{\\def\\contentsfile\{cont2\}}' --- � ������û� $\beta$;
�¾ ���°��� \TEX/ �˲��¸ ����˵ ���������� $\alpha$ � $\beta$ �
İ��� \.{cont1.tex} � \.{cont2.tex}. ⵿��� � $\gamma$ �� ú��˲���
$$\.{\\def\\readcontents\{\\input cont1 \\input cont2
  \\input \\contentsfile\}}\,,$$
������� ��� ����˵ ����µ � �ö��� ���ϴ��.

⵼ �� �����, ��-�������� ������ ��ȵ��� ����õ� �������� �ü���Ƹ�
�������. ޴��� �� �� ��µ� �� ��ȵ��� �ô�� ����Ǹ�� � ������û� $\beta$
������ɵ�:
$$\lpile{\.{\\message\{Please type the last page number of part 1: \}}\cr
  \.{\\read -1 to \\temp \\pageno=\\temp \\advance\\pageno by 1}\cr}$$
԰��� ����ž����� ��ľ���Ƹ� ����¾ �������� �� ������� \TEX/'�;
�������ǽ�� ������úƸ� ����ɰ���� � ��ǰ�� $\gamma$.

�¾� ��¾�, ����������, ����� �����̷������� ��� ��������� ��ž�����
İ��� �� ��������̽�� Ǹ��� �������¾�.

\point 11. ���������  �ö�� ����ǰ�� � ������ ͻ������, �ľ������˵
����˼ �������. ݰ������, ��� ����� ������������ ����� ͻ�����
������� ��� `\TeX'. \.{CWEAVE} ������°��ϵ� ��� ������� ������� ������
ϲ�� ͻ����� ������� (������ ���� � ���ǵ��� ����):
`\.{@\^}' ���� ��������� �¸��, � `\.{@.}' --- �¸�� "����ɰ� ��ȸ���".
ݾ ���� �� ����°���� �˲��¸ `\TeX' � ��������� �¸��,
����� `\.{@\^\\TeX@>}', ��� ����Ȱ�� ������ `\.{\\}',
� �¾� ͻ����� ������� �� ��ϲ���� ����µ � ��ó���, ��Ǹ���ɸ����
�� 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
