91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用C++詞法分析設計方法

發布時間:2021-10-27 18:15:59 來源:億速云 閱讀:231 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關如何用C++詞法分析設計方法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

下面文章從C++詞法分析的角度出發,其實語言是一個句子的集合,而句子是由詞法分析器返回的記號組成的非線性結構,C++語法分析的任務是在詞法分析基礎上,根據語言的語法規則,把詞法符號分解成各類語法單位。

反映句子結構的***方法是樹,常用的有分析樹和語法樹。分析語法結構的基本方法有兩種:自上而下分析方法和自下而上分析方法。自上而下分析從根到葉子建立分析樹,而自下而上分析恰好相反。在這兩種情況下,分析器都是從左到右地掃描輸入,每次讀進一個記號。與C++詞法分析類似,語法分析也具有雙重含義:

①規定句子形成的規則,也被稱為語法規則。程序設計語言的大部分語法規則可以用上下文無關文法(ContextFreeGrammar,簡稱CFG)來描述。

②根據語法規則識別記號流中的評議結構,也被稱為語法分析。最有效的自上而下和自下而上的分析方法都只能處理上下文無關文法的子類,如LL文法和LR方法,但是它們已足以應付程序設計評議的絕大多數語法現象。

一、任務與目的

1、使用C/C++程序設計語言和遞歸下降子程序的方法編寫該函數繪圖語言的C++詞法分析器。并要求設計一個語法分析器的測試小程序來調用自己編寫的語法分析器測試各種不同的輸入。

2、語法分析的任務是在C++詞法分析基礎上,根據語言的語法規則,把詞法符號分解成各類語法單位。語法分析所依據的是語言的語法規則,語法規則通常用上下文無關文法描述。

通過自己動手編寫語法分析器,掌握正規式與正規文法、上下文無關文法(CFG)、有推導的基本概念(推導、分析樹與語法樹、二義性及二義性的消除)、自上而下分析(遞歸下降子程序方法、預測分析表方法、LL(1)文法)、自下而上分析。理解如何理論聯系實際以及明白理論與實際的差別。

二、分析與設計

語法分析程序一般具有如下功能:對單詞符號串進行語法分析(根據語義規則進行推導和規約),識別出程序中的各類語法單位,最終判斷輸入串是否構成語法上正確的“程序”。

這里我們采用遞歸下降分析方法:直接以程序的方式模擬產生式產生語言的過程。它的基本設計思想是:為每一個非終結符構造一個子程序,每一個子程序的過程體中按該產生式的候選項分情況展開,遇到終結符直接匹配,而遇到非終結符就調用相應非終結符的子程序。

該分析從調用文法開始符號的子程序開始,直到所有非終結符都展開為終結符并得到匹配為止。若分析過程中達到這一步則表明分析成功,否則表明輸入中有語法錯誤。遞歸下降分析對文法的限制是不能有公共左因子和左遞歸。由于文法是遞歸定義的,因此子程序也是遞歸的。

對于規模比較小的語言,遞歸下降子程序方法是很有效的方法,它簡單靈活,容易構造,其缺點是程序與文法直接相關,對文法的任何改變均需對程序進行相應的修改。

這里給出C++詞法分析程序大概的設計方法:

1、根據要求寫出語法分析的上下文無關文法G;

2、消除上下文無關文法G的二義性;

3、消除上下文無關文法G的(直接)左遞歸,并提取左因子;

4、構造文法的狀態轉換圖并且簡化;

5、將轉換圖轉化為EBNF表示;

6、從EBNF構造遞歸下降子程序;

以下是較為詳細的設計:

總體結構與模塊劃分

語法測試模塊(parsermain.cpp)

語法分析器模塊(parser.h & parser.cpp)繪圖語言解釋器入口遞歸子程序集先序遍歷并打印表達式的語法樹出錯處理模塊詞法分析器模塊(scanner.h & scanner.cpp)初使化詞法分析器識別出具有獨立意義的最小語法單位輔助性模塊

以上就是如何用C++詞法分析設計方法,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连山| 衡南县| 连云港市| 红桥区| 通江县| 乳源| 新邵县| 商城县| 宁城县| 盖州市| 商丘市| 楚雄市| 孝昌县| 长宁区| 阿拉善右旗| 永泰县| 贡觉县| 许昌县| 乌苏市| 巴林左旗| 大英县| 苍南县| 耒阳市| 大邑县| 勐海县| 思茅市| 绿春县| 弥渡县| 平阳县| 临夏市| 乐至县| 沐川县| 章丘市| 岳普湖县| 灌阳县| 夏邑县| 宽甸| 库尔勒市| 柳林县| 阳西县| 平湖市|