[英]Removing ambiguity from grammar
语法不明确:
E->紫外线| EBE | V | [E]
V-> a | b
U-> <| >
B->吗? | ! | @
一些信息:
优先顺序: ? <! <@,一元运算符(<,>)最高
二进制运算符?,!,@是右关联的。
我的尝试:
E->紫外线| EBT | V | [E]
T-> E
V-> a | b
U-> <| >
B->吗? | B1
B1->! | B2
B2-> @
我不确定在转换过程中是否遗漏了一些极端情况。 如果你们能指出一些错误并提供一些提示,我们将不胜感激。
E -> UV | EBE | V | [E] V -> a | b U -> < | > B -> ? | ! | @
优先顺序: ? <! <@,一元运算符(<,>)最高。
二进制运算符?,!,@是右关联的。
我对您的优先顺序感到困惑,因为这意味着!
的优先级高于>
。
因此,假设此优先顺序为:
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
但是,在不知道您的目标字符串和接受/不接受的情况下很难知道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.