【北航編譯原理筆記】3. 語法分析

語法分析

任務:根據語法規則 (即語言的文法),分析並識別出各種語法成分,如表達式、各種說明、各種語句、過程、函數等,並進行語法正確性檢查.

與詞法分析的區別:

  1. 詞法分析(3型, 正則文法), 語法分析(2型, 上下文無關文法)
  2. 字母表區別: 詞法(字符串), 語法(符號串)

自頂向下分析: 推導(Derivations)
自底向上分析: 規約(Reductions)

自底向上: 主要問題:

  1. 句柄識別問題: 算符優先分析法

自頂向下: 主要問題:

  1. 二義性問題:

    ​ 用優先級層次定義文法

  2. 左遞歸問題(導致死循環):

    U::=xy  xw ... xyU ::= xy\ |\ xw\ |...|\ xy改寫爲U::=x(y  w ... z)U::=x(y\ |\ w\ |...|\ z).

    U::=x  xyU ::= x\ |\ xy改寫爲U::=x(y  ε)U::=x(y\ |\ \varepsilon).

    U::=x  y ... z  UvU ::= x\ |\ y\ |...|\ z\ |\ Uv改寫爲U::=x(x  y ... z){v}U::=x(x\ |\ y\ |...|\ z)\{v\}.

  3. 回溯問題(導致費時)

    ​ 保證 FIRST(ai)FIRST(aj)=ϕ(ij)FIRST(a_i) \bigcap FIRST(a_j) = \phi (i \neq j).

    ​ 相交則提取左因子

    ​ 必要時,可以超前掃描,預讀下一個字符.

遞歸子程序法(遞歸下降分析法): 對每一個非終結符都建立一個子程序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章