將概念通俗化LR LL1

2021-09-23 15:35:46 字數 817 閱讀 9297

短語:每個子樹的所有葉子節點, 替換為最終的

直接短語:不包含其他子樹的子樹的所有葉子節點

控制代碼:最左直接短語

素短語:至少有乙個終結符,不再包含其他素短語

最左素短語:在最左面

最左推導:每一步替換最左面的非終結符,最左面的非終結符先出現

最右推導:每一步替換最右面的非終結符,最右面的非終結符先出現 n=>nd=>n6=>nd6=>n56=>d56=>256

二義:2個不同最右推導或2個不同語法樹。

lr分析表:

(移進)符號進一位 s7:是將7寫入狀態中,輸入串的一位進入符號串

(歸約) 輸入串不變,r5:符號位看規則5進行回退<—— 同時狀態位取消乙個, 後,狀態位的最後一位+歸約後的符號組合後從分析表中找到下一狀態號,將此狀態號寫入此時操作的標號中的狀態位中,此標號進行了狀態位回退乙個又補充了乙個。

若從分析表中找到下一狀態號為空,則補空——即沒有新的狀態

標號:			狀態,符號,輸入串

(1):開始狀態為0,開始符號為#,輸入串已知,

(2):

ll1:

first follow集合

follow集的推導方法:

三種a=ld: ——l的右面是終結符,把這個終結符加入l的folllow中

a=ld:——l的右面是非終結符,把這個非終結符的first集除去空加到l的follow中

a=sl:——如果l處在末尾,把 『——>』 左面的符號a的follow成為l的follow。

大寫字母為非終結符,,,小寫字母為終結符

非終結符可以推出產生式,即後面還有東西

kmp演算法nexts陣列通俗化解釋

最近研究了一下kmp演算法,確實很繞人,弄了兩天終於弄懂了 這裡想要採用通俗化的語言解釋一下,文章不長,希望大家能夠耐心讀完。nexts陣列主要記錄前字尾相同的數量,比如 aba前字尾都有a,所以下一位為1。nexts陣列找前字尾問題比較簡單,其他大佬的部落格都已經詳細論述了,我這菜雞就不在這丟人現...

對IOC概念及作用的修正(或者說通俗化)

網上有無數帖子一提到什麼是ioc,答案都是千篇一律的控制反轉,自己不建立物件,交給別人建立物件。其實真正的ioc解釋起來真的很簡單,下面直接上乙個大家每天寫幾百遍的 這是乙個entity private user user以上是我自己的 和本文章無關請忽略掉 在tempcount中建立user物件,...

CPU 記憶體通俗概念

在計算機的組成結構中,有乙個很重要的部分,就是儲存器。儲存器是用來儲存程式和資料的部件,對於計算機來說,有了儲存器,才有記憶功能,才能保證正常工作。儲存器的種類很多,按其用途可分為主儲存器和輔助儲存器,主儲存器又稱記憶體儲器 簡稱記憶體,港台稱之為記憶體 記憶體記憶體又稱主存,是cpu能直接定址的儲...