• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            歲月流轉,往昔空明

            C++博客 首頁 新隨筆 聯系 聚合 管理
              118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks

            語義:從分析樹到語法樹(一)

            在1-7章里,我們已經建立了一個編譯器所需要的絕大部分環節:詞法分析、語法分析、代碼生成、代碼執行。前兩個階段,將會生成分析樹(Parse Tree)后兩個階段,則是用語法樹生成的。我們多希望語法分析后的分析樹,直接就能用作語法樹?。?

            從結構上看,分析樹和語法樹幾乎是如出一轍的。只可惜,如果我們再仔細的觀察會發現,從分析樹到語法樹有一條深深的鴻溝。是的,你猜得沒錯,這條鴻溝,就是語義。只要有了語義,我們就可以將我們的分析樹,變成可以產生代碼的語法樹。

            本質上講,語法樹(Syntax Tree)是含有語義的。仍然用A+B這個表達式的語法樹來舉例子。在這里,A和B都是一個Int32的常量,例如我們這里A是5,B是10。這個語法樹里面A節點,它具有以下的語義:

            • A是一個常量。
            • A是一個整型值。
            • A是5。

            這些語義信息在語法樹里面都具備,而在語法分析之后的分析樹里面,只有“5”這樣一個字符串。所以實際上,從分析樹到語法樹的建立,還需要經歷一個附加語義的過程。

            在一個常見的編譯流程里,語義分析可以分為兩個部分。其中一部分會跟隨在詞法和語法分析中,用于解析一些最基本的語義。例如輸入的是不是關鍵字啦,是不是字面量啦,是不是運算符啦一類的信息,這些語義信息還可能用來指導后一階段的語法分析。

            還有一個部分就是例如類型推導、符號設置、函數簽名分析一類的語義分析。這些分析的結果通常并不影響語法樹的結構,而放在語法分析階段又會增加分析的復雜度。這一類的語義分析,通常是在語法樹建立好之后,再來對語法樹進行進一步的分析,將語法樹上的語義信息補完。

            在SASL里,我們將語法樹的建立分成三個步驟。

            第一步,在詞法分析和語法分析的同時,進行簡單的語義解析。包括字面值、操作符、關鍵字的提取等。這些一方面是語義,一方面也是為了語法分析服務的。

            第二步,我們將語法分析得出來的分析樹,轉換成我們需要的語法樹的形式。我們的語法樹上,擁有一些屬性。通過這些屬性可以給語法樹節點上附加產生代碼所必須的語義。

            第三步,遍歷語法樹,填充語義,執行一些準備工作。

            這樣,我們就建立了一顆可以被代碼生成工具所識別的語法樹。

            接下來,我們將運用Spirit.Lex和Spirit.Qi來完成我們前兩步的工作。

            第三部分,我們暫時還不需要,等需要的時候,咱們再來擴充。

            posted on 2009-12-26 23:32 空明流轉 閱讀(1613) 評論(0)  編輯 收藏 引用
            伊人色综合九久久天天蜜桃| 久久永久免费人妻精品下载| 99久久人人爽亚洲精品美女| 精品久久国产一区二区三区香蕉| 999久久久国产精品| 精品久久久久国产免费| 日产久久强奸免费的看| 日韩人妻无码精品久久久不卡| 久久国产精品99久久久久久老狼| 久久天天躁狠狠躁夜夜2020| 久久99精品国产99久久6| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品亚洲美女久久久| 麻豆久久| 国产精品久久久久久福利漫画 | 久久精品国产亚洲AV香蕉| 久久久久久噜噜精品免费直播 | 久久精品免费大片国产大片| 亚洲精品乱码久久久久久蜜桃不卡 | 77777亚洲午夜久久多喷| 久久综合综合久久97色| 亚洲AV无码久久精品蜜桃| 久久久久国色AV免费看图片| 久久婷婷久久一区二区三区| 麻豆AV一区二区三区久久| 天天做夜夜做久久做狠狠| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久天天躁狠狠躁夜夜2020老熟妇| 亚洲综合精品香蕉久久网| 亚洲美日韩Av中文字幕无码久久久妻妇 | 三级韩国一区久久二区综合 | 亚洲国产精品久久久久| 久久国产免费观看精品3| 久久中文字幕人妻丝袜| 久久一区二区三区99| 狠狠色综合久久久久尤物| 蜜桃麻豆www久久| 99久久精品国产毛片| 国产精品久久久久一区二区三区| 久久91综合国产91久久精品| 国产国产成人精品久久|