注釈付きでマークされた文字列の解析 #14

エラー処理規則の抜けについて簡単にチェックできる方法がある。
例えば、

test.l
%%
[a-z]+
[^a-z]*
$ flex test.l

$ 

だが、

%%
[a-z]+
[^a-z]*
.
$ flex test.l
test.l:4: warning, rule cannot be matched

のようにflexが警告を出す。
パターン[a-z]+[^a-z]*で全てを網羅しているので最後の.にマッチすることはないからである。

したがって、前回のソースにおいても正当なパターンとエラー処理のパターンで全てを網羅していれば、
規則部の最後にパターン.の規則を追加することでflexは警告を出すはずである。

$ diff parser.l parser-test.l
54a55,56
>
> .

$ flex parser-test.l
parser-test.l:56: warning, rule cannot be matched

抜けは無いようである。