繁体   English   中英

消除语法歧义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM