0

模棱两可的语法:

E -> 紫外线 | EBE | 五 | [E]

V -> 一个 | b

U -> < | >

乙->?| !| @

一些信息:

优先顺序: ?< ! <@,一元运算符(<,>)是最高的

二元运算符 ?, !, @ 是右结合的。

我的尝试:

E -> 紫外线 | EBT | 五 | [E]

T -> E

V -> 一个 | b

U -> < | >

乙->?| B1

B1 -> !| B2

B2->@

我不确定在转换过程中是否遗漏了一些极端情况。感谢你们能指出一些错误并提供一些提示。

4

1 回答 1

0

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

但是,如果不知道您的目标字符串并接受/不接受,就很难知道。

于 2016-05-05T16:04:33.647 回答