CWEB で Hello World!

まだよくわかっていませんが、書いてみました。@ から文書が、@c から C ソースが始まるみたいです。
次のようなファイル hello.w を作って

\title

\today
@
下のプログラムは Hello World! と出力する C のプログラムです。文章部分は \TeX ソースになります。
@c
#include<stdio.h>

int hello(int n);
int main()
{
    int i;
    for(i=0; i<13; i++){
        putchar(hello(i));
    }
    return 0;
}
@
関数 hello は多項式です。
@c
int hello(int x)
{
    return 72.5+x*(-9200.61+x*(26708.045+x*(-31597.5477
            +x*(20568.80634+x*(-8304.382394+x*(2207.1149681
             +x*(-397.42396040+x*(48.819735105+x*(-4.0319465112
              +x*(0.214199620628+x*(-0.0066129424202
               +x*9.016462575490e-5)))))))))));
}

次のようにコマンドを打つと

ctangle hello.w

hello.c が作られ、

/*1:*/
#line 6 "./hello.w"

#include<stdio.h> 

int hello(int n);
int main()
{
int i;
for(i= 0;i<13;i++){
putchar(hello(i));
}
return 0;
}
/*:1*//*2:*/
#line 20 "./hello.w"

int hello(int x)
{
return 72.5+x*(-9200.61+x*(26708.045+x*(-31597.5477
+x*(20568.80634+x*(-8304.382394+x*(2207.1149681
+x*(-397.42396040+x*(48.819735105+x*(-4.0319465112
+x*(0.214199620628+x*(-0.0066129424202
+x*9.016462575490e-5)))))))))));
}/*:2*/

次のようにコマンドを打つと

cweave hello.w

TeX ファイルが作られます。plain TeX(日本語を使っているので、この場合は pTeX)です。

\input cwebmac
\title

\today

\M{1}
下のプログラムは Hello World! と出力する C のプログラムです。文章部分は \TeX
ソースになります。
\Y\B\8\#\&{include} \.{<stdio.h>}\6
\&{int} \\{hello}(\&{int} \|n);\7
\&{int} \\{main}(\,)\1\1\2\2\6
${}\{{}$\1\6
\&{int} \|i;\7
\&{for} ${}(\|i\K\T{0};{}$ ${}\|i<\T{13};{}$ ${}\|i\PP){}$\5
${}\{{}$\1\6
\\{putchar}(\\{hello}(\|i));\6
\4${}\}{}$\2\6
\&{return} \T{0};\6
\4${}\}{}$\2\par
\fi

\M{2}
関数 hello は多項式です。
\Y\B\&{int} \\{hello}(\&{int} \|x)\1\1\2\2\6
${}\{{}$\1\6
\&{return} \T{72.5}${}+\|x*({-}\T{9200.61}+\|x*(\T{26708.045}+\|x*({-}%
\T{31597.5477}+\|x*(\T{20568.80634}+\|x*({-}\T{8304.382394}+\|x*(%
\T{2207.1149681}+\|x*({-}\T{397.42396040}+\|x*(\T{48.819735105}+\|x*({-}%
\T{4.0319465112}+\|x*(\T{0.214199620628}+\|x*({-}\T{0.0066129424202}+\|x*%
\T{9.016462575490\_-5})))))))))));{}$\6
\4${}\}{}$\2\par
\fi

\inx
\fin
\end

pTeX で処理して gif に変換した結果が次の図です。 変数の索引が作られるみたいです。