爲什麼終結符只有綜合屬性?

書本上關於綜合屬性與繼承屬性的定義是:

  1. 對關聯產生式A-> α \alpha α的語義動作b:=f(c1,c2,c3,…,ck),如果b是A的某個屬性,則稱b是A的一個綜合屬性。從分析樹的角度來看,計算綜合屬性是對父結點的屬性賦值,所以是自底向上傳遞信息。
  2. 對關聯產生式A-> α \alpha α的語義動作b:=f(c1,c2,c3,…,ck),如果b是產生式右部某個文法符號X的某個屬性,則稱b是文法符號X的一個繼承屬性。從分析樹的角度來看,計算繼承屬性是對子結點的屬性賦值,所以是自頂向下傳遞信息。

那麼從字面意思理解,b是A的某個屬性,那麼非終結符肯定有綜合屬性了;而終結符是不可能出現在產生式左邊的,所以終結符是沒有綜合屬性的;X在產生式右部,X可能是終結符,所以終結符是有繼承屬性的。

從另一個角度理解:綜合屬性用於自底向上傳遞信息,一個結點的綜合屬性應該是由它的子結點決定,但是在語法樹中終結符是沒有子結點的,所以終結符不該有綜合屬性只能有繼承屬性。

查遍了網上的所有資料,只有這麼一句話:終結符只有綜合屬性,它由詞法分析器提供。

這樣理解:兩種屬性的定義是從語法樹的角度來說的。如果某個屬性是它的子結點屬性計算得到的,那麼這個屬性就是綜合屬性;如果某個屬性是它的父結點或其兄弟結點計算得到的,那麼這個屬性就是繼承屬性。特殊情況是終結符的屬性都是由詞法分析器提供的,也叫做內在屬性,被認爲是綜合屬性,這是定義的特例

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