この古いチュートリアルに従って、レモンパーサーにEOL
トークンの解析を自動的に終了させようとしています。パーサーの関連部分は次のようになります。
start ::= in .
in ::= .
in ::= in commandList EOL .
{
printf("start ::= commandList .\n");
printf("> ");
}
Flex によってスキャンされたトークンを使用してパーサーを実行する方法は次のとおりです。
int lexCode;
do {
lexCode = yylex(scanner);
Parse(shellParser, lexCode, yyget_text(scanner));
// XXX This line should not be necessary; EOL should automatically
// terminate parsing. :-(
if (lexCode == EOL) Parse(shellParser, 0, NULL);
} while (lexCode > 0);
EOL
ここでトークンをチェックする必要をなくし、いつ完了したかをパーサーに判断させたいと思います。それ、どうやったら出来るの?
ありがとう!