先打一發廣告,我這個部落格一開始就是用於記錄演算法的學習過程的,後來乾脆想著把課堂筆記也整理整理放上來。想想這學期快結束了,下學期開始又要開始學習演算法啦。我是準備從0開始學習的,借助於高中生資訊學競賽的平台。歡迎各位各類同學加進來,笑著問我為什麼刷那麼慢,或者跟我一起從0開始。歡迎對照對邊導航欄,對準「演算法向」的「洛谷」檢視進度,刷完這個之後會繼續刷usaco。
群號是⑥⑥①⑨②2025,這是我設定的一道很低的門檻用來阻止廣告的。入群的驗證暗號是:我愛編譯原理
分析乙個文法的句子結構
按照文法的產生式(語言的語法規則),識別輸入符號串是否為乙個句子(合式程式)
消除左遞迴,這個以前整理過。
為了消除回溯必須保證:
當對文法的任何非終結符,當要它去匹配輸入串時,能夠根據它所面臨的輸入符號準確地指派它的乙個候選去執行任務,並且此候選的工作結果應該是確信無疑的。
假設有a→α
1|α2
|⋯|α
n 令
g 是乙個不含左遞迴的文法,對
g的所有非終結符的每個候選
α 定義它的終結首符集fi
rst(
α)為:fi
rst(
α)=
特別的,若α⇒
∗ϵ,則規定ϵ∈
firs
t(α)
如果非終結符a的所有候選首符集兩兩不相交,即a的任何兩個不同候選αi
和αj ,fi
rst(
αi)⋂
firs
t(αj
)=∅
當要求a輸入匹配輸入串時,a就能根據它所面臨的第乙個輸入符號a,準確地指派某乙個候選前去執行任務。這個候選就是那個終結首符集含a的
α 。
為了消除回溯,我們必須提取最左公共子表示式
假設要用非終結符a進行匹配,面臨的輸入符號為a,a的所有產生式為a→
α1|α
2|⋯|
αn
若a∈f
irst
(αi)
,則指派αi
執行匹配任務;若a
不屬於任何乙個候選首符集,則「 若ϵ
屬於某個fi
rst(
αi) 且a∈
foll
ow(a
) ,則讓a與
ϵ 自動匹配
否則,a的出現是一種語法錯誤fi
rst(
α)=
follow(
a)=
編譯原理 複習
1 什麼叫編譯程式 高階語言 翻譯為 目標語言 組合語言或機器語言 2 編譯程式的6個階段 1 詞法分析 簡單理解就是掃瞄,很傻瓜式地由頭到尾掃瞄源程式,識別出 單詞 輸出結果是二元組,即 單詞總別,值 2 語法分析 根據語法規則將單詞符號串行分解成各類語法單位,如 表示式 語句 程式 3 語義分析...
編譯原理複習
介紹編譯原理,了解乙個新的領域,得去了解它的整體框架 語法分析 語義分析 語法制導翻譯 中間 生成 生成彙編 生成優化 執行彙編 3位址或4位址 的彙編執行 1.根據語言寫出文法產生式 2.構造與某一正規式等價自小dfa dfa deterministic finite automation 確定有...
編譯原理複習
文法與語言 基本概念 字母表 字母表是元素的非空有窮集合 字母表中的元素稱為符號 字元或字 字母表也稱符號 字元 集 字母表上的符號串 由字母表中的符號所構成的任何有窮序列被稱之為該字母表上的符號串 字母表上的元素也是該字母表上的符號串 無任何符號的符號串稱為空符號串,記作 符號串的長度 符號串的長...