我有这个语法,我的教授给了我。它被设置为识别由有限状态自动机定义的字符串。它应该被转换为识别输入的最长有效前缀。
//This would output valid if the whole string is valid not the longest
read input;
state = init;
while not end of input
{
state = move(state,symbol);
readnextInput();
}
if state is in (F):Final States print (valid);
else print(invalid);
我尝试将“& state is in (F)
”添加到while条件中。但这将识别最短的有效前缀。
这可能是什么问题?我应该定义一个堆栈并在每个字符串到达最终状态时将其推出并将最后一个字符串作为解决方案弹出来吗?