注釈付きでマークされた文字列の解析 #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
抜けは無いようである。