繁体   English   中英

LL1布尔运算符Grammar实现Recursive的解析器

[英]LL1 boolean operator Grammar to implement Recursive decent parser

这是来自原始语法的小块,我必须实现递归的正确解析器。 我们必须从中删除歧义,左递归等,以便我们可以实现其解析器。 我已完成其他位,但无法弄清楚如何处理not运算符(〜)。

有效的表达式可能是。 1&〜1,(1&~1)等

我有处理大括号,以及&和或符号但不能处理〜符号。

这是原始语法。

A -> A & A 
A -> ~A
A -> (A)
A -> 0 | 1

我无法弄清楚如何处理

这是我的解决方案:

one -> two one'
one' -> ~one|^
two -> three two'
two' -> & three two'|^
three -> four three'
three' -> || four three' | ^
four -> (one) |0 |1 

当我实现它时,一切都适用于括号,或者操作符。 但否定〜没有奏效。 所以我认为语法没有正确转换为LL(1)

最后,我花了很多时间自己解决了这个问题。 这是解决方案。

布尔值not或(〜)运算符的优先级高于上述语法中的任何其他运算符。 在上面的解决方案中,我的优先级更低。 这是正确的解决方案。

图像显示解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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