次はトークンバッファに文字を追加するtokadd()を見る。}(parse.y)一行目で文字を追加。越えそうだったらREALLOC_N()する。calloc()と同じrealloc()だ。残りのインターフェイスはまとめてしまう。(tokidx>0?tokenbuf[tokidx-1]:0)(parse.y)問題ないだろう。yylex()yylex()はとても長い。現在1000行以上ある。switch文一つで占められており、文字ごとに分岐するようになっている。一部省略して全体構造を示す。}(parse.y)yylex()の返り値はゼロが「入力終わり」、非ゼロなら記号である。「c」などという非常に簡潔な変数が全体に渡って使われているので注意。スペースを読んだときのspace_seen++は後で役に立つ。読むほうはとても退屈だ。