2015-02-11 85 views
0

所以我的目标是能够确定输入是否可以接受。以下是可以接受的输入:柔性/野牛不工作的语法规则

“U”, “d”, “L”, “R” 的任意组合中, “n”

**Example of valid inputs:** 
udlrn 
uuuuuuuuuuuu 
dunrldd 
dddddllll 
dldnrrrrrrrrrrr 

**Example of invalid inputs:** 
abc 
abcudlr 
xudz 
dclrxy 

这是我的Flex代码

%% 
"u" return UP; 
"d" return DOWN; 
"l" return LEFT; 
"r" return RIGHT; 
"n" return NONE; 
\n return END; 
%% 

这里是我的野牛代码

然而,当我提供的输入,如:

  • ldruabc

我得到即使这个输入无效解析完整的消息。

回答

3

任何与您flex代码中的任何模式都不匹配的东西都会回显到stdout并被忽略,因此按照当前的构造,任何由单一行组成的输入都是可接受的。

你或许应该将其他Flex规则之后添加一个包罗万象的规则:

. return *yytext; 

这种方式,在输入任何其它字符将被返回给解析器它会触发一个语法错误。