語法分析
語法分析,詞法分析,語義分析直接將我拍在了沙灘上,我已經懵了,這篇不建議看,我只是從書中取出一個大概的框架,深層次的東西還沒有挖掘。
-
簡介
- 作爲編譯過程的核心部分,語法分析根據一定的語法規則,通過語法分析程序進行分析,識別出各類語法成分,進行語法檢查。
-
語法分析程序
- 作用
- 輸入:記號流/記號序列
- 輸出:分析樹
- 功能:將記號組合成語法成分,語法檢查
- 作用
-
分析方法
-
自頂向下的方法
-
遞歸下降分析
- 從文法的開始符號出發,視圖推出要分析的輸入串的過程,自頂向下的爲輸入串建立一棵分析樹
- 文法的每一個非終結符號對應一個遞歸過程,即可實現這種帶回溯的遞歸下降分析方法。
- 每個過程作爲一個布爾過程,一旦發現它的某個產生式與輸入串匹配,則用該產生式展開分析樹,並返回true,否則分析樹不變,返回false。
-
遞歸調用預測分析
- 特點:確定的,不帶回溯的遞歸下降分析方法
- 牽涉到轉換圖,不展開來說了
-
非遞歸預測分析
- 使用一張分析表和一個棧聯合控制,實現對輸入符號串的自頂向下分析。
- 模型
- 輸入緩衝區:存放用於分析的符號串
- 符號棧:存放文法符號,$存放棧底,作爲標識
- 分析表:在分析表中找到被調用的產生式
- 輸出流:用於不斷產生的產生式序列
-
-
-
自底向上的方法
- 分析方法:
- 從輸入符號串開始分析
- 查找當前句型的可歸約串
- 使用規則,將其規約成相應的非終結符號
- 分析方法:
-
LR分析法
- 簡介
- L——表示自左至右掃描
- R——表示輸入符號串構造一個最右腿到的逆過程
- K——表示做出分析決定,向前看的輸入符號個數
- 作用
- 無回溯
- 能分析無關上下文
- 及時發現錯誤
- 模型
- 簡介
-
軟件工具
- YACC(Yet Another Compiler-Compiler)
- 過程