當前位置:首頁 » 編程軟體 » 編譯原理練習336

編譯原理練習336

發布時間: 2023-07-04 16:14:08

『壹』 哪本"編譯原理"的書比較好

我們學校用的是《編譯原理》與《編譯原理與實踐》這兩本書,這兩本書都是國外的教材。我覺得《編譯原理與實踐》這本書不錯,自學應該能看懂,而且代碼比較多,書最後還有整個小型編譯器的源代碼。
編譯不好學,你就慢慢學吧。

下面的資料請作參考:

當代編譯技術三大聖經級別的教材

1.龍書(Dragon book)
書名是Compilers: Principles,Techniques,and Tools
作者是:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman

內容簡介
《編譯原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的計算機 科學家,他們在計算機科學理論、資料庫等很多領域都做出了傑出貢獻。《編譯原理》 是編譯領域無可替代的經典著作,被廣大計算機專業人士譽為「龍書」。《編譯原理》一 直被世界各地的著名高等院校和科研機構(如貝爾實驗室、哥倫比亞大學、普 林斯頓大學和斯坦福大學等)廣泛用作本科生和研究生編譯原理與技術課程的 教材,《編譯原理》對我國計算機教育界也具有重大影響。 書中深入討論了編譯器設計的重要主題,包括詞法分析、語法分析、語法制 導分析、類型檢查、運行環境、中間代碼生成、代碼生成、代碼優化等,並在 最後兩章中討論了實現編譯器的一些編程問題和幾個編譯器實例,而且每章都 提供了大量的練習和參考文獻。

與上一版相比,《編譯原理》第二版進行了全面的修訂,涵蓋了編譯器開發方面的最新進展。每章中都提供了大量的系統及參考文獻。《編譯原理》是編譯原理課程方面的經典教材,內容豐富,適合作為高等院校計算機及相關專業本科生及研究生的編譯原理課程的教材,也是廣大技術人員的極佳參考讀物。

作者簡介
Alfred V.Aho,美國歌倫比亞大學教授,美國國家工程院院士,ACM和IEEE會士,曾獲得IEEE的馮·諾伊曼獎。著有多部演算法、數據結構、編譯器、資料庫系統及計算機科學基礎方面的著作。
Monica S.Lam,斯坦福大學計算機科學系教授,曾任Tensilica的首席科學家,也是Moka5的首任CEO。曾經主持SUIF項目,該項目產生了最流行的研究用編譯器之一。
Ravi Sethi,Avaya實驗室總裁,曾任貝爾實驗室高級副總裁TLucent Technologies通信軟體的CTO。他曾在賓夕法尼亞州立大學、亞利桑那州立大學和普林斯頓大學任教,是ACM會士。
Jeffrey D.Ullman斯坦福大學計算機科學系教授和Gradiance CEO,他的研究興趣包括資料庫理論、資料庫集成、數據挖掘和利用信息基礎設施教學等。他是美國國家工程院院士、IEEE會士,獲得過ACM的KarIstrom傑出教育家獎和Knuth獎。
第一版中文版
第二版中文版

2.鯨書(Whale book)
書名是:Advanced Compiler Design and Implementation
作者是:Steven S.Muchnick

內容簡介
本書迎接現代語言和體系結構的挑戰,幫助讀者作好准備,去應對將來要遇到的編譯器設計的問題。
本書涵蓋現代微處理器編譯器的設計和實現方面的所有高級主題。本書從編譯設計基礎領域中的高級問題開始,廣泛而深入地闡述各種重要的代碼優化技術,分析各種優化之間的相對重要關系,以及實現這些優化的最有效方法。
本書特點
●為理解高級編譯器設計的主要問題奠定了基礎
●深入闡述優化問題
●用Sun的SPARC、IBM的POWER和PowerPC、DEC的Alpha以及Intel的Pentium和相關商業編譯 器作為案例,說明編譯器結構、中間代碼設計和各種優化方法
●給出大量定義清晰的關於代碼生成、優化和其他問題的演算法
●介紹由作者設計的以清晰、簡潔的方式描述演算法的語言ICAN (非形式編譯演算法表示)。

本書是經典的編譯器著作,與「龍書」齊名,稱為鯨書。書中針對現代語言和體系結構全面介紹了編譯器設計與實現的高級論題,從編譯器的基礎領域中的高級問題開始,然後深入討論了各種重要的代碼優化。本書專為編譯器專業人士和計算機專業本科生,研究生編寫,在設計和實現高度優化的編譯器以及確定優化的重要性和實現優化的最有效的方法等方面,為讀者提供了非常有價值的指導。

作者簡介
Steven S.Muchnick,曾是計算機科學教授,後作為惠普的PA-RISC和SUN的SPARC兩種計算機體系結構的核心開發成員,將自己的知識和經驗應用於編譯器設計,並擔任這些系統的高級編譯器設計與實現小組的領導人。他在研究和開發方面的雙重經驗,對於指導讀者作出編譯器設計決策極具價值。

3.虎書(Tiger book)
書名是:Modern Compiler Implementation in C /Java /ML,Second Edition
作者是:Andrew W.Appel,with Jens Palsberg

內容簡介
《現代編譯原理——c語言描述(英文版)/圖靈原版計算機科學系列》全面講述了現代編譯器的各個組成部分,包括:詞法分析、語法分析、抽象語法、語義檢查、中間代碼表示、指令選擇、數據流分析、寄存器分配以及運行時系統等。與大多數編譯原理的教材不同,《現代編譯原理——C語言描述(英文版)/圖靈原版計算機科學系列》採用了函數語言和面向對象語言來描述代碼生成和寄存器分配,對於編譯器中各個模塊之間的介面都給出了實際的 C 語言頭文件。 全書分成兩部分,第一部分是編譯的基礎知識,適用於第一門編譯原理課程(一個學期);第二部分是高級主題,包括面向對象語言和函數語言、垃圾收集、循環優化、 SSA(靜態單賦值)形式、循環調度、存儲結構優化等。
本書是一本著名的編譯原理課程的教材。國際上眾多名校均採用本書作為編譯原理課程的教材,包括美國麻省理工學院、加州大學伯克利分校、普林斯頓大學和英國劍橋大學等。本書在國外享有「虎書」的稱號,與有「龍書」之稱的《編譯原理》(Alfred Aho 等編著)齊名。與編譯原理方面的其他名著相比,本書出版時間晚,內容新。 書中專門為學生提供了一個用 C 語言編寫的實習項目,包括前端和後端設計,學生可以在一學期內創建一個功能完整的編譯器。

作者簡介
Andrew W.Appel,美國普林斯頓大學計算機科學系教授,第26屆ACM SIGPLAN-SIGACT程序設計原理年會大會執行主席,1998-1999年在貝爾實驗室做研究工作。主要研究方向是計算機安全、編譯器設計、程序設計語言等。

『貳』 菜鳥如何學習計算機編程如何快速學習計算機編程

菜鳥如何學習計算機編程?如何快速學習計算機編程?學習任何一種技術最好的方法就是練習,練習,練習。那些最優秀的程序員都深深的享受編程的過程,編程是一件讓他們干起來無由的高興的事情。也因此他們大量的編程。作為一名職場菜鳥如何學習計算機編程並快速學習計算機編程技術呢?

編程是操作性很強的一門知識,看書少不了,但只有學習和實踐相結合才能起到很好的效果,一種學習方法是看書->研究書中例子->自己做些東西->網上找資料->看書。到實際操作時我們該怎麼學?

編程語言的教程各種平台上都有很多介紹,也有各種推薦,建議多看一些推薦,每個人都推薦的效果應該不錯。

研返哪究經典教程是學習許多知識的重要方法,但看書一定要看透,學C語言時一直看到所有C的入門書籍都沒瞎友有新語法。非科班出生最好先閱讀一些計算機原理和基礎知識方面的書磨世槐籍,利於以後各種知識的融會貫通。

計算機導論類:

計算機科學技術導論》、《深入理解計算機系統》、《現代操作系統》、《資料庫系統概念》、《數據結構》、《編譯原理》

C語言:《CPrimerPlus》《C程序設計語言》《C語言程序設計:現代方法》《C陷阱與缺陷》作者凱尼格《編程精闢》作者SteveMaguire《TheCprogramminglanguage》

《C++Primer》

本書對C++基本概念、技術、以及現代C++編程風格進行了全面而且權威的闡述,是C++初學者的最佳指南;本書可以幫助你編寫實用的程序,而無需首先精通每個語言細節。對於中高級程序員,本書也是不可或缺的參考書。

《EssentialC++》內容不多但很實用的C++入門書籍,強調快速上手與理解C++編程。本書主要圍繞一系列逐漸復雜的程序問題,以及用以解決這些問題的語言特性展開講解:

第一階段:《EffectiveC++》和《MoreeffectiveC++》

作者是ScottMeyers。你應該熟讀它們,並清楚地理解每個項目。該書圍繞55條准則,每一條都介紹了一個可讓你寫出更好的C++程序代碼的方法,並以特別設計過的例子詳加討論。

第二階段:《ExceptionalC++(C++編程剖析)》和《MoreexceptionalC++》

這兩本書中都包含了40個C++編程問題,這些問題會讓你磨練自己的技能,最終成為優秀的C++程序員。這些問題是HerbSutter精心挑選,與ISO/ANSIC++官方標准相一致,幫助程序員在設計、架構和編碼過程中保持良好的風格,從而使編寫的C++軟體更健壯、更高效。

第三階段:《InsidetheC++objectmodel(深度探索C++對象模型)》

本書專注於C++面向對象程序設計的底層機制,包括結構式語意、臨時性對象的生成、封裝、繼承,以及虛擬——虛擬函數和虛擬繼承,幫助你理解程序的底層實現,以便寫出更高效的代碼。《ThedesignandevolutionofC++(C++語言的設計與演化)》

現在程序員工資差異很大,有能力的程序員享受高薪,但只是略懂的偽程序員可能找不到工作,如果想靠敲代碼生存生活,就在興趣的基礎上認真學習。

菜鳥如何學習計算機編程?如何快速學習計算機編程?語言只是工具而已,假以時日,每個程序員都能熟練掌握一門甚至多門語言,也會隨著技術的發展學習最新、最方便的新語言,相比語言解決問題的思路和方法更為重要。但作為初學者,C和python是最被認可適合初學者的編程語言,但由於它們自身的特點,這兩種語言也有一定程度上的對立性,當然其它語言也有被選擇的理由。

『叄』 c++線上的編程練習的網站有哪些

這個應該很多的,比如牛客網,還有leetcode很多的,多看看網路知道,選C++標簽什麼的,還有各種論壇應該也有一堆。如果真的想深入學習的話 可以下載一些c++的pdf電子書來看看
經典書籍《c++ primer》《演算法導論》《編譯原理》.....下面是一些網站:

  1. Welcome To PKU JudgeOnline北京大學的Online Judge。POJ上面的題目有點老了,但好處是做的人多,經典演算法題多,解題報告也多,適合上手。

    2.ZOJ : Home浙江大學的Online Judge。ZOJ用的不多,但為數不多的幾次體驗好像都還可以,值得嘗試。

    3. Welcome to Hangzhou Dianzi University Online Judge杭州電子科技大學的OJ。杭電OJ在近幾年取代了POJ,成為是目前國內最主流的OJ。它的題目豐富,難度梯度合理,廣受全國各大高校的青睞。每年也會有大大小小的比賽掛在杭電的OJ上舉辦,去年的亞洲區網路賽也是在這上面做的。由此可見其在國內廣大ACMer心目中的地位。也正因為如此,網上h的解題報告也很多,適合個人進階訓練。

    4. UVa Online Judge西班牙Valladolid大學的Online Judge。是最古老也是全世界最知名的Online Judge,題庫有詳細的分類:如世界總決賽題目,劉汝佳的題目等等。題目目類型非常廣泛。絕大部分的題目難度偏易,適合初學者磨練程序設計。

    5.Timus Online JudgeURAL是一個俄羅斯的在線題庫。裡面的題目相比國內一些OJ來說頗有些難度,我們學校集訓隊老隊員喜歡拿這里的題出給新隊員做,可見有一定的進階作用。

    6.Sphere Online Judge (SPOJ)SPOJ是波蘭最為出色的Online Judge之一,界面和諧,題目類型也非常豐富,適合有一定基礎的選手練習,對高手而言也是個提高能力的良好平台。更多介紹見博客:SPOJ簡介 - 海山。

    7.USA Computing OlympiadUSACO是美國中學生的官方競賽網站、美國著名在線題庫,專門為信息學競賽選手准備;做題方式模擬正式比賽,採用標准測評機、文件輸入輸出、直接提交程序源文件的測評方式;網站的Training題目全面,是學習信息學不可不知的網站,每年NOI,NOIP都會參考上面的題目;每道題附有詳細題解,可查看測試數據和運行結果,便於調試、發現錯誤並改正。採用章節遞進的層次結構,由易到難,講授知識、練習編程結合,題目必須依次完成,避免了只挑簡單題做的行為;各章節猶如一本競賽輔導書,形成了一個鮮明的知識結構,利於OI初學者和高手逐步提高水平,充分學習信息學各方面知識,避免偏頗。(來源:usaco_網路)

    8.Saratov State University :: Online Contester之前上SGU一直是404,所以不敢貼上來。現在親測能上了就也放上來給大家看看吧。這個是貨真價實的樓教主刷完的OJ。樓教主為什麼要刷這個OJ而不刷這個回答里的其他OJ呢?因為這個OJ確實適合提升水平,應該跟Ural, SPOJ的難度相當。另外就不太了解了,在我心目中,SGU, Ural, SPOJ都適合區域賽沖金以及畢業想去Google等頂級公司的ACMer/Coder訓練,三者區別不大。

    9.CodeforcesCodefores是俄羅斯的一個演算法競賽網站,由Saratov State University創辦和維護。Codeforces主要強調的是演算法競賽,每隔1個禮拜左右就會有定期的線上比賽舉行,其題庫也是由每場比賽的題目一場場積累下來的。相比上面幾個以題庫為核心的OJ,Codeforces的演算法競賽比較適合鍛煉自己的臨場發揮和壓力下編程能力。

    10.HUSTOJ華中科技大學的Online Judge。hustOJ也和主流的其他OJ一樣有著豐富的題庫。但它主要的用處,是它所提供的這么一個叫做vjudge的東西,全稱叫做Virtual Judge。通過vjudge,你可以從各大OJ、包括但不限於上述的所有OJ中直接抽取題目,利用這些題目創建一個屬於你自己的比賽。非常適合專題訓練、日常集訓以及小夥伴們一起比賽切題玩。

    11. LeetCode Online Judge與很多OJ不同,leetcode是一個主要面向面試者的OJ (LeetCode OJ is a platform for preparing technical coding interviews)。上面的題目不多,目前只有152道,很多都是許多大公司的面試題目。題目類型偏基礎,基本不會考察復雜的演算法,很多都是對基礎知識的應用,難度與topcoder div1 250或codeforces div1 A題難度相當。如果是希望練習編程基礎或准備公司面試的話非常推薦此OJ(感謝室友/集訓隊大神/CMU准碩士@yun peng同學提供Leetcode介紹 (1/1/2015更新:室友拿了google的offer不去CMU了))。

希望可以幫到您,謝謝!

『肆』 求《編譯原理考研輔導教程》全文免費下載百度網盤資源,謝謝~

《編譯原理考研輔導教程》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1d6s5KhHw8Ru3mccYMac7ZA

?pwd=mpkd 提取碼:mpkd
簡介:本書由在全國知名高校長期從事編譯原理課程教學工作的資深教師編寫,書中匯集了近年來全國眾多知名高校計算機專業研究生入學考試常見考試知識點和經典試題解析,提供了豐富的典型題例與實戰練習,十分難得的是本書包含了國內50多所知名高校的編譯原理研究生入學試題,此外還提供了兩套模擬試題及參考答案。本書是幫助讀者在最短時間內成功考研的「利器」,是考生順利通過考試強有力的保障。本書從實際考試的角度出發,對本課程考試重點、難點問題進行了詳細解析,書中所有題例、名校試題及練習都配有參考解答。

『伍』 誰能夠解釋下編譯原理中什麼是FIRSTVT,和LASTVT,盡量淺顯易懂點謝謝

給你COPY一個看管用不,雖然不懂你在問什麼...

算符優先分析 [上一節] [下一節]

5.2.1 算符優先文法及其優先表構造

一個文法,如果它的任一產生式的右部都不含兩個相繼(並列)的非終結符,即不含如下形式的產生式右部:

…QR…

則我們稱該文法為算符文法。

在後面的定義中,a、b代表任意終結符;P、Q、R代表任意非終結符;『…』代表由終結符和非終結符組成的任意序列,包括空字。

假定G是一個不含e-產生式的算符文法。對於任何一對終結符a、b,我們說:

1. a�6�7b當且僅當文法G中含有形如P→…ab…或P→…aQb…的產生式;

2. a�6�3b當且僅當G中含有形如P→…aR…的產生式,而Rb…或RQb…;

3. a�6�4b當且僅當G中含有形如P→…Rb…的產生式,而R…a或R…aQ。

如果一個算符文法G中的任何終結符對(a,b)至多隻滿足下述三關系之一:

a�6�7b,a�6�3b, a�6�4b

則稱G是一個算符優先文法。

現在來研究從算符優先文法G構造優先關系表的演算法。

通過檢查G的每個產生式的每個候選式,可找出所有滿足a�6�7b的終結符對。為了找出所有滿足關系�6�3和�6�4的終結符對,我們首先需要對G的每個非終結符P構造兩個集合FIRSTVT(P)和LASTVT(P):

FIRSTVT(P)={a | Pa…或PQa…,a�0�2VT而Q�0�2VN}

LASTVT(P)={a | P…a或P…aQ,a�0�2VT而Q�0�2VN}

5.2.2 算符優先分析演算法

所謂素短語是指這樣的一個短語,它至少含有一個終結符,並且,除它自身之外不再含任何更小的素短語。所謂最左素短語是指處於句型最左邊的那個素短語。如上例,P*P和i是句型P*P+i的素短語,而P*P是它的最左素短語。

現在考慮算符優先文法,我們把句型(括在兩個#之間)的一般形式寫成:

#N1a1N2a2…NnanNn+1# (5.4)

其中,每個ai都是終結符,Ni是可有可無的非終結符。換言之,句型中含有n個終結符,任何兩個終結符之間頂多隻有一個非終結符。必須記住,任何算符文法的句型都具有這種形式。我們可以證明如下定理(證明留給有興趣的讀者作練習):

一個算符優先文法G的任何句型(5.4)的最左素短語是滿足如下條件的最左子串Njaj…NiaiNi+1,

aj-1�6�3aj

aj�6�7 aj+1,…,ai-1�6�7ai

ai�6�4ai+1

根據這個定理,下面我們討論算符優先分析演算法。為了和定理的敘述相適應,我們現在僅使用一個符號棧S,既用它寄存終結符,也用它寄存非終結符。下面的分析演算法是直接根據這個定理構造出來的,其中k代表符號棧S的使用深度。

5.2.3 優先函數

在實際實現算符優先分析演算法時,一般不用表5.1這樣的優先表,而是用兩個優先函數f和g。我們把每個終結符q與兩個自然數f(q)和g(q)相對應,使得

若q1�6�3q2 則 f(q1)<g(q2)

若q1�6�7q2 則 f(q1)= g(q2) (5.5)

若q1�6�4q2 則 f(q1)>g(q2)

函數f稱為入棧優先函數,g稱為比較優先函數。使用優先函數有兩方面的優點:便於作比較運算,並且節省存儲空間,因為優先關系表佔用的存儲量比較大。其缺點是,原先不存在優先關系的兩個終結符,由於與自然數相對應,變成可比較的了。因而,可能會掩蓋輸入串的某些錯誤。但是,我們可以通過檢查棧頂符號q和輸入符號a的具體內容來發現那些原先不可比較的情形。

如果優先函數存在,那麼,從優先表構造優先函數的一個簡單方法是:

1. 對於每個終結符a(包括#)令其對應兩個符號fa和ga,畫一張以所有符號fa和ga為結點的方向圖,如果a �6�4�6�7b,那麼,就從fa畫一箭弧至gb;如果a�6�3�6�7b,就畫一條從gb到fa的箭弧。

『陸』 用c或c++編寫一個具有計算器功能的程序,要求一次性輸入一行要求算式,輸入「=」輸出結果,有什麼好的思路

可以用2叉樹寫。

定義運算式結構體類型,比如:

typedefstructyunsuan
{
//如果是單一運算,比如1+2,那麼num1=1;num2=2;
intnum1;//左兒子運算符為0的時候直接取該值
intnum2;//右兒子運算符為0的時候直接取該值,為NULL說明只有一個數值運算
structyunsuan*father;//父親:如果上層還有運算式,指向上層
structyunsuan*brother;//兄弟:如果同級還有其他運算式,指向該運算式結構
//如果是復合運算,為其創建左兒子,右兒子,指向兒子,並讓兒子指向父親
structyunsuan*left;//左兒子
structyunsuan*right;//右兒子
charfh;//運算符號
}YS;

根據優先順序解析多運算符的式子,比如2^2+(√4-1)。

從運算順序最低的運算符號開始先找到'+',創建樹頂點結構體,fh='+';father=NULL;brother=NULL;left=(2^2)的結構體;right=(√4-1)的結構體;

(2^2)的結構體:fh='^';num1=2;num2=2;father=最頂端的結構體;brother=(√4-1)的結構體;left=新建節點fh置0;right=新建節點fh置0;

(√4-1)的結構體:fh='-';num2=1;father=最頂端的結構體;brother=(2^2)的結構體;left=√4的結構體;right=新建節點fh置0;

√4的結構體:fh='√';num1=4;father=(√4-1)的結構體;brother=NULL;left=新建節點fh置0;right=NULL;

依次類推,以上只是說明樹形結構建立。

你解析字元串,從運算順序最後的字元開始拆分並創建樹的最頂層節點,然後依次往下建立樹。

最後可以用遞歸函數或循環,遍歷樹各節點進行運算。

『柒』 求助!編譯原理練習題

1、編譯方法中自底向上的語法分析演算法有:簡單優先分析演算法、算符優先分析演算法、SLR方法、LR(K)方法、LALR(K)方法,自頂向下的語法分析演算法有:遞歸子程序法、LL(K)分析算、預測分析方法。
2、詞法分析器的輸入是源程序的字元流,輸出是詞法記號流。
3、等價
4、(a|b)*(aa|bb)(a|b)*

『捌』 如何由文法推導語法樹(編譯原理)

語法樹,是針對上下文無關文法,用來表示一個句型的生成過程的一種描述手段。

對於給定的句型,依據文法構造它的語法樹,是語法分析的任務。
編譯原理課程中重點學習的各種語法分析方法,都是解決語法樹的構造的具體分析方法。

在學習並掌握各種語法分析方法之前,一般只能依據直覺印象,通過猜測、拼湊等手段,去試著推演,湊出符合要求的句型的語法樹。所以這個階段練慣用的題目一般也不很復雜,通過多多練習也能找到一些技巧(其實主要是後面將要學習的自頂向下語法分析中的一些原則)。

對於給定的文法,有一些句型可能能構建出兩棵甚至多棵結構不同的語法樹,結果不一定是唯一的。這樣的文法就是所謂的二義性文法。
對於非二義性文法而言,任意一個句型的語法樹都是唯一的。

『玖』 如何學習C語言

如果剛開始接觸c語言,聽不懂也正常,不要有畏懼的心理,有些小夥伴可能看到部分同學什麼都會,自己就很氣餒,因為這部分同學很可能接觸編程比較早,即使小孩學走路也有一個過程,剛開始有走路慾望->學會站立,腿部有力量->嘗試走路,不斷練習->學會走路。所以不要慌。

學C語言與走路一樣,剛開始一定要有學習的慾望,然後,再制定計劃,不斷練習,量變會引起質變,堅持下去就發現原來這么簡單。

歡迎關注公眾號:c語言與cpp編程,關注後,回復「加群『』進微信學習交流群

1、學習資料

書本推薦:《cprimerplus》難得的好書。老譚的書可看可不看,但是這本藍皮的cprimerplus是我案頭必備的參考書,後面還有完整的c99標准庫,所以適合當個參考書。注意區分一下《c++primer》和《cprimerplus》

如果覺得這幾本書還是有點難,那就先看《C語言程序設計》

有了經驗後要去看看,例子很經典。後來進階可以看看三劍客《c和指針》《c陷阱與缺陷》《c專家編程》

剛學C語言的話可以結合看下C語言編程經典100例;

編譯器:VS,DevC++,VC++,CodeBlocks,C-Free,TurboC。關於它們的特點網上介紹很多了,就不贅述了。講真,入門和基礎階段你用哪個無所謂,還是選自己喜歡的,不過對於初學者我們推薦DevC++。可能現在大學課堂用的還是VC++,剛入門自己習慣就行。

視頻推薦:有同學曾經說過,視頻這么好,上課就不用聽講了,這個是完全錯誤的,視頻是課堂補充,上課還是一定要好好聽講的,視頻可以查缺補漏,系統的學習一下。

上面提到的一些資料整理好了,可以下載:

鏈接:

提取碼:1234

學習方法:

1、過:學習一門新的語言,第一步就是把它所涉及的基礎知識大體過一點,不求深解,只求了解——第一遍:無需了解太過深入的理論,大體知道這門語言是什麼樣的,主要面向哪些場合,一些基本的語法格式是什麼樣的就可以了。

2、抄代碼:剛開始寫代碼,沒有多少人一上來就能立刻自己寫一個很完善很強大的代碼,甚至連基本的語法都會寫錯,這時候抄代碼就很關鍵了,從書上抄,從例子里抄,邊抄邊想,邊想邊回憶語法。

3、模仿改:自己會抄寫一些簡單的代碼,熟悉了一遍此語言的簡單語法後,但還不太清楚怎樣下手寫一個完整的代碼模塊,所以這一步要仿寫了,仿照給出的代碼寫一個屬於自己的代碼

4、勤調試:沒有人能一下子寫出完全正確的代碼,自己試著寫一些代碼,通過不斷調試來驗證自己的一些想法,繼續思考,再次驗證,來回折騰。熟悉一些基本的調試工具以及調試方法。

5、看n遍:出錯或遇到問題時,將代碼從頭看到尾,看了一遍又一遍,直到快全部記住時,總能找出問題原因,相信方法總會比問題多

6、練重復2-5步三遍以上,不解釋。

7、創新拿出一個完全沒有寫過的代碼,根據要求,一步步的寫出來。如果寫不出來,或者中間一堆錯誤,請參考第六步。

8、悟:主動找到寫代碼的感覺和成就感,並保持下去,世界上最難的語言就掌握了,將成為你軟體生涯永遠的工具。

『拾』 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文法
寫評論

評論

收藏

點贊



分享

熱點內容
播放這個wifi密碼是多少 發布:2025-02-07 22:34:54 瀏覽:99
視頻存儲時間長了有雪花 發布:2025-02-07 22:24:34 瀏覽:568
哈佛f7x怎麼區分配置 發布:2025-02-07 22:22:34 瀏覽:771
廣州python培訓 發布:2025-02-07 22:22:26 瀏覽:199
陸金所的交易密碼是什麼 發布:2025-02-07 22:19:25 瀏覽:320
如何刪除平板儲存密碼 發布:2025-02-07 22:10:29 瀏覽:747
php微信授權登錄 發布:2025-02-07 22:10:27 瀏覽:378
怎樣編程時鍾 發布:2025-02-07 21:59:38 瀏覽:562
誇克編程 發布:2025-02-07 21:43:43 瀏覽:530
電源450適合哪些配置 發布:2025-02-07 21:25:24 瀏覽:433