A. 學習編譯原理要有什麼基礎
編譯原理內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。
主要是講怎麼做程序的編譯器。
需要數學基礎和很強的邏輯思維。
編譯原理里的字元閉包是指有限循環。關於閉包這些名詞解釋,你們的課程應該有離散數學吧?會有對這些概念的解釋。
編譯原理這書啊。得花老大精力去看了。每一行都會是至關重要的。如果你漏看了哪一節,或許接下來看到的新字母就不知道是什麼意思了。
所以要反復看,反復用邏輯思維推敲。做習題,習題類型也就幾種,做熟了就很簡單
B. 編譯原理的正閉包與星閉包是什麼意思
仔細分析你的文法
f->f*|a|b也就是說,寫成正則表達式的話
f就是[ab]*
同樣的t也是[ab]*
你的整個文法就是[ab]+
[ab\+]*第一個+是+closure,第二個+是符號+,所以用了\符號
個人感覺這個文法是有問題的,因為根本不需要用上下文無關文法表達,只需要正則表達式就可以了。
C. 編譯原理 正則語言 二義文法 急~
這個沒有一個好老師,自己咬文嚼字看懂是很累的
二義性文法
【定義】 若文法中存在這樣的句型,它具有兩棵不同的語法樹,則稱該文法是二義性文法。
二義性文法會引起歧義,應盡量避免之!
G(E):E -> E+E | E*E | (E) | i
這兩種展開
E E
E + E E * E
i E * E E + E i
i i i i
都可以表示i+i*i
所以;文法具有二義性。
D. 編譯原理與實踐中正規表達式的問題
(aa|b)*
由連續兩個a或一個b的任意序列組成的語言,比如aab,baaaabbbb.
(a|bb)*
連續兩個b或一個a的任意序列。
正則語言里,|表示任選,有時也用+號。*號表示閉包--就是說任意組合。
E. 編譯原理中的閉包含義
這個是能畫的最簡單的,左邊是開始狀態。原則是:1)先連接運算,2)再選擇3)再閉包
F. 編譯原理、離散數學中閉包是什麼意思
數學中是閉的集合,也就是集合和它的邊界的並。集合e的全體聚點並上e稱為e的閉包。關系的閉包運算時關繫上的一元運算,它把給出的關系R擴充成一新關系R』,使R』具有一定的性質,且所進行的擴充又是最「節約」的。
比如自反閉包,相當於把關系R對角線上的元素全改成1,其他元素不變,這樣得到的R』是自反的,且是改動次數最少的,即是最「節約」的。
G. 編譯原理的難點
1.錯誤認識: 很多人以為編譯原理只能應用在寫程序語言的編譯器上,覺得用處不大,學習興趣不高.而且可能覺得寫編譯器就必須完全手工來寫.
2.自動機理論: 象NFA,DFA之類,比較抽象,要費些腦子,特別如果學離散數學時沒有學自動機理論的話,更是需要多花點時間.
3.集合論的推演: 主要是一些閉包運算之類,數學基礎不好的話,學起來也會感到吃力.
4.LR文法: 主要是又引入了自動機
H. 編譯原理的課程設計,構造正規式r*(閉包運算)的NFA的程序實現。求源代碼,求文檔。 謝謝
個人感覺畫出NFA最直觀易懂了。前一個正規式僅有一個狀態(開始和接受狀態同),後一個雖然是三個狀態,但是其中一個是繞著a閉包的狀態,一個是繞著b閉包的狀態,而這兩個狀態又是繞著第三狀態(既是開始狀態又是接受狀態)進行閉包,所以實際上可合並為一種狀態,即是說這兩個正規式對應於同一個NFA,所以相等是顯然成立的。
I. 學習編譯原理,需要什麼基礎
編譯原理內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。
主要是講怎麼做程序的編譯器。
需要數學基礎和很強的邏輯思維。
編譯原理里的字元閉包是指有限循環。關於閉包這些名詞解釋,你們的課程應該有離散數學吧?會有對這些概念的解釋。
編譯原理這書啊。得花老大精力去看了。每一行都會是至關重要的。如果你漏看了哪一節,或許接下來看到的新字母就不知道是什麼意思了。
所以要反復看,反復用邏輯思維推敲。做習題,習題類型也就幾種,做熟了就很簡單
J. 編譯原理中的閉包是什麼意思,在資料庫中看到過閉包
閉包就是由一個屬性直接或間接推導出的所有屬性的集合,例如:
f={a->b,b->c,a->d,e->f}
由a可直接得到b和d,間接得到c,則a的閉包就是{a,b,c,d}