模棱两可的语法:
E - >紫外线| EBE | V | [E]
V - > a | B'/ P>
U - > < | >
B - > ? | ! | @
一些信息:
优先顺序:? < ! < @,一元运算符(<,>)是最高的
二元运算符?,!,@是右关联的。
我的尝试:
E - >紫外线| EBT | V | [E]
T - > ë
V - > a | B'/ P>
U - > < | >
B - > ? | B1
B1 - > ! | B2
B2 - > @
我不确定在转换过程中是否遗漏了一些角落案件。感谢你们是否可以指出一些错误并提供一些提示。
答案 0 :(得分:0)
E -> UV | EBE | V | [E]
V -> a | b
U -> < | >
B -> ? | ! | @
优先顺序:? &LT; ! &LT; @,使用一元运算符(&lt;,&gt;) 最高。
二元运算符?,!,@是右关联的。
我对您的优先顺序感到困惑,因为它暗示!
的优先级高于>
。
所以假设这个优先顺序:
a,b,<,>,?,!,@
我要注意,明确的语法都是关于使用中间字符,通常比模糊语法更多,以确保有一个标准的步骤来达到某个终端符号,即每个字符串将具有相同的分析树。最高优先级意味着它是最接近最终非终端到终端符号转换的转换。
我的回答是:
E -> V?E | V!E | V@E | [E] //Right associativity = right recursive
V-> <V | >V | E | T | a | b
T-> a | b | E
然而,在不知道目标字符串并且接受/不接受的情况下很难知道。