例えばifが構文のキーワードならif + 1のような並びは構文エラーとなるべきですが、
こういうのはyaccを使った場合も含めてエラーとなることは予測できたとしても
実際にエラーになることの検証まではされていないのが現状だと思います。
これは言語処理系に限った話ではないですが、予測の付かないユーザーの
ランダムな入力に対し、はたして適切な処理をしているのかどうか?を検証する
確立された方法はあるのでしょうか?

test_if_branch() {
int x;

x = 0;
if (x) x = 2;
test_assert(x==0);

x = 1;
if (x) x = 2;
test_assert(x==2);

x = 0;
if (x) x = 2;
else x = 3;
test_assert(x==3);

x = 1;
if (x) x = 2;
else x = 3;
test_assert(x==2);

}
こんなものを延々と記述していくしかないのでしょうか。