flexへの入力であるtest.lを作成しました。これは、main関数で終了します。
main関数が次のように実装されている場合:
int
main(void)
{
yylex();
return 0;
}
問題はありません。
パーサーをだまして、最初の文字が常にセミコロンであると信じ込ませたいので、mainを次のように実装しました。
int
main(void)
{
unput(';');
yylex();
return 0;
}
上記はセグメンテーション違反につながります。
unputを使用すると、セグメンテーション違反が発生するのはなぜですか?