[1514] Re:lexicalanalyzer.c について
投稿者:(ぱ)こと管理人
2010/03/14 21:49:17
>となっています。'\0'に出会ったら BAD_TOKEN として処理するという意図だと思いますが、
>現状だと'\0'が現れた時点でwhileを抜けてしまうので、
>st_line_pos がインクリメントされないまま再び get_token() が呼ばれてしまい、
>実行時に無限ループに陥ります。
BAD_TOKENが返ってきているのにまたget_token()を呼ぶほうが変なんじゃ、と
思って本に掲載されているソースのテストドライバを確認したのですが、
END_OF_LINE_TOKENのチェックはしていてもBAD_TOKENのチェックをしていないので、
たとえば改行で終わらないファイルをリダイレクトで食わせたときに、
確かに無限ループになりますね。
電卓のパーサと組み合わせる限りではそんなにおかしなことにはならないような
気もします。
バグかというと微妙ではないかと思いますが、補足を入れておきます。
># ただいま「プログラミング言語を作る」を骨の髄までしゃぶる勢いで読んでます。
># 面白すぎて睡眠不足(笑)。
ありがとうございます。また何かあればご指摘ください。