當前位置:首頁 » 編程軟體 » 編譯原理項目集的沖突

編譯原理項目集的沖突

發布時間: 2023-02-13 12:59:52

編譯原理筆記17:自下而上語法分析(4)LR(0)、SLR(1) 分析表的構造

(移進項目就是指圓點右邊是終結符的項目,規約項目指的就是圓點在右部最右端的項目)

LR(0) 文法可以直接通過識別活前綴的 DFA 來構造 LR 分析表

假定 C = {I 0 , I 1 , ... , I n } (aka. LR(0) 項目規范族、DFA 狀態集)

首先為文法產生式進行編號,拓廣文法的產生式要標記為 0(這里就是後面分析表中 rj 的產生式編號 j 的由來)

然後令每個項目集 I k 的下標 k 作為分析器的狀態(行首),包含 S' → .S 的集合下標為分析器的初態(也就是 DFA 的初態,一般都是 0 )。

下面用一個例子來說明 ACTION、GOTO 子表的構造:

SLR(1) 為解決沖突提出了一個簡單的方法:通過識別活前綴的 DFA 和【簡單向前看一個終結符】構造 SLR(1) 分析表。

如果我們的識別活前綴的 DFA 中存在移進-規約沖突、規約-規約沖突,都可以嘗試使用這個方法來解決沖突。(這里說【嘗試】,當然是因為 SLR 也只能解決一部分問題,並不是萬能的靈丹妙葯。。)

這里,我們拿前面那個 LR(0) 解決不了的文法來舉例

該文法不是 LR(0) 文法,但是是 SLR(1) 文法。

觀察上圖 DFA 中的狀態2,想像當我們的自動機正處於這個狀態:次棧頂已經規約為 T 了,棧頂也是當前的狀態 2 ,而當前剩餘輸入為 *。

如果這個自動機不會【往前多看一步】的話,那麼對處於這個狀態的自動機來說,看起來狀態 2 中的移進項目和規約項目都是可選的。這就是移進-規約沖突。

想要解決這個沖突,就輪到【往前多看一步】上場了——把當前剩餘輸入考慮進來,輔助進行項目的選擇:

對其他的沖突也使用同樣的方法進行判斷。

這種沖突性動作的解決辦法叫做 SLR(1) 解決辦法

准備工作部分,與 LR(0) 分析表的構造差不多:同樣使用每個項目集的狀態編號作為分析器的狀態編號,也就同樣用作行下標;同樣使用拓廣文法產生式作為 0 號產生式。

填表也和 LR(0) 類似,唯一的不同體現在對規約項的處理方法上:如果當前狀態有項目 A → α.aβ 和 A → α. ,而次棧頂此時是 α 且讀寫頭讀到的是 a,那麼當且僅當 a∈FOLLOW(A) 時,我們才會用 A → α 對 α 進行規約。

如果構造出來的表的每個入口都不含多重定義(也就是如上圖中表格那樣的,每個格子裡面最多隻有一個動作),那麼該表就是該文法的 SLR(1) 表,這個文法就是 SLR(1) 文法。使用 SLR(1) 表的分析器叫做一個 SLR(1) 分析器。

任意的二義文法都不能構造出 SLR(1) 分析表

例:懸空 else

例:

這里的 L 可以理解為左值,R 可以理解為右值

經過計算可以確定其 DFA 如下圖所示。

在 狀態4 中,由於 "=" 同時存在於 FOLLOW(L) 與 FOLLOW(R) 中,因此該狀態內存在移進-規約沖突,故該文法不是 SLR(1) 文法。

這樣的非二義文法可以通過增加向前看終結符的個數來解決沖突(比如LL(2)、LR(2))但這會讓問題更加復雜,故一般不採用。而二義文法無論向前看多少個終結符都無法解決二義性。

㈡ 計算機科學與技術中編譯原理簡答題

時間有點久記得不太真切,用通俗語言說,希望題主盡量查閱書籍參考資料自行驗證理解。

1、什麼是移進項目,什麼是規約項目

這個是自頂向下和自下向上分析時候用到的。所謂移進就是不處理,所謂規約就是處理,合並,替換。比如當前符合某個正規式左部,就用這個正規式右部替換左部,稱為規約。兩種操作的目的都是為了分析整體是否符合語法樹。

2、請給出生成C語言語句序列的文法(假定s表示任意一個語句,它為終結符)

關於這個,我感覺你描述的不是很清楚,因為C語言文法包含的正規式還是挺多的,如果單指statement的話,
statement_listà
statement
| statement_list statement

Statementà
| compound_statement
| expression_statement
| selection_statement
| iteration_statement
| jump_statement
再配合上相應的終結符。

3、能用上下文無關文法生成正規集嗎?為什麼?

可以。不過無法保證不含沖突。

4、計算first集和follow集對於構造自頂向下的語法分析器有什麼作用?

可以用來排除沖突。例如移進-移進沖突,移進-規約沖突。

5、是否可能存在這樣一個DFA,它的所有狀態都是接受狀態,包括其實狀態,為什麼?

這個愛莫能助,據我的構想是可以的,但是這樣的DFA最終都會成為單一狀態DFA。

㈢ 編譯原理 LR(0) 項目集規范族怎麼構建。 書上的實在是看不懂那些I0、I1、I2的步驟。求一個

LR分析法是一種自下而上進行規范歸約的語法分析法,L指從左到右掃描輸入符號串,R是指構造最右推導的逆過程。對大多數無二義性上下文無關文法描述的語言都可用它進行有效的分析。主要分析器有LR(0),SLR(1),LR(1),LALR(1):
LR(0):在分析的每一步,只需根據當前棧頂狀態而不必向前查看輸入符號就能確定應採取的分析動作。所能分析的LR(0)文法要求文法的每一個LR(0)項目集中都不含沖突項目。
示例文法:
0 S』 -> S
1 S -> A
2 S -> B
3 A -> aAb
4 A -> c
5 B -> aBb
6 B -> d

㈣ 編譯原理作業求助

單選
1. C
2. C
3. D
4. A

判斷
5. 對
6. 錯
7. 錯
8. 錯
9. 對
10. 錯

㈤ 編譯原理 A產生空和B的規約在一個項目集里是規約沖突嗎

如果我們把同心的項目集合合並為一,就可能導致沖突,但是這種沖突不會是移進-規約沖突.因為如果存在這種沖突,則意味著對當前輸入符號a,有一個項目[A→α.,a]要求以A→α進行規約,同時又有另一個項目[B→β.aγ,b]要求把a移進.這兩個項目既然同處於合並之後的項目集中,則意味著在合並前,必有某個c使得[A→α.,a]和[B→β.aγ,c]同處於合並前的某一集合中.然而,這又意味著原來的LR(1)項目集就已經存在移進-規約沖突.從而文法不是LR(1)的,這與假設不符.事實上移進-規約沖突不依賴於搜索符號而只依賴於其心,因此,同心集合的合並不會引起新的移進-規約沖突

㈥ LR分析法的LALR(1)分析表的構造

上述每個LR(1)項目均由兩部分組成: 第一部分是一個LR(0)項目,稱為LR(1)項目的核;第二部分則是一個向前搜索符號集。對於移進項目而言,搜索符號對分析表的構造無影響;但對歸約項目而言,則僅在當前輸入符號屬於該搜索符號集時,才能用相應的產生式進行歸約。LR(1)分析表的這種機理,較圓滿地解決了SLR(1)分析所難以解決的某些「移進歸約」或「歸約歸約」沖突,從而使LR(1)的分析能力比SLR(1)分析有明顯的提高。然而,LR(1)分析的主要缺點在於,對同一個文法而言,LR(1)分析表的規模將遠遠大於相應的SLR(1)或LR(0)分析表。例如,為一個C語言構造LR(0)分析表,一般大約設置300個狀態即可,而構造LR(1)分析表則需上千個狀態,即後者將導致時間和內存空間開銷的急劇上升。因此,就有必要尋求一種其分析表的規模與SLR(1)相當,但其分析能力又不比LR(1)相差太大的LR分析方法,這就是下面我們要介紹的LALR(1)分析技術。
下面,我們首先對造成LR(1)項目集族規模大幅度上升的原因進行分析,然後再設法從中找出構造高效LR分析表 (即LALR(1)分析表)的方法。為此,試看下面的例子。
再考察文法G[E]:
0?S→E4?T→F
1?E→E+T5?F→(E)
2?E→T6?F→ID
3?T→T*F
利用上面所給演算法,為G[E]構造的LR(1)項目集族和識別活前綴的DFA如圖420(a),(b)所示 (請注意,由於圖幅較大,這里將其劃分為(a),(b)兩部分)。對比這兩幅圖我們立即就會發現,除其中的狀態0和狀態3之外,對於(a)中的每一狀態 (LR(1)項目集),在(b)中都有一個狀態 (LR(1)項目集)與其相似。例如,比較狀態7和16:在這兩個項目集中,除搜索符號集不同外,各個LR(1)項目的核都彼此相同 (即產生式相同,且產生式中圓點的位置也相同),我們把具有這種特點的兩個LR(1)項目集稱為同心集。所以,在圖420(a)和(b)中,7/16,5/12,10/17,4/13,8/18,2/14,11/19,6/20,1/15和9/21都是同心集。顯然,在LR(0)分析器中,每個「心」僅對應一個LR(0)項目集;但在LR(1)分析器中,由於向前搜索符號的不同,同一個「心」將會派生出多個同心集。這就是對同一文法而言,LR(1)項目集族遠大於LR(0)項目集規范族的原因。
7E→E+·T[]#+T→·T*F
T→·F
F→·(E)
F→·ID〖〗#+*
#+*
#+*
#+*[][]16E→E+·T[]+)T→·T*F
T→·F
F→·(E)
F→·ID〖〗+)*
+)*
+)*
+)*
為解決上述問題,F?DeRemer提出了LALR(1)分析法。這種方法的基本思想是將LR(1)項目集族中的同心項目集加以合並,以削減項目集的個數。所謂合並同心集,實際上也就是將其中的每個LR(1)項目的向前搜索符集對應地合並在一起。例如,對於文法G[E]的同心項目集4和13,設合並後的新項目集為4/13,則有
4E→T·
T→T·*F〖〗#+
#+*[][]13E→T·
T→T·*F〖〗+)
+)*[][]4/13E→T·
T→T·*F〖〗#+)
#+)*
由於同心集的合並,對原來識別活前綴的DFA也須作相應的修改。
對於LALR(1)項目集族,我們須著重指出如下幾點:
(1) 合並同心集也就是將同心集中每個LR(1)項目的兩個組成部分 (核及向前搜索符號集)分別、對應地合並在一起。設I1,I2,…,Im為同心項目集,J是合並之後的新的項目集,顯然J與Ii同心;再設X∈V∪{#},則GO(I1,X),GO(I2,X),…,GO(Im,X)也必然同心,若把這m個同心項目集合並後的新項目集記為K,則有GOTO(J,X)=K。可見前面定義的GOTO函數在這里仍然適用。
(2) 盡管原來各LR(1)項目集均不存在沖突,但合並同心集後就有可能出現沖突。換言之,即LR(1)文法未必總是LALR(1)文法。不過,由此引入的沖突只能是「歸約歸約」沖突,而決不會是「移進歸約」沖突。事實上,設原LR(1)項目集族中有如下兩個項目集
Ik:
[A→α·,W1]
[B→β·aγ,b]Ij:
[A→α·,W2]
[B→β·aγ,c]
並設Ik與Ij均無沖突,故有
W1∩{a}=?W2∩{a}=?
從而
(W1∪W2)∩{a}=?
現將Ik與Ij合並,有
Ik/j:
[A→α·,W1∪W2]
[B→β·aγ,{b}∪{c}]
若此時Ik/j有「移進歸約」沖突,則必有
(W1∪W2)∩{a}≠?
這就與Ik與Ij無沖突的假設相矛盾。因此,合並同心集不會引入新的「移進歸約」沖突。
(3) 對同一個語法上正確的輸入符號串而言,不論用LALR(1)分析表還是用LR(1)分析表進行分析,所經歷的移進、歸約序列總是相同的 (僅狀態名可能不同)。然而,當輸入符號串有錯時,LALR分析器可能會比LR(1)分析器多進行幾步歸約才能報錯,但決不會比LR分析器多移進輸入符號。也就是說,LALR分析器雖然可能延遲了發現出錯的時間,但對錯誤的准確定位不產生影響。
(4) LALR(1)項目集族總是與同一文法的SLR(1)項目集族有同樣個數的項目集。但是構造LALR項目集族的開銷比SLR大。實現LALR分析對文法的要求比LR(1)嚴、比SLR(1)寬,但開銷遠小於LR(1)。權衡利弊的結果,LALR堪稱為當前實現自底向上語法分析,特別是構造分析器自動生成工具的最為適用的技術。
綜上所述,可給出構造LALR(1)分析表的演算法如下。
1? 對已給的拓廣文法G′,構造相應的LR(1)項目集族C={I0,I1,…,In}。
2? 對於C,將各LR(1)項目集按同心關系進行分組,並將同組的同心集加以合並,設所得的新項目集族為C′={J0,J1,…,Jm},其中含有項目[S′→·S,#]的項目集對應於初態。
3? 若C′中的項目集含有沖突項目,則G′不是LALR(1)文法。否則,可按如下法則構造LALR(1)分析表:
(1) 用構造LR(1)分析表類似的方法構造ACTION表;
(2) 對於某個X∈VN,若有GO(Jk,X)=Jt,則置GOTO(k,X)=t。
上述通過構造LR(1)項目集族和合並同心集來構造LALR分析表的方式僅有理論意義而無實用價值。因為構造完整的LR(1)項目集族的時間和空間開銷都很大,故應首先設法予以解決。
迄今已有多種高效構造LALR分析表的演算法,其共同的特點都是不從直接構造完整的LR(1)項目集入手,而是通過構造LR(0)項目集並添加相應的向前搜索符號來形成LALR(1)項目集 (請注意,對同一個文法而言,LALR(1)項目集與同心的LR(0)項目集一一對應)。例如,OCCS/YACC構造LALR(1)項目集所採用的策略是,每當創建一新的項目集時,就檢查目前是否已存在與之同心的項目集,若有這樣的項目集,則只需將向前搜索符號加入其中,而不再建立新的項目集。一種更為有效的方法甚至無需構造完整的LALR(1)項目集,而僅通過各個項目集中的「核心項目」便能構造相應的LALR(1)分析表。這里所說的核心項目是指形如[S′→·S,#]的項目 (其中,S′→S是拓廣文法的第1個產生式),或者是形如[A→α·Xβ,a]的項目 (其中,α≠ε,即圓點不出現在產生式右部的最左位置),亦即那些用於構造本項目集閉包的「基本項目」。例如,對於文法G[E],各項目集的核心項目如圖422所示。
下面,我們對利用項目集的核心項目構造LALR分析表的原理進行說明。 構造ACTION表的關鍵在於確定「歸約」和「移進」兩種動作。
(1) 歸約動作的確定
由核心項目的定義可知,任何歸約項目都必然會出現在某個項目集的核心項目之中,現設項目集I的核心為K,若[A→α·,a]∈K (其中α≠ε,搜索符號如何配置下面再介紹),我們立即可以確定: 在當前狀態下所面臨的輸入符號為a時,應按產生式A→α進行歸約,即有
ACTION[I,a]=rj
若α=ε,則當且僅當
[B→γ·Cδ, b]∈KC?*[]rAη
且a∈FIRST(ηδb)時,才能確定面臨輸入符號a時用產生式A→ε進行歸約。由於對任何C∈VN,滿足C?*[]rAη的所有非終結符號A預先能完全確定,故項目集I所引發的歸約動作,僅由其核心K即能完全確定。
(2) 移進動作的確定

[A→α·Xβ,b]∈KX?*[]raη(a∈VT)
且上述推導的最後一步未使用ε產生式,則可確定: 狀態I面臨輸入符號a時的動作為「移進」。其中,終結符號a可通過預先計算FIRST(X)加以確定。 對於任何項目[B→γ·Xδ,b]∈K,相應的項目[B→γX·δ,b]顯然必屬於某個項目集J=GO(I,X)的核心L。另外,若
[B→γ·Cδ,b]∈KC?*[]rAη
且A→Xβ是文法中的一個產生式,則對於任何
a∈FIRST(ηδb)[A→X·β,a]∈L
由於對每一對非終結符號(C,A),是否存在關系C?*[]rAη,可採用類似於計算FIRST集的方法預先求出,故僅從I的核心同樣可構造出GOTO表。 上面的討論,是在假定每個核心項目都已配置了搜索符號的情況下進行的。現在,再回頭討論: 如何為每個LR(0)項目集的核心項目配置搜索符號,使之成為LALR項目集的核心項目。為此,我們首先考察搜索符號從項目集I傳播到項目集GO(I,X)的規律。
再設項目集I的核心為K,若有
[B→γ·Cδ,b]∈KC?*[]rAη
且A→Xβ是文法中的一個產生式,則根據上面的討論有
[A→X·β,a]∈La∈FIRST(ηδb)
其中L是項目集J的核心,且J=GO(I,X)。現分如下兩種情況討論搜索符號a和b間的關系。
(1) 當ηδ?*ε時,顯然也有[A→X·β,b]∈L。此時,我們就說項目[A→X·β,b]中的搜索符號b是從項目[B→γ·Cδ,b]中傳遞過來的 (propagate)。
(2) 當ηδ不能推導出ε時,a僅取決於η或δ,而與b無關,此時我們就說搜索符號a是自生的 (spotaneous)。
無論a是傳遞的還是自生的,它總能根據項目[B→γ·Cδ,b]中的有關信息,通過上述計算獲得,這便是搜索符號從項目集I傳播到項目集J的規律。
其次,在同一項目集中,核心項目中的搜索符號向非核心項目傳播的規律與上述規律極為相似。事實上,設[B→γ·Cδ,b]∈K,而C→α是文法中的一個產生式,則[C→·α,c]是I的一個非核心項目。其中,搜索符c∈FIRST(δb),且按如下方法確定: 若δ不能推出ε,則c是自生的;否則,c=b,即c是從上面的項目傳遞下來的。
類似地,也可討論搜索符號在非核心項目間的傳播規律。例如,對於文法G[E],從核心項目[S→·E,#]開始,向前搜索符號在I0中的傳遞和自生的情況如圖423所示。
設K是LR(0)項目集I的核心,X是某個文法符號,則對GO(I,X)的核心中的每一項目A→αX·β,通過程序47描述的操作 (請注意,這里使用了一個虛擬搜索符號lookahead),可由I中的項目確定其全部自生的搜索符號,並能確定K中的哪些項目將其搜索符號傳遞給GO(I,X)中的項目A→αX·β。
程序47確定自生搜索符號和傳遞搜索符號的項目
for (K中的每個項目B→γ·δ)
{
J′=CLOSURE ([B→γ·δ,lookahead]);
/*計算GO函數之值 */
for (J′中的每一項目[A→α·Xβ,a])
{
if(a!=lookahead)
確定GO(I,X)核心項目[A→αX·β,a]
之搜索符號a是自生的
if(a==lookahead)
確定GO(I,X)核心項目[A→αX·β,a]之搜索符號a是從K中項目
B→γ·δ傳遞過來的;
}
}
最後,我們再考慮如何給每個LR(0)項目集的核心中的各個項目都配置一個搜索符號集,以獲得各個LALR(1)項目集的核心。完成此項任務的大致過程如下。
(1) 為拓廣文法G′構造全部LR(0)項目集的核心。
(2) 首先從初始項目集I0惟一的核心項目S′→·S (其搜索符號顯然為#)開始,對每個LR(0)項目集的核心和每個文法符號X,利用上面的演算法,確定GO(I,X)各核心項目的自生搜索符號集,並確定從I的哪些項目將搜索符號傳遞到GO(I,X)的核心項目。
(3) 按某種便於操作的結構,建立一張核心項目表,此項目表記錄了每個項目集的各個核心項目及其相應的搜索符號集。開始時,這些搜索符號集僅是由第(2)步所確定的自生搜索符號集 (若該核心項目無自生向前搜索符號則為空)。
(4) 傳遞每個核心項目中的自生搜索符號,直到無法再進行傳遞為止。即反復掃視各項目集的每個核心項目,每當訪問一個核心項目i時,便根據第(2)步所獲的信息,將i當前要傳遞的搜索符號添加到承接它的那個核心項目之中,直至沒有新的搜索符號要傳遞為止。
對一個給定的文法G而言,當它的各個LALR(1)項目集的核心構造出來之後,就能根據上面所描述的原理,為G構造相應的LALR(1)分析表。不過,盡管上述構造LALR分析表的方法效率較高,但對於常見的程序設計語言,企圖用手工的方式來建立LALR分析表仍幾乎是不可能的。所幸的是,目前已有一些自動生成LALR分析表的工具可資使用(如YACC)。
還應當指出,在構造LR語法分析器時,尚有若干技術問題需予以考慮,如二義性文法的處理,避免按單產生式的歸約,等等。前者我們將在第5章介紹語法分析器自動生成工具時再進行討論;至於後者,由於需涉及一些語義處理及其信息傳遞的細節,故就不再討論了。
在結束本章時,我們還要給出如下的結論,這些結論的證明讀者可參閱有關的文獻(1,2,8,15)。
(1) 任何LR(K),LL(K)及簡單優先文法類都是無二義性的;對於算符優先文法,如果不考慮歸約所得非終結符號的名字,也可認為是無二義性的。
(2) 任何二義性的文法都不可能是LR(1)(或LL(1))文法,但可藉助於其它因素,如算符的優先順序和結合規則以及某些語義解釋等等,來構造無沖突的分析表。
(3) 每個SLR(K)文法都是LR(K)文法,但卻存在這樣的LR(1)文法,它對任何K而言均不是SLR(K)文法。

㈦ 編譯原理 文法題目

首先擴展文法為:
1) S1->S
2) S->aS
3) S->bS
4) S->a
則:
I0 = Closure({S1->.S})={S1->.S,S->.aS,S->.bS,S->.a}
go(I0,S) = Closure({S1->S.})={S1->S.} = I1
go(I0,a) = Closure({S->a.S,S->a.})={S->a.S,S->.aS,S->.bS,S->.a,S->a.} = I2
go(I0,b) = Closure({S->b.S})={S->b.S,S->.aS,S->.bS,S->.a}=I3
go(I2,S) = closure({S->aS.})={S->aS.}=I4
go(I2,a) = Closure({S->a.S,S->a.}) = I2
go(I2,b) = Closure({S->b.S}) =I3
go(I3,S) = Closure({S->bS.}) = {S->bS.} = I5
go(I3,a) = Closure({S->a.S,S->a.}) = I2
go(I3,b) = Closure({S->b.S}) = I3

由圖所示,狀態I2,既有歸約項目(S->a.)又有移近項目(S->.aS,S->.bS,S->.a),產生沖突。當用SRL分析法時,需向前看一步,即求出:
Follow(S) = Follow(S1) = {#}
則,Follow(S)∩{a,b} =∮
故而Action(I2,a) = s2
Action(I2,b) = s3
Action(I2,#) = r4

則構造出srl分析表如下所示:
Action Goto
a b # S
I0 s2 s3 1
I1 acc
I2 s2 s3 r4 4
I3 s2 s3 5
I4 r2 r2 r2
I5 r3 r3 r3

請採納。

㈧ 同一依賴程序集的不同版本之間出現沖突 .net的怎麼解決

會顯示此警告,如果您的項目依賴項關系圖包含對同一程序集的不同版本。
如果具有 app.config 文件,則 Visual Studio 可以添加綁定重定向到它。 綁定重定向所有程序集引用重定向到程序集的最高編號版本的強制說明。 Visual Studio 保存在 app.config 的重定向信息。 如果使用綁定重定向,則不會再出現此警告。
如果您決定不添加綁定重定向,項目將象以前一樣繼續引用程序集的同一版本。 但是,仍出現此警告。
更正此錯誤
雙擊該警告並選擇 「是」,若收到提示, 「希望通過添加綁定這些沖突重於 app.config 文件的記錄定向?」

㈨ 編譯原理文法題 求解

一看就是計科的 …………
我們都是 LL1 SLR1文法沒怎麼用過
進來問候下
有空加個好友 討論下

㈩ 有關編譯原理

⑴拓廣文法 1 分
G[S ′ ]: S ′→ S ⑴
S → SaA ⑵ S → a ⑶ A → AbS ⑷ A → b ⑸
該文法的以 LR(0) 項目集為狀態的識別規范句型活前綴的 DFA :

⑵ 該文法的 LR(0) 分析表:
狀態 ACTION GOTO
a b # S A
0 S 2 1
1 S 3 acc
2 r 3 r 3 r 3
3 S 5 4
4 r 2 r 2 /S 6 r 2
5 r 5 r 5 r 5
6 S 2 7
7 r 4 /S 3 r 4 r 4
⑶ LR(0) 文法:該文法的以 LR(0) 項目集為狀態的識別規范句型活前綴的 DFA 中沒有沖突狀態。
該文法不是 LR(0) 文法
因為存在沖突狀態: I 4 和 I 7
⑷ SLR(1) 文法:該文法的以 LR(0) 項目集為狀態的識別規范句型活前綴的 DFA 中有沖突狀態,沖突可用 FOLLOW 集解決。
該文法不是 SLR(1) 文法。
因為 FOLLOW(S)={a,b,#} ,所以無法解決沖突

熱點內容
手機f加密 發布:2024-05-19 03:28:47 瀏覽:225
用什麼密碼寫日記 發布:2024-05-19 03:27:57 瀏覽:303
資料庫access2003 發布:2024-05-19 02:49:39 瀏覽:620
碧藍航線pc掛機腳本 發布:2024-05-19 02:30:03 瀏覽:589
腳本fir 發布:2024-05-19 02:28:57 瀏覽:261
阿里雲獨享伺服器 發布:2024-05-19 02:23:54 瀏覽:253
織夢源碼ga 發布:2024-05-19 02:23:20 瀏覽:571
java文件名後綴 發布:2024-05-19 02:14:39 瀏覽:956
快手點榜腳本 發布:2024-05-19 02:08:44 瀏覽:163
pythonforinkeys 發布:2024-05-19 01:55:44 瀏覽:793