簡體   English   中英

為什么右遞歸語法不適用於自底向上LR(k)解析?

[英]Why right-recursive grammar is not appropriate for Bottom-Up LR(k) parsing?

  • 為什么右遞歸語法不適用於自底向上LR(k)解析?

我知道自下而上的解析從葉子開始並建立到根節點,而自上而下的解析從根開始並使其向下,對這些問題進行了一些研究並獲得了如何修改但無法得到的結果。為什么這不起作用的直接答案。 任何幫助表示贊賞。

[OP將問題標題從“為什么不能使用 ...”更改為“為什么不合適...”,這反過來又將我的評論更改為答案,因此我將其發布為一個。

您可以將左或右遞歸規則與任何LR(k)解析算法一起使用。

如果要構建樹,則正確的遞歸規則會引起解析過程的一個有趣的屬性:您必須保持與正確的遞歸一樣深的堆棧來跟蹤收集的節點。

人們會給您源文件列表中包含一百萬個項目,因此您的堆棧必須那么深。 使用正確的遞歸規則,此深度可能足夠深,如果堆棧大小固定,則空間不足。

通常使用處理器的自然下推堆棧來實現解析器堆棧。 我們的通用操作系統(Windows,Linux)及其通用編譯器恰好為您提供了這種固定大小的下推堆棧,因此從某種意義上講,它們加劇了這個問題。

使用左遞歸規則,您可以在每個列表項之后進行遞減,因此堆棧實質上可以是單位深度。 友好得多:不會崩潰,並且可以很好地使用緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM