簡體   English   中英

如何制作沒有左遞歸的上下文無關語法以包含左遞歸(不改變語法的語言)?

[英]how to make a context free grammar with no left recursion to include a left recursion (without changing the language of the grammar)?

假設我們有一個上下文無關語法,如果它在 LL[1] 中,那么它只有右聯想,但是假設我想讓這個上下文無關語法有一個左聯想,那么它不會留在 LL[1] . (沒關系)我認為為了使上下文無關語法具有左關聯,我應該使其具有左遞歸? 有沒有一種方法可以在不改變語法語言的情況下將左遞歸包含在上下文無關語法中:例如,如果我們有這個上下文無關語法:

1: S -> sum ( ELIST )
2: ELIST -> E , ELIST
3: ELIST -> E
4: E -> num
5: E -> id
6: E -> S

如何使其包含左遞歸,因此運算符“,”現在將保持關聯?

將您的第二個生產更改為:

2: ELIST -> ELIST, E

這不會改變語言,只會改變語言的解析方式。

此修改應適用於以級聯優先樣式編寫的任何表達式語法。 但它不是可以應用於任何語法的轉換。

暫無
暫無

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

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