編譯原理中,形式語言裡怎麼區分2型文法與3型文法

時間 2021-05-07 19:59:11

1樓:可以叫我表哥

二型文法如下:

s->ac

s->sc

a->ab

a->aab

三型文法如下:

s->as

a->ba

b->cb

b->c

a->bb

a、2型文法是上下文無關文法,表現在產生式上就是產生式的左部只有一個非終結符;3型文法從廣義上講包括左線形文法、右線形文法和正規文法 。

b、左線形文法產生式的右部要麼沒有非終結符,如果有非終結符也只能有一個,且必須位於產生式右部的最左端。

c、右線形文法產生式的右部要麼沒有非終結符,如果有非終結符也只能有一個,且必須位於產生式右部的最右端 。

d、正規文法是右線形文法的一個子集,其產生式右部只有三種情況:

1)空串

2)只有一個終結符

3)只有一個終結符後接一個非終結符

e、所有的3型文法都是2型文法。

2樓:少年子桑

通過演算法對文法的每一產生式進行分析,如果存在複雜遞迴,則必是上下文無關文法,否則就是正則文法。

1、像a->aa|ε這樣的文法,雖然存在遞迴,但卻是單一的自遞迴,可以通過有窮自動機表示和分析處理,所以是正則文法;

2、但是像e->e+t,t->id|(e)這樣的文法顯然非單一的自遞迴,而是存在複雜遞迴,自動機是無法表示和處理的,必然是上下文無關文法。

另外還請注意:

1、正則文法是上下文文法的子集,正則文法也屬於上下文無法,但有的上下文文法不一定是正則文法;

2、同時再結合這兩個的形式定義認真揣摩必定能悟出一二。

計算機程式語言有哪些?

3樓:祕雁汲雲露

答:成千上萬。

最主流:

c++;

最基礎:basic

工程應用:fortran

教學語言:

pascal

新手應該學習什麼程式語言?

4樓:匿名使用者

1.看你的情況說明,建議還是學「易語言」或者vb

2.易語言是中文環境,背後的實質是c語言,vb呢,屬於初學者語言,好入門。

3.」不管c/vb/c++/c#學會之後不都是一樣可以做出軟體嗎?「答案是肯定的。

只要熟練掌握一門語言,都是可以做出軟體的。只不過看你的目的了,若是自己用無所謂,若是但是以此求職謀生,那需要看應聘的單位需要什麼語言了。

5樓:千鋒教育

對於初學者,想做簡單的程式設計的話,建議從c語言開始入門。c語言是最主流的基礎語言。現在軟體開發上所用的的主流的高階程式語言大多數都是以c語言為基礎演化而來的,掌握好c語言有助於學習其他的高階程式語言。

在學習過程中推薦參考譚浩強的c語言教程,非常適合入門級別的教材,在學習中還要注重實際操作,技術的提高來與源於**量的積累。

6樓:匿名使用者

如果你只是打算學來玩玩的話,易語言和vb是最簡單的了,易語言寫遊戲外掛方便。

如果你是認真的話,只推薦你學c或c ,優點有樓下說的,畢竟沒哪個公司開放軟體用易語言的吧,學易語言工作都會找不到。如果你下定了決心的話,那就把全部的精力學c和彙編,把這2個學精通。

7樓:流風

c# 簡單,文件多,開發工具方便

其他語言要麼開發工具麻煩,要麼語言麻煩

學習程式設計什麼語言最好

8樓:志祥羅志祥

初學的話可以從python這樣比較容易的開始學

9樓:匿名使用者

最近很多人都在問如何學習程式設計。我覺得學習程式設計最重要的是入門,如果你入門的時候有一個好的方法和思路,打下比較紮實的基礎,對今後的程式設計工作是很有益處的。即使在學習新的程式語言也無所謂,因為它們有很多相通之處,可以相互借鑑。

我認為可以先學習一下pascal,這個語言比較嚴謹,適合初學者。pascal它被稱為教學語言,結構嚴謹,不像c語言那麼靈活,易於理解和學習。然後可以繼續學習c語言,這個語言比較靈活。

有了pascal的基礎,在進行c語言程式設計就不會因為c語言的靈活而有問題。後面的就可以學習vc什麼的了。c語言的書推薦譚浩強的,比較好。

我當時學習pascal和c語言的時候是將書後的習題都做了一遍,感覺效果很好。當然了,學習什麼語言也要看你具體準備從事什麼行業。例如你要進行嵌入式開發,c就是很好的選擇,如果是windows開發,那麼vc就不錯。

還有資料庫方面的開發、網路開發等等。不同的語言適合不同的方面。要看自己的選擇的,呵呵。

還有很多人說自己的基礎很差,甚至中學畢業什麼的。其實這個並不重要,比較說英語,在計算機語言裡所用到的單詞量很少,而且都是常用詞,經常使用就記住了。當然,如果你要看原文資料或者幫助的話,專業詞彙比較多,不過在金山詞霸的幫助下,經常看,也是沒什麼大的問題的。

至於數學什麼的,其實數學只是培養你一個邏輯思維能力,在初學程式設計的時候影響不是很大。況且,作為一個基礎程式設計人員來說,上面還有系統分析師、專案經理,他們會把需求分析、概要設計和詳細設計做好的,你只要按照文件寫**就ok了。不過,要上更上一步的話,其他基礎知識就非常重要了,畢竟你不能寫一輩子**。

在你學習好c語言以後,個人建議好好學習一下資料結構和軟體工程。這兩門對你的水平提高都是很有幫助的。特別是軟體工程,它能夠使你按照科學的工程方法進行軟體開發,對今後的發展很有好處。

只是一家之言,有不到之處,還望見諒!參考資料:

10樓:可愛的草莓同學

c++語言:是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。

特點:c++不僅擁有計算機高效執行的實用性特徵,同時還致力於提高大規模程式的程式設計質量與程式設計語言的問題描述能力。

基本內容:類、封裝、過載、繼承、模版。

11樓:匿名使用者

學最難的c++,之後其他所有語言的語法,你在c++裡基本都能學到

12樓:千鋒教育互聯

目前較為熱門和行業需求大的是php、html5技術人員。

php主要用來做**開發,許多小型**都用php開發,php是開源的,這是使得php經久不衰的原因。在電商、社群等方面,php具備非常成熟的開源**和模板,因此使得php應用極為廣泛。劣勢是受眾較小,有可替代性。

h5的最顯著的優勢在於跨平臺性,用h5搭建的站點與應用可以相容pc端與移動端、windows與linux、安卓與ios。它可以輕易地移植到各種不同的開放平臺、應用平臺上,打破各自為政的局面。這種強大的相容性可以顯著地降低開發與運營成本,可以讓企業特別是創業者獲得更多的發展機遇。

13樓:陽光的凌寶寶

in an airborne troop. it was n

14樓:西安天融信教育

現在比較火的是大資料、資訊保安,python

資訊保安已經上升為國家戰略安全,發展前景廣闊,優勢明顯

15樓:不沒看見

沒有最好,只有最適合

計算機程式設計入門應該學什麼語言

16樓:春流婉轉繞芳甸

可以先學習python,這被認為是計算機語言裡比較簡單易懂的語言,可以自學或者搜尋相關課程進行學習。

程式語言一共有多少種?

一般遊戲程式設計用什麼語言和軟體

17樓:安徽新華電腦專修學院

你好,軟體開發不存在好語言或差語言,任何語言都可以,只是存在效率的差別。舉個例子:一個複雜的數**算,人工計算需要100年,而用計算機計算只要1秒鐘,這就是效率的差別。

指令碼語言和程式語言的區別是什麼?

18樓:學雅思

1、指令碼語言:又被稱為擴建的語言,或者動態語言,是一種程式語言,用來控制軟體應用程式。

2、程式語言:一種計算機語言讓程式設計師能夠準確地定義計算機所需要使用的資料,並精確地定義在不同情況下所應當採取的行動。

二、特點不同

1、指令碼語言:指令碼通常以文字(如ascii)儲存,只在被呼叫時進行解釋或編譯。

2、程式語言:程式在執行時可以改變其結構,開發快速,接近自然語言,易於理解,更方便的**管理。

三、優缺點不同

1、指令碼語言:指令碼語言極大地簡化了「開發、部署、測試和除錯」的週期過程。大多數指令碼語言都能夠隨時部署,而不需要耗時的編譯/打包過程。

2、程式語言:任何程式語言的使用都需要確保編寫的程式能夠根據實際需要及時調整。因此,快速原型開發環境非常重要,在這種環境下,動態語言和相關庫的結合可以大大增強其優勢。

c語言編譯原理,C語言編譯原理

c語言編譯過程詳解 c語言的編譯連結過程是要把我們編寫的一個c程式 源 轉換成可以在硬體上執行的程式 可執行 需要進行編譯和連結。編譯就是把文字形式源 翻譯為機器語言形式的目標檔案的過程。連結是把目標檔案 作業系統的啟動 和用到的庫檔案進行組織形成最終生成可執行 的過程。過程 如下 從圖上可以看到,...

編譯原理題,一個編譯原理題。。。

1 優先關係矩陣 2 句型 a s s 中的 短語 a s,a s s,a s s 直接短語 a s 控制代碼 a s lpp a s 一個編譯原理的問題 first 是符號串 的開始符號集合。也就是說,用推導的方法對 進行推導,一次次地使用產生式,用產生式右部的符號串替換一個非終結符,所有那些可能...

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

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