• 屬性語法

    編輯
    本詞條由“匿名用戶” 建檔。

    屬性語法

    編輯

    屬性語法是用語義信息處理來補充形式語法的一種正式方式。語義信息被存儲在與語法的終端和非終端符號相關的屬性中。屬性的值是與語法的產品相關的屬性評價規則的結果。屬性允許以受控和正式的方式將信息從抽象語法樹的任何地方轉移到其他地方。每個語義函數只處理一個生成規則中出現的符號的屬性:語義函數的參數和結果都是一個特定規則中的符號的屬性。當語義函數定義了規則左側的符號的屬性值時,該屬性被稱為合成的;否則就稱為繼承的。因此,合成屬性的作用是在解析上傳遞語義信息,而繼承屬性則允許從父節點向下和跨語法樹傳遞值。在簡單的應用中,例如算術表達式的評估,屬性語法可能被用來描述除了解析之外的整個任務,以直截了當的方式進行;在復雜系統中,例如在構建語言翻譯工具(如編譯器)時,它可能被用來驗證與語法相關的語義檢查,代表沒有被語法定義明確傳授的語言規則。它也可能被解析器或編譯器用來將語法樹直接翻譯成某些特定機器代碼,或翻譯成某些中間語言。

    屬性語法的歷史

    編輯

    屬性語法是由DonaldKnuth和PeterWegner發明的。雖然DonaldKnuth被認為是整個概念的創造者,但PeterWegner在與Knuth的談話中發明了繼承屬性。一些雛形的想法可以追溯到IMP的作者EdgarT.NedIrons的工作

    屬性語法的例子

    編輯

    下面是一個簡單的無語境語法,它可以描述一種由整數的乘法和加法組成的語言。Expr→Expr+TermExpr→TermTermTerm→Term*FactorTerm→FactorFactor→(Expr)Factor→integer下面的屬性語法可以用來計算語法中寫的表達式的結果。請注意,這個語法只使用合成的值,因此是一個S屬性語法。

    屬性語法

    合成屬性

    編輯

    一個合成屬性是由子屬性的值計算出來的。由于子屬性的值必須首先被計算出來,這是一個自下而上傳播的例子。為了正式定義一個合成的屬性,讓{displaystyle{{alpha_{j_{1}},ldots,alpha_{j_{m}}}}}subseteq{{alpha_{1},ldots,alpha_{n}}}}。(即屬性的值是一個函數f{displaystylef}應用于規則主體中的一些符號值)

    繼承屬性

    編輯

    解析樹中的一個節點的繼承屬性是用父級或同級的屬性值定義的。繼承屬性便于表達一個編程語言結構對其出現的上下文的依賴性。例如,我們可以使用繼承屬性來跟蹤一個標識符是出現在賦值的左邊還是右邊,以決定是否需要標識符的地址或值。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/163777/

    (3)
    詞條目錄
    1. 屬性語法
    2. 屬性語法的歷史
    3. 屬性語法的例子
    4. 合成屬性
    5. 繼承屬性

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久