TeX が keyword を順番にスキャンしている?

Re: TeX が keyword を順番にスキャンしている?

- ut の投稿
返信数: 0
ご回答をありがとうございます!
(早々にお返事くださいましたのに、応答迅速でなく申し訳ありません)

まず、\noexpand の動作を一言で説明するなら:

> \noexpand は次のトークンを読んで、入力に戻し、さらにそのト
> ークンがコントロールシーケンスだったら次にそのトークン読ま
> れるときに noexpand なトークンとして読まれるように細工する

と言えば良かったのですね。

それで:

> keyword のスキャン中に keyword にマッチしない展開できない
> トークンを見つけると、そのトークン(とそれまでにマッチした
> 文字トークン列)は入力に戻されますが

とのことですので、そもそもの話としてやはり、keyword が順番に
スキャンされているのですね。そして、スキャン中に遭遇したトー
クンは一旦呑み込まれた上で、マッチしないと戻されているわけで
すね。

引用元の文章でも、"scanning the to keyword"; "scanning the spread
keyword"; "15 in TeX"; "TeX scan eleven keywords" 等々とさらり
と書かれているのですけれど、そんな話初めて聞いたので、どこで
確認したらいいんだろう、と困惑しました。

> \foo の中身と \noexpand の数をいろいろ変えるとどの keyword
> が何番目にスキャンされているか推測できるかと。

(9) で \def\foo{pt} となっていて、(10) で \def\foo{sp} となっ
ていたので、最初にスキャンされるのが pt で、最後が sp なんだ
ろうな、とは推測していました(でも、em, ex, true のほうが先で
したか)

>(tex.web をもっとちゃんと読んで処理を追いかければ正解がわか
> るんでしょうけれど……)

うーん、最後はやはり tex.web を見なきゃいけないのですね。
(私には難し過ぎそうです)

いずれにしましても、今回もまた、大変丁寧にご説明をしてくださ
いまして、本当にありがとうございます。