Parsing 你能修改这个BNF语法,使它总是包含奇数只狗吗?
你能修改这个BNF语法,使它总是包含奇数只狗吗Parsing 你能修改这个BNF语法,使它总是包含奇数只狗吗?,parsing,syntax,bnf,Parsing,Syntax,Bnf,你能修改这个BNF语法,使它总是包含奇数只狗吗 <pets> ::= <pets> <pet> | <pet> <pet> ::= dog | cat 不是“宠物”的例子: dog cat cat dog dog dog dog dog dog cat cat dog dog cat dog dog cat dog cat dog cat cat 您希望在概念上拥有一个状态机。你处于两种状
<pets> ::= <pets> <pet> | <pet>
<pet> ::= dog | cat
不是“宠物”的例子:
dog cat
cat dog
dog dog dog
dog dog cat cat dog
dog cat dog dog
cat
dog cat dog
cat cat
您希望在概念上拥有一个状态机。你处于两种状态中的一种:你见过奇数条狗,或者你见过偶数条狗 尝试:
//0只或更多猫
:=猫
//1只狗可能被猫包围
狗
::= |
::=
它可能需要一些清理,但它应该能工作。需要注意的关键是,
// 0 or more cats
<cats> ::= cat <cats> | ""
// 1 dog possibly surrounded by cats
<one_dog> ::= <cats> dog <cats>
<even_dogs> ::= <one_dog> <one_dog> <even_dogs> | <cats>
<odd_dogs> ::= <even_dogs> <one_dog>