A. 漢語程序設計語言的編譯原理
漢編系統是一個互動式的程序設計環境,最初是為程序員在小型和微型計算機上開發應用程序而設計的。主要應用於科學計算和工業控制,比如儀器、機器人、過程式控制制、圖形和圖像處理、人工智慧和商業應用。漢編語言的主要優點是軟體開發快速、互動式、計算機硬體的高效使用等。
漢編語言與傳統語言最大的不同是它的可擴展性。漢編語言的編程過程就是定義新的詞,詞實際上就是語言的新命令。詞可以用一系列以前定義的詞來定義,這個過程與教育孩子的過程相似:我們總是用孩子們以前理解的概念來教給孩子們新的概念,而這些詞被稱為「高級定義」。同樣,新的詞也可以用匯編代碼定義。
可擴展性的結果是我們在開發一個應用的同時,也間接地開發了一個特殊的、針對這一類應用的「面向應用的模塊,它可以用於或者經過修改之後被用於相似的應用。
漢編語言的可擴展性並不僅僅是為語言自身增加新的命令,所以不要把定義詞與傳統高級語言定義函數、過程等同。漢編系統還能對定義詞(建詞)進行擴展,創建一個可以定義其它詞的詞,這種詞被稱為「定義詞」。在創建這樣一個定義詞的時候,程序員能夠指定它所創建的詞在編譯時間、運行時間或者這兩種狀態下的特殊行為。這個能力允許我們定義特殊的數據類型,並對其行為和結構實施完全的控制。又由於這種詞的運行時行為可以用高級語言或者匯編語言來定義,所以由定義詞創建的詞將具有與其它漢編詞一樣的性能。系統也允許我們增加一個新的「編譯指示符」以實現特殊類型的循環或者其它的控制結構。比如,漢語言定義一個程序變數的詞:給,其代碼大概如下:
編給(32位數-<變數名>-)編譯時
(---32位數)運行時
建詞可用地址4位元組空出寫
動作讀
。
定義變數時
5給變數一
則5被自動寫入變數一的實體域中
運行「變數一」時
變數一
則變數一實體域中的數字5被自動讀取,放到數摞上 漢編詞可以使用以前定義的詞或者匯編代碼來定義,它們與其它語言的子程序相似,也與其它語言的命令等效。漢編系統允許我們在鍵盤上打入一條指令的詞名,這個詞將被立即執行。然而,如果我們把功能的詞名放到定義中,將編譯成對於這個詞的引用。
高級詞是由其它詞的集合來定義的,我們可以把這個過程想像成是其它語言的宏。新的詞被加入到它們可以使用的存儲器中,其定義被加入到詞典中。在一個漢編詞的命名規則中,只有很少的幾個字元不能作為詞名使用。
當遇到一個詞的時候,漢編系統就通過詞典搜索希望找到這個詞的定義,如果找到這個詞定義的功能,或者被立即執行,或者作為引用而被編譯到新的定義中。然而,如果在詞典中沒有找到這個詞,系統就試著把它轉換成一個數。如果轉換成功,就把它放在數摞上。如果不能轉換成數字,就顯示這個未定義的詞名並列印出一個錯誤的信息來報告這個詞是系統所不知道的。
漢編詞的執行流程大概可以用一個詞來模擬如下:
編查詞測試
{詞名串--}
255個位元組空給詞名串
詞名串255填0
詞名串字串傳送
詞名串(查詞)
0=
就
計位元組
串>數
就
♀
否則
字串未定義詞名串字串+傳送
詞名串計位元組
回車印字串
全復位
然後
否則
執行
然後
。★
字串看數摞查詞測試數摞已空!★
字串123456查詞測試★.
看數摞[1]123456★.
顯123456★
字串看方法查詞測試
看方法未定義
漢編系統編譯流程如右圖(流程圖來源:漢編新浪博客)所示。
漢編語言堅持「結構化程序設計」原理:
·詞必須在引用之前被定義;
·邏輯流限制只有順序、條件和循環,有專門的詞用於實現常用的程序控制結構;
·程序員使用許多小的、獨立的模塊(詞)來實現最大的可測試性和可靠性;
這種方法有兩個明顯的優點
·新的詞總是用以前定義和測試過的詞來構造,所以調試更容易。模塊可以單獨執行以測試它的功能;
·固有的模塊性使漢編語言成為一個「設計性語言」,允許自頂向下的設計同時保持自底向上的測試。一個詞可以在不同的程序中使用,但是它的功能只需要定義一次;
這些都保證了漢編軟體能夠快速和有效地被開發,同時,如果管理得當,也可以作為自身文檔的基礎。
漢編語言的5個主要元素決定了它的特點:
·一個詞典;
·兩個數摞,一個是參數摞,另一個是用於嵌套的返回摞;
·鍵盤(輸入流)解釋器;
·一個編譯器;
·虛擬存儲; 詞典是漢編定義詞的數據和代碼存儲空間,也為編譯建立了詞的索引。詞典中的詞包括漢編程序代碼詞、常數定義詞、變數定義詞、不定量定義詞,面向對象部分還有模板、對象、對象事件、消息。
漢編代碼存儲在詞典中。詞典占據了系統存儲器的很大部分,它由一個串線鏈接的可變長度的項目組成,每個項目定義了一個詞。每個定義的內容根據詞的類型(數據項、常數、操作序列等)而有所不同,詞典是可擴展的。
詞是由「定義詞」加入詞典的,最常用的定義詞是「編。」當「編」執行的時候,馬上就把後面的詞名掃描,建立一個詞典項,然後進入「編譯」模式。有許多不同的編譯方法,最常用的是「串線編碼」,這種方法把定義編譯成一系列以前定義詞的地址引用。詞的定義由「。」(句號)結束。下面就是一個詞的定義:
編平方(--)♂*顯。
當一個詞名項被編譯到詞典中的時候(稱為定義的首部),它包含一個指向詞典中前一個首部的指針。新詞的詞名加入詞典(這里就是平方),接著一個指向詞名為「(編)」子程序調用的指針編譯到詞典中作為定義的第一部分,這個指針指向一段在解釋定義體時需要執行的代碼。當然,這里所說的不是唯一的編譯技術,但它的應用最為普遍,這種技術稱為間接串線編碼,因為定義中的第一個項目是一段代碼的引用,這段代碼知道如何解釋定義的其它部分。
定義的其它部分稱為這個定義的體。在編譯模式下,系統將依次尋找每個詞的首部。每個首部地址依次放到定義體中,這樣就產生了一個地址列表。最後在到達「。」時,詞名為「。」的子程序地址被編譯進詞典。「。」子程序用來將控制返回到調用詞,就像一個子程序返回一樣。
B. 易語言的編譯原理和中間代碼是什麼
基本特點
易語言是一個自主開發,適合國情,不同層次不同專業的人員易學易用的漢語編程語言。易語言降低了廣大電腦用戶編程的門檻,尤其是根本不懂英文或者英文了解很少的用戶,可以通過使用本語言極其快速地進入Windows程序編寫的大門。易語言漢語編程環境是一個支持基於漢語字、詞編程的、全可視化的、跨主流操作系統平台的編程工具環境;擁有簡、繁漢語以及英語、日語等多語種版本;能與常用的編程語言互相調用;具有充分利用API,COM、DLL、OCX組件,各種主流資料庫,各種實用程序等多種資源的介面和支撐工具。易語言有自主開發的高質量編譯器,中文源代碼被直接編譯為CPU指令,運行效率高,安全可信性高;擁有自己的資料庫系統,且支持訪問現有所有資料庫;內置專用輸入法,支持中文語句快速錄入,完全解決了中文輸入慢的問題;易語言除了支持界面設計的可視化,還支持程序流程的即時可視化;除了語句的中文化之外,易語言中還專門提供了適合中國國情的命令,如中文格式日期和時間處理、漢字發音處理、全半形字元處理、人民幣金額的處理等;易語言綜合採用了結構化、面向對象、組件、構架、集成化等多種先進技術,並在運行效率、性能價格比、全可視化支持、適應本地化需要、面向對象以及提供Windows,Linux上的運行平台等具有特色;現有各種支持庫多達40多個,用戶可以使用她來滿足幾乎所有的Windows編程需求,多媒體功能支持強大,完善的網路、埠通訊和互聯網功能支持,網上與論壇上的學習資源眾多。在易語言及其編譯器的設計與實現、可視化漢語編程的構建、提供多種語言版本等方面具有創新。目前易語言已取得國家級鑒定,鑒定會專家一致認為:易語言在技術上居於國內領先地位,達到了當前同類產品的國際先進水平。
支持庫
易語言支持庫類似於普通的程序的DLL文件。
這個支持庫是易語言專用的,別的程序調用不了的,擴展名有fnr、fne、npk三種。
fnr、fne都是製作好的DLL文件,例如系統核心支持庫、應用介面支持庫。該類支持庫一般由用戶使用C++或Delphi製作,具體可以看易語言支持庫開發手冊。
npk屬於易語言COM包裝支持庫,該支持庫是引用COM包裝庫生成的,例如WebBrowser、Windows媒體播放器。該擴展名格式支持庫可用記事本、寫字板打開。該支持庫可以由用戶製作,製作方法:在易語言上點擊工具--「類型庫或OCX組件→支持庫」命令。
模塊
大型軟體項目的實施一般是分工協作開發,為了支持這一點,易語言提供了模塊化開發支持。易語言中的模塊稱為易模塊。通過使用易模塊,用戶可以將常用的代碼封裝起來重復使用到其它程序,或提供給第三方使用,或用作開發大型軟體項目中的某個部分,然後在軟體項目的封裝階段將所有這些模塊組織編譯成為一個完整程序,易模塊的擴展名為.ec。同時易語言支持大量非官方擴展模塊,用戶可自行編譯模塊,易語言5.11靜態編譯版本發布!很多易語言本身不存在的功能,私人開發的模塊基本會有,更多私人開發出具有特色功能出來,模塊的使用使得易語言突顯「易」字,大大增加了易語言的用戶人群。
C. c(a/g/w)ll選擇哪個
熱門頻道
首頁
博客
研修院
VIP
APP
問答
下載
社區
推薦頻道
活動
招聘
專題
打開CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
打開APP
c語言lr文法還是ll文法,編譯原理復習題 轉載
2021-05-20 05:05:24
Tim Pan
碼齡4年
關注
一、單項選擇題 概述部分
1.構造編譯程序應掌握 。D A. 源程序 B. 目標語言 C. 編譯方法 D. 以上三項都是 2.編譯程序絕大多數時間花在 上。D
A. 出錯處理
B. 詞法分析
C. 目標代碼生成
D. 表格管理 3.編譯程序是對 。D
A. 匯編程序的翻譯
B. 高級語言程序的解釋執行
C. 機器語言的執行
D. 高級語言的翻譯 4. 將編譯程序分成若干「遍」,是為了 。B
A. 提高程序的執行效率
B. 使程序的結構更為清晰 C 利用有限的機器內存並提高機器的執行效率 D. 利用有限的機器內存但降低了機器的執行效率
詞法分析部分
1.DFA M(見圖1-1)接受的字集為 。D A. 以0開頭的二進制數組成的集合
B. 以0結尾的二進制數組成的集合
.png
C. 含奇數個0的二進制數組成的集合
D. 含偶數個0的二進制數組成的集合
2.詞法分析器的輸出結果是 。C
A. 單詞的種別編碼
B. 單詞在符號表中的位置
C. 單詞的種別編碼和自身值
D. 單詞自身值 3.正規式M1和M2等價是指 。C A. M1和M2的狀態數相等 B. M1和M2的有向邊條數相等 C. M1和M2所識別的語言集相等 D. M1和M2狀態數和有向邊條數相等 4.詞法分析器的加工對象是 。 C A .中間代碼 B .單詞 C .源程序 D .元程序 5.同正規式(a|b )*等價的正規式為 。D A .(a|b)+ B .a*|b* C .(ab)* D .(a*|b*)+ 6. 兩個DFA 等價是指: 。 D A. 這兩個DFA 的狀態數相同
B. 這兩個DFA 的狀態數和有向弧條數都相等
C. 這兩個DFA 的有向弧條數相等
D. 這兩個DFA 接受的語言相同
7. 下列符號串不可以由符號集S ={a,b}上的正閉包運算產生的是:(A ) A. ε B. a C. aa D. ab 8.稱有限自動機A1和A2等價是指________。D A .A1和A2都是定義在一個字母表上的有限自動機 B .A1和A2狀態數和有向邊數相等
圖1-1
1
相關資源:編譯原理賦值語句的翻譯LL文法LR文法簡單優先法-專業指導文檔類...
文章知識點與官方知識檔案匹配
C技能樹首頁概覽
110422 人正在系統學習中
打開CSDN APP,看更多技術內容
編譯原理五 LR(1)分析法【C語言實現】_wangkay88的博客
1、使用 LR 的優點: (1)LR 分析器能夠構造來識別所有能用上下文無關文法寫的程序設計語言的結構。 (2)LR 分析方法是已知的最一般的無回溯移進-歸約方法,它能夠和其他移進-歸約方法 一樣有效地實現。 (3)LR 方法能分析的文法...
lr參數與C語言函數參數的區別_weixin_30254435的博客
LR參數是lr自己封裝的一個鍾對象, LR參數的表達方式:{ParamName}
編譯原理習題——第2章 文法和語言試卷
第2章 文法和語言試卷 1. 文法:G:S→xSx|y所識別的語言是(D)。 A. xyx B. (xyx)* C.x*yx* D. xnyxn(n≥0) 2. 給定文法A→bA|ca,為該文法句子的是(C)。 A. bba B. cab C. bca D. cba 3. 文法G產生的(D)的全體是該文法描述的語言。 A. 句型 B. 終結符集 C. 非終結符集 D. 句子 4. 若文法G...
繼續訪問
編譯原理習題(含答案)——2程序設計語言及其文法——哈工大陳鄞配套版本
程序設計語言及其文法1 文法:G:S→xSx | y所識別的語言是( )。 2 給定文法A→bA|ca,為該文法句子的是( )。A. bbaB. cabC. bcaD. Cba 3 設有文法G[S]:S->S1|S0|Sa|Sc|a|b|c,下列符號串中是該文法的句子有( )。A. ab0B. a0b01C. a0b0aD. bc10 4 文法G產生的( )的全體是該文法描述的語言。A. ...
繼續訪問
c語言lr分析器的設計與實現_[源碼和文檔分享]基於LR分析法的簡單分析法...
通過設計、編制、調試一個簡單計算器程序,加深對語法及語義分析原理的理解,並實現詞法分析程序對單詞序列的詞法檢查和分析。 二、課程設計內容及步驟 本次課程設計需要使用 LR 分析法完成簡單計算器的設計,其中算術表達式的文法如下: ...
C語言實現編譯原理的LR分析法,編譯原理LR(0)分析器(C語言).pdf
1LR 分析法 LR LR 「 分析法是一種自底向上進行的規范規約的語法分析方法, 指 自左向 右掃描和自底向上進行歸約」。LR 分析法的一個主要缺點是,若用手工構造分析 LR 器則工作量相當大,因此必須求助於自動產生 分析器的產生器。
編譯原理 第三章 詞法分析
1、詞法分析器的輸出結果是單詞的種類編碼和自身值 2、詞法分析器不能發現括弧不匹配 3、不存在語言能被確定的有窮自動機識別但不能用正則表達式表示 4、兩個有窮自動機等價實質它們的所識別的語言相等 5、詞法分析器用於識別單詞 6、正則表達式R1和R2等價是指R1和R2代表同一正則集 7、已知文法G[S]:S->A1, A->A1|S0|0,與G等價的正規式是0(1|10)^1 8、與(a...
繼續訪問
【編譯原理-練習題-1】概述部分與詞法分析部分選擇,填空,判斷,多選題
一、單項選擇題 1.構造編譯程序應掌握 (D ) 。 a. 源程序 b. 目標語言 c. 編譯方法 d. 以上三項都是 2.編譯程序絕大多數時間花在 (D) 上。 a. 出錯處理 b. 詞法分析 c. 目標代碼生成 d. 表格管理 3.DFA M(見圖1-1)接受的字集為(D ) 。 a. 以0開頭的二進制數組成的集合 b. 以0結尾的二進制數組成的集合 ...
繼續訪問
LR中用C語言比較兩個字元串變數_花露絲雨的博客
6.lr_save_string( "We can see the string:nancy","string1" ); 7.lr_save_string( "We can see the string:nancy","string2" ); 8.lr_output_message("the string1 is %s.",lr_eval_string("{string1}")); ...
c語言字元串變數的比較,LR中用C語言比較兩個字元串變數.doc_夢符佳月...
LR中用C語言比較兩個字元串變數 Zee的早期文檔.一:以下腳本,定義兩個一樣的字元數組,對比後,列印出result的值: vuser_init() { int result; ? ???char string1[] = "We can see the string:zee"; ...
最新發布 編譯原理刷題(個人向)
編譯原理刷題
繼續訪問
【編譯原理】課後習題
1.構造編譯程序應掌握:源程序、目標語言、編譯方法 2.編譯程序絕大多數時間花在表格管理上 3. 4.一個程序是正確的,包括兩層含義:一是書寫正確;二是含義正確 (合乎語法規則、合乎語義規則) 5.描述高級語言語法常用的方法有語法樹、BNF範式、擴充的BNF範式等 6.程序語言一般可以分為低級語言和高級語言兩大類,其中低級語言通常又稱為面向機器的語言。面向機器語言指的是特定計算機系統所...
繼續訪問
C語言實現編譯原理的LR分析法,實驗三編譯原理綜合實驗報告——(LR...
注意:本例是利用LR(0)分析來實現的語法分析,同學在寫實驗報告的時候,在結果分析這一塊可以選用課堂講過的LR(0)文法來說明驗證結果即可。 同時附上你所選用的文法對應的LR(0)分析表。
編譯原理總結,看這一篇就夠了!_LeeDuo.的博客_編譯原理
1.詞法分析:對源程序的字元串進行掃描和分解,識別出每個單詞符號。 2.語法分析:根據語言的語法規則,把單詞符號分解成各類語法單位。 3.語義分析與中間代碼生成:對各種語法范疇進行靜態語義檢查,若正確則進行中間代碼翻譯。 4.代碼優化:...
C語言LR(1)文法
用C語言編寫,對一個LR(1)文法分析,文法為:實現兩個數的加減乘除四則運算。並能得出計算結果。
熱門推薦 編譯原理習題(含答案)——3詞法分析——哈工大陳鄞配套版本
詞法分析1 詞法分析器的輸出結果是( )。A. 單詞自身值B. 單詞在符號表中的位置C. 單詞的種別編碼 D. 單詞的種別編碼和自身值2 詞法分析器不能( )。A. 識別出數值常量B. 過濾源程序中的注釋C. 掃描源程序並識別記號D. 發現括弧不匹配 3 ( )這樣一些語言,它們能被確定的有窮自動機識別,但不能用正則表達式表示。A. 存在B. 不存在C. 無法判定是否存在D. 以上答案都不對 4 ...
繼續訪問
C--編譯器:C--編譯器,實現LL(1)\ LR(0)\ SLR \ LR(1)並生成語義分析和MIPS
實現了自製的C--語言的一遍掃描編譯,包括詞法分析,LR(1)語法分析,屬性文法+中間代碼生成,MIPS編譯生成編譯腳本由python實現,兼容python2.7與3.7,圖形界面由WPF實現,使用了IronPython進行腳本執行 支持以下特性: 一種基本類型int 賦值表達式,循環/選擇/判斷/跳出語句 函數定義與函數調用 未實現: 浮點數,字元,字元串 斑點 錯誤檢查
編譯原理之LR(0)分析演算法的c實現
LR(0)分析器的構造演算法如下: 對一個文法構造了它的LR(0)分析表後就可以在LR分析器的總控程序(驅動程序)控制下對輸入串進行分析,即根據輸入串的當前符號和分析棧的棧頂狀態查找分析表應採取的動作,對狀態棧和符號棧進行相應的操作即移進、歸約、接受或報錯。具體說明如下: (1)若ACTION[S,a]=Sj,a為終結符,則把a移入符號棧,j移入狀態棧; (2)若ACTION[S,a]=rj,
繼續訪問
編譯原理第一章自測題
第一章 高級語言與編譯程序概述 一、單項選擇題 1.將編譯程序分成若干個「遍」是為了____ 。 A. 提高程序的執行效率 B. 使程序的結構更加清晰 C. 利用有限的機器內存並提高機器的執行效率 D. 利用有限的機器內存但降低了機器的執行效率 2.構造編譯程序應掌握 ____ 。 A. 源程序 B. 目標語言 C. 編譯方法 D. 以上三項都是 3.編譯程序絕大多數時間花在 ____ 上。 A. 出錯處理 B. 詞法分析 C. 目標代碼生成 D. 管理表格
C語言語法分析程序(編譯原理:LR)
北郵大三編譯原理課程序 注釋很詳細
用c++實現LR語法分析器
通過LR分析表及三個棧形成對輸入表達式的判斷! 。
c語言lr文法還是ll文法,編譯原理第五章語法分析課後題
(先補到這里,後面如果有需要的話,垃圾博主還會回來繼續更的。。。)5.1 遞歸子程序法屬於()語法分析方法A. 自頂向下B. 自底向上C. 自左向右D. 自右向左5.2 採用確定的自頂向下分析時,必須()A. 消除左遞歸B. 消除右遞歸C. 避免回溯D. 提取左公因子5.3 自上而下語法分析的主要分析動作是A. 推導B. 移進C. 歸約D. 匹配5.4 一個字元屬於FOLLOW(S),這個字元的含...
繼續訪問
編譯原理,C語言實現LR(0)分析(擴展文法的生成、項目集規范簇的生成、ACTION GOTO表的生成、句子的分析)
編譯原理,C語言實現LR(0)分析(擴展文法的生成、項目集規范簇的生成、ACTION GOTO表的生成、句子的分析) (1)根據提示輸入文法的個數 (2)輸入文法 (3)擴展文法的生成、項目集規范簇的生成、ACTION GOTO表的生成 (3)分析句子 (4)生成分析過程 C語言實現LR(0)分析源代碼
繼續訪問
編譯程序基本原理
編譯程序和解釋程序 人們利用高級語言與計算機進行交互, 但計算機仍然只能理解和執行由 0, 1序列構成的機器語言, 因此高級程序設計語言需要翻譯, 擔負這一任務的程序稱為"語言處理程序", 由於應用的不同, 語言之間的翻譯也是多種多樣的. 大致可分為 匯編程序、解釋程序和編譯程序. 用某種高級語言或匯編語言編寫的程序稱為 源程序, 源程序不能直接在計算機上執行. 如果源程序是用匯編語言寫的, ...
繼續訪問
LR腳本用戶自定義C語言函數
LR腳本實戰:用戶自定義C語言函數 Loadrunner可以使用標准C語言的函數,因此我們可以在腳本中編寫自己的函數用於調用,把腳本結構化,更好的進行重用。 先看一個例子: Action() { int i,j; j = 1; for (i=0;i<10;i++) { lr_message("i+j=%d",sum(i,j)); j++; } ...
繼續訪問
編譯原理,第一章緒論
編譯過程和編譯程序結構 五個階段: 詞法分析 語法分析 語義分析和中間代碼生成 優化 目標代碼生成 編譯程序的開發 自編譯:用某種高級語言編寫自己的編譯程序稱為自編譯, 交叉編譯:用A機器上的編譯程序來產生可在B機器上運行的目標代碼 自展:首先確定一個非常簡單的核心語言L0,然後用機器語言或者匯編語言寫出它的編譯程序T0,再把語言L0擴充到L1,用L0編寫L1的編譯程序T1,這樣不斷擴展下去...
繼續訪問
c語言是 ll文法和lr文法哪個好
c語言lr文法還是ll文法
寫評論
評論
收藏
點贊
踩
分享
D. 如何學習編譯原理
編譯原理是本科計算機課程中最難的一門了,因為它實在是太抽象了,而且學過之後很容易忘記,但是它又是非常重要的一門課程,起到了承上啟下的作用。
學習編譯原理,不要死看課本,課本都是翻譯國外的,讀起來有點吃力。結合習題是比較好的,可以理解一些概念。
另外,可以用lex和yacc實現一個詞法分析器和語法分析器,如果這兩個實驗跑通了,對你學習編譯原理的學習非常有幫助。
E. 什麼是編譯原理
問題一:什麼是編譯原理 編譯:就是將程序語言進行翻譯,生成可供用戶直接執行的二進制代碼,即可執行文件。
任務是個比較模糊的概念,指的是操作系統中正在進行的工作,既可以指進程,也可以指程序春坦灶。
程序指的是可以連續執行,並能夠完成一定任務的一條條指令的 *** 。
進程是程序在一個數據 *** 上運行的過程,它是傳統操作系統進行資源分配和調度的一個獨立單位。
線程是一個指令執行序列,是操作系統調度的最小單位。一個或多個線程構成進程,構成一個進激的線程之間共享資源。進程和線程之間的最大區別就是線程不能獨立擁有資源,進程擁有自己的資源。
問題二:編譯原理中V*是什麼意思 V是一個符號 *** ,假設V指的是三個符號a, b, c的 *** ,記為 V = {a, b, c }
V* 讀作「V的閉包」,它的數學定義是V自身的任意多次自身連接(乘法)運算的積,也是一個 *** 。
也就是說,用V中的任意符號進行意多次(包括0次)連接,得到的符號串,都是V*這個 *** 中的元素。
0次連接的結果是不含任何符號的空串,記為 ε
1次連接就是只有一個符號的符號串,比如,a,b, c
2次連接是兩個符號構成的符號串,比如,aa, ab, ac, ba, bb, bc,等等
……
n次連接是一個長度為n、由a、b、c三個符號構成的符號串,比如abaacbbac……
因此,V*包含一切由a,b,c三個符號連接而成的、任意長度的符號串(以及空串ε)
問題三:編譯原理 V+什麼意思,例如下面的例子。。。 v表示終結符和非終結符 *** 。
+表示 *** 中的一個或多個元素構成的串的 *** 。
所以v+表示由一個或多個終結符或非終結符構成的串的 *** 。比如如果a∈VT,A∈VN,那麼a,A,aA,Aa,aAA,AaA等都是v+中的元素。
問題四:誰能夠解釋下編譯原理中什麼是FIRSTVT,和LASTVT,盡量淺顯易懂點謝謝 Firstvt和Lastvt是為了畫算符優先關系表的(就是表裡面填優先大於小於等於的那個)。
然後要注意他們可都是終結符的 *** 。
Firstvt
找Firstvt的三條規則:如果要找A的Firstvt,A的候選式中出現:
A->a.......,即以終結符開頭,該終結符入Firstvt
A->B.......,即以非終結符開頭,該非終結符的Firstvt入A的Firstvt
攻 A->Ba.....,即先以非終結符開頭,緊跟終結符,則終結符入Firstvt
Lastvt
找Lastvt的三條規則:如果要找A的Lastvt,A的候選式中出現:
A->.......a,即以終結符結尾,該終結符入Lastvt
A->.......B,即以非終結符結尾,該非終結符的Lastvt入A的Lastvt
A->.....aB,即先以非終結符結尾,前面是終結符,則終結符入Firstvt
問題五:編譯原理 什麼是語義分析 在編譯原理中,語法規則和詞法規則不同之處在於:規則主要識別單詞,而語法主要識別多個單片語成的句子。詞法分析信孝和詞法分析程序:詞法分析階段是編譯過程的第一個階段。這個階段的任務是從左到右一個字元一個字元地讀入源程序,即對構成源程序的字元流進行掃描然後根據構詞規則識別單詞(也稱單詞符號或符號)。詞法分析程序實現這個任務。詞法分析程序可以使用lex等工具自動生成。語法分析(Syntax *** ysis或Parsing)和語法分析程序(Parser) 語法分析是編譯過程的一個邏輯階段。語法分析的任務是在詞法分析的基礎上將單詞序列組合成各類語法短語,如「程序」,「語句」,「表達式」等等.語法分扒扮析程序判斷源程序在結構上是否正確.源程序的結構由上下文無關文法描述.語義分析(Syntax *** ysis) 語義分析是編譯過程的一個邏輯階段. 語義分析的任務是對結構上正確的源程序進行上下文有關性質的審查, 進行類型審查.語義分析將審查類型並報告錯誤:不能在表達式中使用一個數組變數,賦值語句的右端和左端的類型不匹配.
問題六:編譯原理中,(E)是什麼意思? E→(E)? 10分 就是 字元本身 意思是F產生( E ) 或者 i 比如If語句的開頭 就是 帶括弧的 必須是 if(表達式)這樣的形式 丟了任何即括弧就是其 終結符 「(」 和 「)」.
問題七:大家覺得對編譯器及編譯原理需要掌握到一個什麼程度 我跟你說,編譯原理太有用了。
我是做手機游戲的,現在做一個游戲引擎。既然是引擎,就需要提供抽象的東西給上層使用。這里,我引入了腳本系統。
這個腳本系統包括一堆我根據實際需求自行設計的指令集,包括基本的輸入輸出,四則運算,系統功能調用,函數聲明,調用等等(其實你要是用過lua或者其他游戲腳本你就知道了。)整個結構包括指令集、編譯器、虛擬機等部分。這樣,引擎提供一些基礎服務,比如繪圖,計算位置等,腳本就可以非常簡單控制游戲。甚至快速構建新游戲。你應該知道QUAKE引擎吧?
這里提供給你一個計算器的小程序,應用了EBNF理論,支持表達式,比如(2+3*6)*4+4,你自己體驗一下它的簡潔和強大。
/*
simple integer arithmetic calculator according to the EBNF
-> {}
->+|-
->{}
-> *
-> ( )| Number
Input a line of text from stdin
Outputs Error or the result.
*/
#include
#include
#include
char token;/*global token variable*/
/*function prototypes for recursive calls*/
int exp(void);
int term(void);
int factor(void);
void error(void)
{
fprintf(stderr,Error\n);
exit(1);
}
void match(char expectedToken)
{
if(token==expectedToken)token=getchar();
else error();
}
main()
{
int result;
token = getchar();/*load token with first character for lookahead*/
result = exp();
if(token=='\n')/*check for end of line */
printf(Result = %d\n,result);
else error();/*extraneous cahrs on line*/
return 0;
}
int exp(void)
{
int temp = term();
while((token=='+')||(token=='-'))
switch(token)
{
case '+':
match('+');
temp+=term......>>
問題八:編譯原理中,自動機究竟是什麼. 形式語言
形式語言 是一個字母表上的某些有限長字串的 *** 。一個形式語言可以包含無限多個字串。
語言的形式定義
字母表 ∑ 為任意有限 *** ,ε 表示空串, 記 ∑ 0 為{ε},全體長度為 n 的字串為 ∑ n , ∑ * 為 ∑ 0 ∪∑ 1 ∪…∪∑ n ∪…, 語言 L 定義為 ∑ * 的任意子集。
注記:∑ * 的空子集 Φ 與 {ε} 是兩個不同的語言。
語言間的運算
語言間的運算就是 ∑ * 冪集上的運算。
字串 *** 的交並補等運算。
連接運算:L 1 L 2 = { xy | x 屬於L 1 並且 y 屬於L 2 }。
冪運算:L n = L … L (共 n 個 L 連接在一起),L 0 = {ε}。
閉包運算:L * = L 0 ∪L 1 ∪…∪L n ∪…。
(右)商運算:L 1 /L 2 = {x | 存在 y 屬於L 2 使得 xy 屬於L 1 }。
語言的表示方法
一個形式語言可以通過多種方法來限定自身,比如:
枚舉出各個字串(只適用於有限字串 *** )。
通過 形式文法 來產生(參見 喬姆斯基譜系 )。
通過正則表達式來產生。
通過某種自動機來識別,比如 圖靈機 、 有限狀態自動機 。
自動機
automata
對信號序列進行邏輯處理的裝置。在自動控制領域內,是指離散數字系統的動態數學模型,可定義為一種邏輯結構,一種演算法或一種符號串變換。自動機這一術語也廣泛出現在許多其他相關的學科中,分別有不同的內容和研究目標。在計算機科學中自動機用作計算機和計算過程的動態數學模型,用來研究計算機的體系結構、邏輯操作、程序設計乃至計算復雜性理論。在語言學中則把自動機作為語言識別器,用來研究各種形式語言。在神經生理學中把自動機定義為神經網路的動態模型,用來研究神經生理活動和思維規律,探索人腦的機制。在生物學中有人把自動機作為生命體的生長發育模型,研究新陳代謝和遺傳變異。在數學中則用自動機定義可計算函數,研究各種演算法。現代自動機的一個重要特點是能與外界交換信息,並根據交換得來的信息改變自己的動作,即改變自己的功能,甚至改變自己的結構,以適應外界的變化。也就是說在一定程度上具有類似於生命有機體那樣的適應環境變化的能力。
自動機與一般機器的重要區別在於自動機具有固定的內在狀態,即具有記憶能力和識別判斷能力或決策能力,這正是現代信息處理系統的共同特點。因此,自動機適宜於作為信息處理系統乃至一切信息系統的數學模型。自動機可按其變數集和函數的特性分類,也可按其抽象結構和聯結方式分類。主要有:有限自動機和無限自動機、線性自動機和非線性自動機、確定型自動機和不確定型自動機、同步自動機和非同步自動機、級聯自動機和細胞自動機等。
這可能有你想要的答案
./question/7218281?fr=qrl3
問題九:編譯原理中"(E)"表示什麼 字元( 表達式 字元)