【編譯原理】期末

單選題?(4分)

令文法G[E]為:E->E+T | T ????

? ? ? ? ? ? ? ? ? ? ? ?T->T*F | F

? ? ? ? ? ? ? ? ? ? ? ? F-> (E) | i

句型 F*i+T 的最左素短語是( )

A.F

B.i

C.T

D.F*i

B

短語:

F*i+T、F*i、F、i

素短語:

i

最左素短語:

i

單選題?(4分)

若在C語言程序中出現“aa 11 bb=123;”,且不出現在引號和注釋里,在編譯時會

A.語法分析時報錯

B.語義分析時報錯

C.生成中間代碼時報錯

D.語法分析時報錯

D

單選題?(4分)

活動記錄中靜態鏈的作用是(? )

A.用以實現對非局部名字的訪問

B.用來指向靜態數據區

C.表明過程的嵌套層次

D.建立本過程和主調過程間的聯系

A


嵌套過程語言的程序,內層過程引用非局部量可通過(B )跟蹤外層過程最新活動記錄的位置

A 老SP B 靜態鏈C Previous鏈 D 全局display


靜態鏈的作用是(A)

A.存放過程的直接外層過程最新活動記錄的地址,用以訪問局部數據

B.存放主調過程最新活動記錄的地址,用以建立主被調的聯系

C.存放代碼的返回地址,用以返回主調程序

D.存放靜態數據區的地址,用以訪問靜態數據

表達式(A + B) * (- C - D) 的逆波蘭式是:

A.ABCD+*--

B.AB+CD--*

C.AB+C-D-*

D.AB+-CD-*

C

如果某種程序設計語言設計的程序,其所需數據空間的總量在編譯時是完全確定了的,則最好采用以下哪種存儲分配策略

A.堆式分配策略

B.棧式分配策略

C.靜態分配策略

D.以上都有

C

下面哪種不是自底向上的語法分析文法( ?)。

A.LR(1)

B.SLR(1)

C.LL(K)

D.算符優先法

C

若一個文法是遞歸的,則它產生的句子個數是()

A.無窮個

B.可能有限個,可能無窮個

C.有限個

A

以下關于DFA描述錯誤的是( ? )

A.初態唯一

B.終態唯一

C.轉態轉換函數是單值映射

D.不含標記有空串的轉換弧

B

下面關于編譯方式與解釋方式描述有誤的是(??)

A.編譯方式是先翻譯后執行

B.解釋方式是邊翻譯邊執行

C.在解釋方式下,程序運行時解釋器掌握控制權

D.解釋方式優于編譯方式

D

令文法G[E]為:E->E+T| T

? ? ? ? ?T->T*F| F

? ? ? ? ?F->(E) | i

E+F*(T+i)文法G的一個規范句型,指出這個規范句型的句柄是(? ?)

A.i

B.T

C.T+i

D.F

D

LR分析器的核心部分是一張分析表,這張表包括( ?)

A.預測分析表、轉態轉換表

B.優先關系矩陣、動作表

C.動作表、狀態轉換表

D.內情向量表、符號表

C

局部優化是在什么范圍內進行的優化?

A.過程體

B.函數體

C.基本塊

D.循環體

C

如果文法無二義性,則與規范歸約互為逆過程的是(??)

A.最右歸約

B.最左歸約

C.規范推到

D.最左推導

C

在C語言中,不同過程中的變量名可以相同,這些相同的變量名在符號表中存入同一符號表入口。

遞歸文法的語言是無窮集,程序設計語言的文法通常是遞歸的

中間代碼優化的目的是生成更有效的目標代碼,為了追求高效的目標代碼,優化應不計代價。

“遍”是對源程序或源程序的中間結果從頭到尾掃描一次,并做有關加工處理,生成新的中間結果或目標程序。一個編譯程序所分遍數越多越好。

只能用機器語言編寫編譯程序

過程的活動指該過程的一次執行,在任一時刻,一個過程只可能有一個活動活躍著。( )

如果文法中的某個句型,存在不同的推導序列,則該文法就是二義性文法

反例:存在非二義性文法,其某些?句型?有多個推導序列,但所有?句子?只有一個推導樹。

S → A b | B c
A → a
B → a

  • 句型?S?的推導序列

    • 序列 1:S ? A b

    • 序列 2:S ? B c

    • 句型?S?有兩個不同的推導序列。

  • 句子分析

    • 句子?a b?的唯一推導:S ? A b ? a b

    • 句子?a c?的唯一推導:S ? B c ? a c

    • 所有句子(如?a ba c)都只有唯一語法樹,因此文法?非二義性


句型和句子

句子:僅含終結符的句型

二義性文法的正確定義

  • 一個文法是二義性的,當且僅當存在?至少一個句子(即終結符串),該句子對應:

    • 兩個或更多不同的?最左推導(或等價地,兩個或更多不同的?最右推導),或

    • 兩個或更多不同的?語法樹

  • 關鍵點:二義性必須針對?句子(終結符串)?定義,而不是針對一般的句型(可能包含非終結符)。

現有文法G[S]: S—>a |b | (T)

? ? ? ? ? ? ? ? ? ? ? ? ? T —>S T’

? ? ? ? ? ? ? ? ? ? ? ? ? T’->*ST’|?

則FOLLOW(S)為:( )

A.{#}

B.{#,)}

C.{#,*,)}

D.{*,)}

C

FIRST(S)={a,b,(}

FIRST(T)=FIRST(S)={a,b,(}

FIRST(T')={*,\varepsilon}

FOLLOW(S)={#}\cup?FIRST(T')-\varepsilon?\cup?FOLLOW(T)={#,*,)}

FOLLOW(T)={)}

FOLLOW(T')=FOLLOW(T)={)}

非終結符FOLLOW 集關鍵步驟說明
S{#,?,)}

1. 開始符號加入?#? [1]
2.?T→ST′加入 *? ?[3] FIRST(T')-\varepsilon


3.??T→ST′,T′??ε 時加入 FOLLOW(T)={)} [4]

T{)}S→(T) 直接加入?)? [2]
T′{)}

T→ST′ 末尾加入 FOLLOW(T)={)}? ?[4]

T’推導出 ε 時,產生式T→ST’等價于T→S(即T’“隱身”)。此時,ST中的位置相當于直接處于T的末尾,因此S后面的符號(即FOLLOW(T))會直接成為T’后面的符號。
換句話說,T’作為可空后綴,其后面的符號本質上就是T后面的符號,因此FOLLOW(T')FOLLOW(T)相同。

空符號串在語法分析中對后繼符號集的傳遞作用

間接三元式表示法的特點為( ?)。

A.采用間接碼表,便于優化處理

B.節省存儲空間,不便于表的修改

C.便于優化處理,浪費存儲空間

D.節省存儲空間,不便于優化處理

A

四元式(Quadruples)

  • 結構:包含四個字段?(運算符, 運算對象1, 運算對象2, 結果)
  • 特點
    • 每個四元式獨立存儲運算信息,便于代碼優化(如刪除無用代碼、重新安排計算順序)。
    • 需要顯式存儲臨時變量(結果字段),可能導致存儲空間浪費。
  • 對應選項
    C. 便于優化處理,浪費存儲空間

三元式(Triples)

  • 結構:通過運算對象的位置(編號)引用操作數,不單獨存儲臨時變量,而是通過 “對三元式的引用” 表示中間結果。
  • 特點
    • 無需顯式存儲臨時變量,節省存儲空間。
    • 若需調整計算順序(如優化時),可能需要大量修改三元式編號的引用,不便于優化。
  • 對應選項
    D. 節省存儲空間,不便于優化處理

間接三元式(Indirect Triples)

  • 結構:在三元式基礎上增加一個 “執行順序表”(間接碼表),通過該表記錄三元式的執行順序,而非直接修改三元式本身。
  • 特點
    • 優化時只需調整間接碼表,無需修改三元式,便于優化處理。
    • 需額外維護間接碼表,增加了實現復雜度。
  • 對應選項
    A. 采用間接碼表,便于優化處理

正規表達式與正規文法是不同的形式化描述工具,它們之間不存在等價性。

不是所有句型都有規范推導

面向人類語言的特點是程序執行效率低,編制效率低,可讀性差

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86597.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86597.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86597.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一個簡單測試Deepseek吞吐量的腳本,國內環境可跑

一個簡單測試Deepseek吞吐量的腳本,這里用DeepSeek-R1-Distill-Qwen-32B ,支持單卡4090 24G可跑,具體看你的硬件情況做調整,理論支持所有的模型,看你需要,可以修改模型名稱,重點是pip使用國內的源,模型下載用阿里的ModelScope,無障礙下載,使用. 最后可以生成一個txt與html報表.…

前端基礎知識JavaScript系列 - 19(正則表達式)

一、是什么 正則表達式是一種用來匹配字符串的強有力的武器 它的設計思想是用一種描述性的語言定義一個規則,凡是符合規則的字符串,我們就認為它“匹配”了,否則,該字符串就是不合法的 在 JavaScript中,正則表達式也…

Java鎖機制知識點

一、鎖的基礎概念 1.1 什么是鎖 在并發編程中,鎖是用于控制多個線程對共享資源進行訪問的機制。鎖可以保證在同一時刻最多只有一個線程訪問共享資源,從而保證數據的一致性。 1.2 鎖的分類 可重入鎖 vs 不可重入鎖:可重入鎖允許同一個線程…

2025下半年軟考軟件設計師(中級)怎么高效備考,目標是穩過線!

25下半年軟考開始進入備考階段,現在咱們就拋開那些文縐縐的官話,用大白話來聊聊2025下半年軟考軟件設計師(中級)怎么高效備考,目標是穩過線! 核心思想:抓大放小,真題為王&#xff0…

Jupyter常見操作(持續更新)

Jupyter常見操作(持續更新) 本文主要整理一些常見的或者比較簡單的Jupyter操作,盡量保證一次性整理出來,方便需要但是忘記的情況下可以直接查,希望能當字典。 1.查看Jupyter內核 jupyter kernelspec list 2.使用指定…

連點成畫面積計算算法

連點成畫面積計算算法 問題分析與算法設計 1. 問題特征分析 閉合多邊形(起點和終點相同)線段可能交叉形成復雜形狀需要處理自交多邊形可能有多個內部空洞點數較多(≥50個點),需要高效算法2. 解決方案選擇 采用平面掃描算法結合多邊形布爾運算來準確計算最外層邊界包圍的…

華為云Flexus+DeepSeek征文 | 華為云MaaS平臺上的智能客服Agent開發:多渠道融合應用案例

華為云FlexusDeepSeek征文 | 華為云MaaS平臺上的智能客服Agent開發:多渠道融合應用案例 🌟 嗨,我是IRpickstars! 🌌 總有一行代碼,能點亮萬千星辰。 🔍 在技術的宇宙中,我愿做永不…

03.BUG

Bug 1.軟件測試的生命周期2. BUG2.1 表述BUG的要素2.2 BUG級別2.3 BUG的聲命周期 1.軟件測試的生命周期 ? 軟件測試貫穿于軟件的整個生命周期:軟件測試的生命周期(Software Testing Life Cycle, STLC),是指測試流程,這個流程是按…

【數據標注師】問答標注

目錄 一、 **問答標注的認知底層架構**1. **三維評估體系**2. **四類問題處理范式** 二、 **五階能力培養體系**? **階段1:問題解析能力筑基(2周)**? **階段2:答案質量評估訓練**? **階段3:復雜場景處理**? **階段…

使用DBeaver 連接mysql,使用存儲過程插入5萬條數據

使用DBeaver連接MySQL并創建存儲過程生成5萬條數據 連接MySQL數據庫 打開DBeaver,點擊"數據庫"菜單選擇"新建連接",選擇MySQL驅動。填寫主機、端口、數據庫名稱、用戶名和密碼等信息,測試連接成功后保存。 創建測試表…

某省賽題-windows內存取證

1.獲取admin用戶密碼是多少? 這里我們使用hashdump之后用john爆破沒有結果,然后使用lsadump出來了flag 2.獲取ip和主機名是什么? 主機名: 看注冊表 SAM:記錄了所有的用戶 SYSTEM:可以看主機名 SOFTWARE&a…

【軟考高項論文】論信息系統項目的成本管理

摘要 在信息系統項目管理里,成本管理是極為關鍵的環節,直接影響項目的順利開展與最終成敗。本文結合項目管理實際情況,從項目成本基準的形成過程、項目S曲線的繪制以及成本控制的具體實施三個方面,詳細闡述了對信息系統項目成本管…

AI人工智能技術應用于人社服務領域的創新研究報告

AI 人工智能技術應用于人社服務領域的創新研究報告 一、研究背景與市場概況 1.1 研究背景與政策環境 人工智能技術正深刻改變政府治理模式和公共服務方式。在國家全面推進數字化轉型的戰略背景下,人社部《數字人社建設行動實施方案》明確提出:到 2025 年,人社數字化底座…

javaEE-mybatis操作數據庫

前言 在MySQL的學習階段,我們知道了如何使用JDBC去操作,也正是因為學習了JDBC也知道其操作的繁瑣,每次的CRUD操作都需要從數據庫連接池中去獲取數據庫連接,然后再編寫SQL語句,并綁定對應的參數,接著通過連…

移動端測試——如何解決iOS端無法打開彈窗式網頁(Webkit)

目錄 一、什么是webkit? 1. 核心定義 2. iOS 的特殊限制 3. 彈窗攔截的邏輯 二、為什么 iOS 必須用 WebKit? 1. 蘋果的官方理由 2. 實際后果 3.然而…… 三、如何解決iOS端無法打開彈窗式網頁? 1.用戶 1.1 safari瀏覽器 1.2 夸克…

【github】從本地更新倉庫里的文件筆記

1. 打開GitHub官網,并登錄到您的賬戶。 2. 在頁面右上角的搜索欄中,輸入您要更新的倉庫名稱,并選擇相應的倉庫進入。 3. 在倉庫頁面中,找到并點擊紅色的“Code”按鈕,然后復制倉庫的HTTPS或者SSH鏈接。 4. 右鍵包含…

Excel基礎:數據編輯

Excel是Windows下最常用的數據處理工具,本文詳細介紹Excel的數據編輯功能,熟練掌握編輯技巧能可以極大提升工作效率,文章最后附加了一張總結思維導圖,方便大家查找和記憶。 文章目錄 一、數據輸入1.1 覆蓋輸入1.2 追加輸入1.3 任…

JavaScript中Object()的解析與應用

在JavaScript中,Object() 是一個基礎構造函數,用于創建對象或轉換值為對象類型。它既是語言的核心組成部分,也提供了一系列靜態方法用于對象操作。以下是詳細解析和應用示例: 一、Object() 的基本行為 作為構造函數(…

stream使用案例

1.1 查找所有的偶數并求和 public static void p1() { List<Integer> numbers Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int sum numbers.stream() .filter(num -> num % 2 0) .mapToInt(Integer::intValue) .sum() ; System.err.printf…

力扣 刷題(第七十一天)

靈感來源 - 保持更新&#xff0c;努力學習 - python腳本學習 4的冪 解題思路 位運算條件&#xff1a;4 的冪的二進制表示中只有一個 1&#xff0c;且位于奇數位&#xff08;如 4 100&#xff0c;4 10000&#xff09;。模運算條件&#xff1a;4 的冪減 1 后能被 3 整除&…