簡體   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