-
語法分析器
鎖定
在
計算機科學和
語言學中,
語法分析(
英:Syntactic analysis,也叫Parsing)是根據某種給定的
形式文法對由單詞序列(如英語單詞序列)構成的輸入文本進行分析並確定其語法結構的一種過程。
語法分析器(Parser)通常是作為
編譯器或
解釋器的組件出現的,它的作用是進行語法檢查、並構建由輸入的單詞組成的數據結構(一般是
語法分析樹、
抽象語法樹等層次化的數據結構)。語法分析器通常使用一個獨立的
詞法分析器從輸入字符流中分離出一個個的“單詞”,並將單詞流作為其輸入。實際開發中,語法分析器可以手工編寫,也可以使用工具(半)自動生成。
- 中文名
-
語法分析器
- 領 域
-
編譯原理
- 作 用
-
進行語法分析
語法分析器簡介
在計算機科學和語言學中,
語法分析(英:Syntacticanalysis,也叫Parsing)是根據某種給定的形式文法對由單詞序列(如英語單詞序列)構成的
輸入文本進行分析並確定其語法結構的一種過程。
語法分析器(Parser)通常是作為
編譯器或
解釋器的組件出現的,它的作用是進行語法檢查、並構建由輸入的單詞組成的數據結構(一般是語法分析樹、
抽象語法樹等層次化的數據結構)。語法分析器通常使用一個獨立的
詞法分析器從輸入字符流中分離出一個個的“單詞”,並將單詞流作為其輸入。實際開發中,語法分析器可以手工編寫,也可以使用工具(半)自動生成。
語法分析器語法分析器分類
語法分析器的任務主要是確定是否可以以及如何從語法的起始符號推導出輸入符號串(
輸入文本),主要可以通過兩種方式完成:
語法分析器自頂向下分析
根據形式語法規則,在語法分析樹的自頂向下展開中搜索輸入符號串可能的最左推導。單詞按從左到右的順序依次使用。
語法分析器自底向上分析
語法分析器從現有的輸入符號串開始,嘗試將其根據給定的形式語法規則進行改寫,最終改寫為語法的起始符號。
語法分析器關聯項目
詞法分析再次重申
語法分析器語法分析
語法分析是
編譯過程的核心部分,其基本任務是根據語言的語法規則進行語法分析,如果不存在語法錯誤即給出正確的語法結果,併為
語義分析和
代碼生成做準備。
[1]
語法分析器LALR語法分析器
LALR分析器是一種規範LR分析方法的簡化形式。它可以對上下無關文法進行語法分析。
LALR即“
Look-
Ahead
LR”。其中,Look-Ahead為“向前看”,L代表對輸入進行從左到右的檢查,R代表反向構造出最右推導序列。
LALR分析器可以根據一種程序設計語言的正式語法的
產生式而對一段文本程序輸入進行
語法分析,從而在語法層面上判斷輸入程序是否合法。 實際應用中的LALR分析器並不是由人手工寫成的,而是由類似於
yacc和
GNU Bison之類的LALR語法分析器生成工具構成。由機器自動生成的代碼相比較於程序員手工的代碼,擁有更好的運行效率而且減少了程序員的工作量。
[2]
- 參考資料
-