<pre id="p1pz5"><delect id="p1pz5"></delect></pre>
<output id="p1pz5"><delect id="p1pz5"><listing id="p1pz5"></listing></delect></output>

<p id="p1pz5"></p>

<pre id="p1pz5"></pre>

<p id="p1pz5"></p>
<pre id="p1pz5"><output id="p1pz5"></output></pre>
<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre><pre id="p1pz5"></pre>

<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"><menuitem id="p1pz5"></menuitem></output></p>

<output id="p1pz5"></output>
<pre id="p1pz5"><output id="p1pz5"></output></pre>

<p id="p1pz5"><delect id="p1pz5"><menuitem id="p1pz5"></menuitem></delect></p>

<p id="p1pz5"></p>
<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"></p>

<output id="p1pz5"><delect id="p1pz5"></delect></output>

<p id="p1pz5"></p>

<p id="p1pz5"></p>

<p id="p1pz5"></p>
<p id="p1pz5"><delect id="p1pz5"><address id="p1pz5"></address></delect></p>

<pre id="p1pz5"></pre>

<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre>

畢業設計網
JSP,JAVA | python | android,安卓 | PHP | 微信小程序 | asp.net|C# | VB | VC++ | 課程設計 | asp類 |

基于C++的詞法分析器的設計與實現

隨著高級語言的不斷發展, 編譯過程成為影響計算機語言發展的一個主要因素,詞法分析是編譯過程中最基礎的環節, 它將接收到的所有符號根據構詞規則轉換成一系列單詞串詞法分析是編譯過程的第一階段, 其任務是從左至右逐個字符對源程序進行掃描, 產生一個個的單詞符號, 把作為字符串的源程序改造成為單詞符號串的中間程序。在編譯程序結構中, 詞法分析程序通常作為子例程被語法分析程序調用, 每一次調用返回一個單詞。詞法分析程序的實現有兩種不同的方法: 手工編寫和機器自動生成。本文討論手工實現, 并實現了一種改進的詞法分析程序。計算機系統與人信息交換界面多數是應用高級語言來實現。一個高級語言程序的實現,必須依賴于相應的編譯系統。所謂編譯程序就是指能夠把某一種語言程序轉換成另一種與之等價的語言程序。它通常包括五個階段:詞法分析,語法分析,語義分析與中間代碼的產生、優化,目標代碼的生成。完成計算機翻譯過程的關鍵階段,它為后面的語法分析、語義分析做好準備,打好基礎,以便快速地、高質量地生成目標語言程序。因此詞法分析是編譯的基礎。

 

1.詞法分析器的設計原則

在編譯程序工作的五個階段中,每個階段都必須遵從功能等價的原則。詞法規則與語法分析階段依據的語法規則一同構成了一個語言的語法,而語法則是從"形"的角度衡量一個程序是否合法。所以在詞法分析階段,詞法規則成為重要的研究對象。詞法分析器所處理的對象即詞法分析程序的輸入數據,實際上是源程序經過編譯預處理,去掉多余的符號后而形成的代碼,這樣給詞法分析帶來方便。詞法分析的過程是線性的從頭至尾掃描一遍,復雜度較低,易實現。

2.詞法分析器的設計對象

在計算機翻譯中,詞法分析的關鍵之一在于如何識別單詞的種類,特別是面對定義形式一樣、結構完全相同的標識符和保留字,如何正確地解決對它們的識別處理,是詞法分析中的一項重要任務。由于我們規定的c++語言程序語句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯誤的檢查,而將編譯程序的重點放在中間代碼生成階段。詞法分析器的功能是輸入源程序,輸出單詞符號。規定輸出的單詞符號格式為如下的二元式:(單詞種別,單詞自身的值)。通常一種程序語言中定義的單詞種類包括標識符(identifier)、保留字(reservedw ord) 、常數(literal)、 運算符(op erator)、界符等。C++語言中定義了屬于這五種類型的大量的單詞,但是由于預編譯器只識別我們自定義的注釋,因此預編譯器處理的單詞集只是C++語言中定義的單詞集的一個真子集。

3.詞法分析器的任務

詞法分析器的任務是:從左至右逐個字符地對源程序進行掃描,產生一個個的單詞符號,把作為字符串的源程序轉換成為單詞符號串的中間程序。詞法分析程序的輸出結果是組成語言的基本元素即單詞,在實際處理的時候,輸出并非單詞,而是每個單詞對應的二元式,形為<單詞種別,單詞符號的屬性>,編碼的方式由編譯系統的研制者決定。故經過詞法分析,在輸出結果中并沒有單詞本身。

4.詞法分析的依據

在編譯程序工作的五個階段中, 每個階段都必須遵從功能等價的原則。詞法分析階段依據的是詞法規則。詞法規則與語法分析階段依據的語法規則一同構成了一個語言的語法, 而語法則是從“形”的角度衡量一個程序是否合法。所以在詞法分析階段, 詞法規則成為重要的研究對象。描述詞法規則的有效工具主要有正規式與有限自動機。

5.總體設計

詞法分析過程如附圖所示。首先,根據分析的文件對象,新建名為“t1_ 單詞表”的文件。然后, 判斷RichTextBox 中的文本是否結束, 如果文本內容沒有結束,將按C 語言中的構詞規則從文本中取出若干個字符組合形成一個個單詞( 例如字符串型常數是以雙引號為區分標記),根據預先設計好的單詞規則分析這些單詞的類型, 并記載每個單詞所必須的信息。最后,將單詞依次保存在“t1_ 單詞表”表中。 

以上是一部分介紹,如需要完整的資料或者如不符合您的要求,請聯系技術人員qq:1587620172咨詢 微信:phpvisa66

上一篇:vc++動態創建控件技術在程序開發中的應用與設計
下一篇:asp二學位在線報名管理系統的設計與實現


版權所有 畢業設計網聯系qq:1587620172 © 2007-2022

蝴蝶中文综合娱乐网

<pre id="p1pz5"><delect id="p1pz5"></delect></pre>
<output id="p1pz5"><delect id="p1pz5"><listing id="p1pz5"></listing></delect></output>

<p id="p1pz5"></p>

<pre id="p1pz5"></pre>

<p id="p1pz5"></p>
<pre id="p1pz5"><output id="p1pz5"></output></pre>
<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre><pre id="p1pz5"></pre>

<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"><menuitem id="p1pz5"></menuitem></output></p>

<output id="p1pz5"></output>
<pre id="p1pz5"><output id="p1pz5"></output></pre>

<p id="p1pz5"><delect id="p1pz5"><menuitem id="p1pz5"></menuitem></delect></p>

<p id="p1pz5"></p>
<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"></p>

<output id="p1pz5"><delect id="p1pz5"></delect></output>

<p id="p1pz5"></p>

<p id="p1pz5"></p>

<p id="p1pz5"></p>
<p id="p1pz5"><delect id="p1pz5"><address id="p1pz5"></address></delect></p>

<pre id="p1pz5"></pre>

<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre>