編譯原理,設文法G如下,句型T TF a的素短語

時間 2021-05-06 04:07:30

1樓:春天的離開

試給出句型t-t/f+a和t+t*f-f↑a的短語、控制代碼、素短語:

句型1:短語tt/f+a, t-t/f, t, t/f, a句型t素短語: t/f,a

句型2:短語e+t*f_f↑a, e+t*f, t*f,f↑a, a句型t*f

素短語: t*f,a

擴充套件資料文法:以有窮的集合描述無窮的計畫的工具。

字母表:元素的非空有窮集合,其中的元素稱為符號,因此也叫符號集。

符號串:由字母表中的元素組成的任何有窮序列,串中的元素個數叫做符號串的長度,空符號串ε,長度為0。

符號串的運算:

連線-符號串x = ab,y=cd, xy = abcd方冪-z=xn,當n = 0, z = ε,當 n = 2, z = xx

集合的閉包-∑* = ∑0 ∪∑1 ∪∑2 ∪…∪∑n∑+ 為正閉包 = ∑1 ∪∑2 ∪…∪∑n

編譯原理什麼是素短語

2樓:幻翼高達

編譯原理中,素短語是至少含義乙個終結符,並且自身不包含任何更小素短語的一種短語。

素短語是一種特殊的短語,它是乙個遞迴的定義,至少含有乙個終結符,並且除它自身之外不再含任何更小的素短語,所謂最左素短語就是處於句型最左邊的素短語的短語。

乙個算符優先文法g的任何句型的最左素短語是滿足以下條件的最左子串nanb…n***n(n是非終結符,a,b,c,d是終結符)。例如:句型t+t*f+id,t*f是最左素短語,id是素短語。

3樓:手機使用者

太多了,大概看了下考點:

若源程式是用高階語言編寫的,目標程式是 機器語言程式或匯程式設計序 ,則其翻譯程式稱為編譯程式.

何謂優化?按所涉及的程式範圍可分為哪幾級優化?

答:優化:對程式進行各種等價變換,使得從變換後的程式出發,能產生更有效的目標**。

三種級別:區域性優化、迴圈優化、全域性優化。

簡述常用的優化技術有哪些?

答:編譯程式中常用的優化技術有:

(1) 刪除公共子表示式;

(2) 複寫傳播;

(3) 刪除無用**;

(4) **外提;

(5) 強度削弱;

(6) 刪除歸納變數;

(7) 合併常量。

乙個句型中的最左 b 稱為該句型的控制代碼。

可選項有:

a. 短語 b. 簡單短語 c. 素短語 d. 終結符號

.遞迴下降法不允許任一非終極符是直接 左 遞迴的。

簡單優先方法每次歸約當前句型的 控制代碼 ,算符優先方法每次歸約當前句型的 最左素短語 ,二者都是不斷移進輸入符號,直到符號棧頂出現 可歸約串 的尾,再向前找到 可歸約串 的頭,然後歸約。

算符優先文法——設有一不含ε產生式的算符文法g,如果對任意兩個終結符對a,b之間至多只有 、 和 三種關係中的一種成立,則稱g是乙個算符優先文法。

常用的中間語言種類有哪幾種?

答:有逆波蘭式、三位址**、抽象語法樹和dag。

4樓:匿名使用者

短語,最左素短語,控制代碼,直接短語的區別是什麼? 設文法g的開始符號為s,abc是g的乙個句型。如果有句型s *=

5樓:匿名使用者

素短語是一種方法。

簡單來說:素短語是個短語,並且至少含有乙個終結符,並且,除它自身之外不再含任何更小的素短語。

6樓:新娘

我想知道最左素短語和控制代碼的區別在**……0 0

7樓:隨風而舞的魚

它是個短語,並且至少含有乙個終結符,並且,除它自身之外不再含任何更小的素短語

8樓:袁詩波

素短語的概念:它是個短語,並且至少含有乙個終結符,並且,除它自身之外不再含任何更小的素短語,所謂最左素短語就是處於句型最左邊的素短語。而乙個算符優先文法g的任何句型的最左素短語是滿足以下條件的最左子串nanb…n***n(n是非終結符,a,b,c,d是終結符)   例項:

句型t+t*f+id,求出其語法樹,可知,t*f是最左素短語,id也是素短語,但不是最左的。

9樓:匿名使用者

我也看不懂書上的定義,從書上的例子我總結出乙個定義:「至少包含乙個終結符的,除自身外,不含其它短語的短語」。未經過驗證。

令文法g[e]為: e→t|e+t|e-t t→f|t*f|t/f f→(e)|i 證明e+t*f是它的乙個句型,指出這個句型的所有短語、

10樓:三個小偷在身旁

終極符集合vt=

非終極符集合vi=

最右推導:e => e-t => e-f => e-(e) => e-(t) => e-(t+f) => e-(t+i) => e-(t*f+i)

直接短語:t*f,i

11樓:小白白白又白

e->t->t*f->(e)*f->(e+t)*f->(t+t)*f->(i+t)*f->(i+t)*i

有文法g[e]:e→e+t丨t t→tf丨f f→f*丨(e)丨a丨b

12樓:匿名使用者

終極符集合vt=

非終極符集合vi=

最右推導:e => e-t => e-f => e-(e) => e-(t) => e-(t+f) => e-(t+i) => e-(t*f+i)

直接短語:t*f,i

設有文法ge:e—>e+t|t t—>txf|f f—>(e)i,確定下列各終結符號的優先關係。

13樓:匿名使用者

終極符集合vt= 非終極符集合vi= 最右推導:e => e-t => e-f => e-(e) => e-(t) => e-(t+f) => e-(t+i) => e-(t*f+i) 直接短語:t*f,i

編譯原理中文法g[e]:e::=e+t|t t::=t*f|f f::=(e)|i輸入輸出的程式實現**,急!!!!!

14樓:匿名使用者

我這裡有個差不多的,不過加減乘除都有namespace 遞迴下降呼叫子程式法

你給我郵箱發個郵件 我吧程式法給你吧

// a → bc

// c → (+|-)bc | ε

// b → ed

// e → (a)| i

// d → *ed | ε

private stackst = new stack();

bool j_j = false;//標識外層是否是減法,若是,則內層加減互換

bool c_c = false;//標識乘除的

private float a()

else

if (st.peek() == '-')

else

}c();

return m;

}private float b()

else

}private float c()

else

return m + c();

}else

if (st.count != 0 && st.peek() == '-')

else

}else

}else //if(st.peek()

result += "c →ε\n";

return 0;

}private float d()

if ((st.peek() == '*') || (st.peek() == '/'))

else

return m * d();

}else

if (st.count != 0 && st.peek() == '/')

else

}else

}else

return 0;

}private float e()

if (isdigit(st.peek()))

return num;

}else

if (st.peek() == '(')

else

result += "非法字元!";

}else

result += "缺少「)」";

return m;

}else

result += "錯誤,第" +(codelength- st.count+1).tostring() + "個字應有數字或'('\n";

return 0;

}private bool isdigit(char d)

private string result;

private int codelength;

private void startbtn_click(object sender, eventargs e)

string res = null;

trycatch (exception e1)

if (st.count != 0)

label2.text += result + "第" + (textbox2.text.length - st.count + 1) + "個字元處有錯誤,請仔細檢視\n";

else

label2.text += result + "最終結果是:" + res;}}}

編譯原理 學的是什麼,什麼是編譯原理

許詩文 編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程式構造的一般原理和基本方法。內容包括語言和文法 詞法分析 語法分析 語法制導翻譯 中間 生成 儲存管理 優化和目標 生成。編譯原理是計算機專業設定的一門重要的專業課程。雖然只有少數人從事編譯方面的工作,但是這門課在理論 技術 方法上都對學生...

我學的是c ,怎麼編譯病毒。編譯的原理是什麼

破環計算機正常執行為主旨,嚇唬別人為嚮往,搞壞機子為追求,傳播出去是理想。望採納謝謝。devc 編譯的程式被報病毒,請問是什麼原理?10 不是微軟的就報病毒,你可以考慮退出360或者改用vs c 我這上面沒報毒啊。也是win7 x86 dev 360防毒。複製你的 幾句c 作業練習,編譯後360居然...