freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c語言子系統(tǒng)的詞法分析器計與實現(xiàn)畢業(yè)論文-展示頁

2025-03-10 09:17本頁面
  

【正文】 法分析,其首要任務(wù)是改造程序設(shè)計語言的文法,使得文法無左遞歸且無左公因子,以消除其中的左遞歸和避免回溯的出現(xiàn)。 在進(jìn)行自頂向下的語法分析時,通常有兩個障礙須加以解決: (1) 由于采取了最左推導(dǎo),故當(dāng)相應(yīng)文法 G中含有左遞歸的非終結(jié)符號時,便會使語法分析過程陷入循環(huán)不已 的狀況。 所謂自頂向下的語法分析,只指對于給定輸入串 w,試圖為其構(gòu)造一個從文法開始符號S到 w的最左推導(dǎo) S=w,或為 w自上而下地構(gòu)造一棵 S為根結(jié)點的語法樹。 語法分析 語法分析程序又稱分析器,它以單詞串形式的源程序作為輸入或分析的對象,其基本任6 務(wù)是:根據(jù)程序設(shè)計語言的語法規(guī)則(即定義該語言的前后無關(guān)文法),分析源程序的語法結(jié)構(gòu),即分析如何由這些單詞組成該源程序的各種語法成分(如下標(biāo)變量、函數(shù)、各種表達(dá)式、各種程序語句等),并在分析過程中進(jìn)行語法正確性檢查,產(chǎn)生內(nèi)部形式的中間代碼,供編譯程序后續(xù)階段處理。另一種方式是將詞法分析編成一個子程序,該子程序由 語法分析程序調(diào)用,當(dāng)語法分析程序需要一個新的單詞時,就調(diào)用該子程序,每調(diào)用一次,則從源程序字符串中讀出一個具有獨立意義的單詞。從工作方式上看,他與語法分析之間存在兩種接口方式。 此外,視編譯工作流程的組織,一些編譯程序在進(jìn)行詞法分析時,還要完成將所識別出的標(biāo)志符登錄到符號表的工作。通??刹捎枚?( CLASS, VALUE) 來表示一個單詞符號的內(nèi)部編碼,其中 CLASS為一整數(shù)碼,用于表示該單詞的類別; VALUE則是單詞之值(如變量名在符號表中的序號,常數(shù)的二進(jìn)制表示,以及運算符和分隔符的編碼,等等)。 詞法分析 詞法分析 程序又稱掃描器,它是編譯過程的第一個階段。而在編譯過程中,下部的輸出窗口實時顯示編譯過程中發(fā)現(xiàn)的錯誤等信息,最后顯示編譯結(jié)果。所以本系統(tǒng)只完成整個編譯過程中的詞法分析、語法分析、語義分析以及其中的建立符號表和類型檢查幾個步驟,并不生成最后的可執(zhí)行文件。 5 這些優(yōu)點也是此次畢業(yè)設(shè)計選用此開發(fā)工具的主要原因。此外,團(tuán)隊還能夠創(chuàng)建自定義報告。Visual Studio 2021 Team System 會收集精確的數(shù)據(jù) — 不僅限于缺陷跟蹤,而是包括測試結(jié)果、代碼涵 蓋、代碼生成、任務(wù)進(jìn)度等這些貫穿于團(tuán)隊常規(guī)工作流程的數(shù)據(jù)。今天,數(shù)據(jù)主要限于缺陷跟蹤。通過使用一個公共的跨工具集的數(shù)據(jù)倉庫, Visual Studio 2021 Team System 解決了在大多數(shù) SDLC 工具中建立數(shù)據(jù)倉庫這一問題,并啟動了一個聚合的項目狀態(tài)視圖。對 SDLC 過程的支持是內(nèi)置的,這使得對工作流的支持是無縫的。它還能將自己體現(xiàn)為實際的工具行為更改。通過盡早地為開發(fā)人員提供他們需要用于識別和解決質(zhì)量問題的工具,更多的產(chǎn)品缺陷就能夠在它們還未構(gòu) 成危害之前即被發(fā)現(xiàn)并解決。通過將開發(fā)人員在開發(fā)環(huán)境中需要的測試和性能工具(例如,單元測試、代碼分析和性能分析)合并在一起, Visual Studio 2021 Team System 也期待著這種成功。 Visual Studio 2021 的成功已被證實,即開發(fā)人員偏愛一個具備對他們需要的工具提供接口的集成開發(fā)環(huán)境。 從原來的 Visual C++C++.Net 2021升級而來, 它的最大優(yōu)點就是提供了功能強大的 MFC類庫, MFC是一個很大的C++類層次結(jié)構(gòu),其中封裝了大量的類及其函數(shù),很多 Windows程序所共有的標(biāo)準(zhǔn)內(nèi)容可以由 MFC的類來提供, MFC類為這些內(nèi)容提供了用戶接口的標(biāo)準(zhǔn)實現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個輪廓,這將簡化編程工作,大大的減少程序員編寫的代碼數(shù)量,使編程工作變得更加輕松容易。 開發(fā)工具的選用及介紹 軟件環(huán)境使用 Windows2021/XP操作系統(tǒng),用 Visual C++ .NET為開發(fā)平臺,在開發(fā)此軟件時用的是 VC++中的 MFC框架。靜態(tài)語義錯誤是指分析源程序時可以發(fā)現(xiàn)的語言意義上的錯誤,如加法的兩個操作數(shù)中一個是整型變量名,而另一個是數(shù)組名等。靜態(tài)錯誤又可分為語法錯誤和靜態(tài)語義錯誤。 (8)出錯處理 用戶編寫的源程序中往往會有一些錯誤,可分為靜態(tài)錯誤和動態(tài)錯誤兩類。 (7)符號表管理 符號表 的作用是記錄源程序中符號的必要信息,并加以合理組織,從而在編譯器的各個階段能對它們進(jìn)行快速、準(zhǔn)確的查找和操作。在生成目標(biāo)代碼時要考慮以下幾個問題:計算機的系統(tǒng)結(jié)構(gòu)、指令系統(tǒng)、寄存器的分配以及內(nèi)存的組織等。當(dāng)需要生成高效目標(biāo)代碼時,就必須進(jìn)行優(yōu)化。三地址碼的優(yōu)點是便于閱讀、便于優(yōu)化。中間代碼可以有若干種形式,它們的共同特征是與具體機器無關(guān)。 (3)語義分析 語義分析器根據(jù)語義規(guī)則對語法樹中的語法單元進(jìn)行靜態(tài)語義檢查,如果類型檢查和轉(zhuǎn)換等,其目的在于保證語法正確的結(jié)構(gòu)在語義上也是合法的。本質(zhì)上它查看連續(xù)的字符然后把它們識別為“單詞”。詞法分析器的輸入是源程序,輸出是識別的記號流。 3 C 編譯器設(shè)計思想 一個編譯器的主要工作過程可以概括為以下幾個步驟: (1)詞法分析 詞法分析器根據(jù)詞法規(guī)則識別出源程序中的各個記號( token),每個記號代表一類單詞( lexeme)。 典型的編譯器輸出是由包含入口點的名字和地址 , 以及外部調(diào)用(到不在這個 目標(biāo)文件中的函數(shù)調(diào)用)的機器代碼所組成的目標(biāo)文件。然而,也存在從低階語言到高階語言的編譯器,這類編譯器中用來從由高階語言生成的低階語言代碼重新生成高階語言代碼的又被叫做反編譯器。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的 C語言。既可用于系統(tǒng)軟件的開發(fā),也適合于應(yīng)用軟件的開發(fā)。它還可以直接訪問內(nèi)存的物理地址,進(jìn)行位 (bit)一級的操作。 C 語言的表現(xiàn)能力和處理能力極強。 C語言是一種結(jié)構(gòu)化語言。本文在研究 基于 windows 平臺的基礎(chǔ)上,設(shè)計并實現(xiàn) 啦 編譯器的詞法分析模塊。VC++, 引言 : 詞法分析是編譯過程中的基礎(chǔ)階段。在本文的第四章詳細(xì)給出了此次設(shè)計所實現(xiàn)的功能和語法規(guī)范,同時也給出了編譯器的運行方式。每個部分又分別從總體框架,詳細(xì)流程,重點數(shù)據(jù)結(jié)構(gòu)和函數(shù),以及與其他部分的接口等方面予以闡述。首先介紹了 C 語言及 C 語言編譯器的發(fā)展歷程,其次對本次開發(fā)所用到的工具 Visual Studio C++2021 以及面向?qū)ο蟮某绦蛟O(shè)計方法做一下簡單介紹。1 畢業(yè)論文(設(shè)計) 題 目: 基于 C 語言子系統(tǒng)的詞法分析器計與實現(xiàn) 完 成 人: __ 班 級: 202106 _ 學(xué) 制: 4 年 _ 專 業(yè): 軟件工程 指導(dǎo)教師: 完成日期: 20210309 _ 2 基于 C 語言詞法分析器的設(shè)計與實現(xiàn) 摘要 : 算法實現(xiàn)是學(xué)生學(xué)習(xí)過程中的難點 , 編譯器是程序員使用的關(guān)鍵工具,程序員每天都在使用編譯器,依賴于其正確性和可靠性。編譯器作為廣大 IT 從業(yè)者必須接觸的系統(tǒng)軟件,它的設(shè)計本身又是一個極其龐大的工程。最后重點介紹了編譯器的詳細(xì)開發(fā)過程,分為 四個部分分別闡述:詞法分析器的設(shè)計,語法分析器的設(shè)計,語義分析,以及系統(tǒng)的用戶界面部分。本次設(shè)計只象征性的選擇部分具有代表性的功能。 關(guān)鍵詞: 編譯器; C 語言程序;面向?qū)ο蟪绦蛟O(shè)計方法 。開發(fā)程序設(shè)計語言詞法分析器的方法主要有兩種;一種是手工編寫;另一種借助 與 輔助工具。 緒論 C 語言及編譯器概述 C語言是在 70年代初問世的。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。它不僅具有豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。由于 C語言實現(xiàn)了對硬件的編程操作,因此 C 語言集高級語言和低級語言的功能于一體。此外, C 語言還 具有效率高,可移植性強等特點。 編譯是從源代碼(通常為高階語言)到能直接被計算機或虛擬機執(zhí)行的目標(biāo)代碼(通常為低階語言或機器語言)的翻譯過程。也有從一種高階語言生成另一種高階語言的編譯器,或者生成一種需要進(jìn)一步處理的的中間代碼的編譯器(又叫級聯(lián))。一組目標(biāo)文件,不必是同一編譯器產(chǎn)生,但使用的編譯器必需采用同樣的輸出格式,可以鏈接在一起并生成可以由用戶直接執(zhí)行的可執(zhí)行程序。源程序中常見的記號可以歸為幾大類:關(guān)鍵字、標(biāo)識符、字面量和特殊符號。詞法分析器的任務(wù)是把源文件 的字符流轉(zhuǎn)換成記號流。 (2)語法分析 語法分析器根據(jù)語法規(guī)則識別出記號流中的結(jié)構(gòu)(短語、句子),并構(gòu)造一棵能夠正確反映該結(jié)構(gòu)的語法樹。 (4)中間代碼生成 中間代碼生成器根據(jù)語義分析器的輸出生成中間代碼。最常用的一種中間代碼是三地址碼,它的一種實現(xiàn)方式是四 元式。 (5)中間代碼優(yōu)化 優(yōu)化是編譯器的一個重要組成部分,由于編譯器將源程序翻譯成中間代碼的工作是機械的、按固定模式進(jìn)行的,因此,生成的中間代碼往往在時間和空間上有很大浪費。 (6)目標(biāo)代碼生成 目標(biāo)代碼生成是編譯器的最后一個階段。編譯器生成的目標(biāo)程序代碼可以有多種形式:匯編語言、可重定位二進(jìn)制代碼、內(nèi)存形式。符號表中的某些內(nèi)容甚至要保留到程序的運行階段。所謂動態(tài)錯誤,是指源程序中的邏輯錯誤,它們發(fā)生在程序運行的時候,也被稱作動態(tài)語義錯誤,如變量取值為零時作為除數(shù),數(shù)組元素引用時下標(biāo)出界等。語法錯誤是指有關(guān)語言結(jié)構(gòu)上的錯誤,如單詞拼寫錯、表達(dá)式中缺少操作數(shù)、 begin4 和 end不匹配等 。 本系統(tǒng)的設(shè)計主要是實現(xiàn)了其中的詞法分析、語法分析和語義分析三個部分。 Visual C++.NET2021 是 微 軟 公 司 推 出 的 開 發(fā) Win32 應(yīng) 用 程 序 ( Windows 95/98/2021/XP/NT)的面向?qū)ο蟮目梢暬晒ぞ?。 當(dāng)然還有 Visual 2021和最新的 Visual 2021beta版也已經(jīng)發(fā)布。下面主要介紹它的有點。這使開發(fā)人員能夠在生命周期的較早階段就改善其代碼的質(zhì)量,而無需中斷他們的工作。 Visual Studio 2021 Team System,那么過程就不僅僅是文檔了。當(dāng)您在項目初期選擇過程時,還需要選擇工作流和工作產(chǎn)品,它們會驅(qū)動系統(tǒng)的行為方式。通過將過程集成到團(tuán)隊成員日常使用的基本工具中, Visual Studio 2021 Team System 大大消除了過程采納的障礙,并使自動收集跨職能的項目標(biāo)準(zhǔn)成為可能,而無需實施人工報告的相關(guān)開銷。團(tuán)隊根據(jù)能夠收集到的規(guī)則來管理項目。 Visual Studio Team System 中集成的數(shù)據(jù)將開創(chuàng)一條新路 — 通過平衡利用貫穿于 SDLC 的大量、多樣的數(shù)據(jù)來管理項目規(guī)則。該數(shù)據(jù)以某些標(biāo)準(zhǔn)的報告方式呈現(xiàn),客戶和 Microsoft 內(nèi)部團(tuán)隊已在報告中建立了成功項目管理的關(guān)鍵規(guī)則。僅當(dāng)以項目的大范圍上下文查看數(shù)據(jù)時,團(tuán)隊才能夠精確地報告項目狀態(tài)。 C 語言詞法分析器的總體分析與設(shè)計 系統(tǒng)設(shè)計目標(biāo)與功能分析 本系統(tǒng)的設(shè)計目標(biāo)是完成一個小型的 C語言編譯器,由于要完成一個完美的 C語言編譯器是一件非常復(fù)雜的事情,不僅要考慮到 C語言代碼的 各種靈活用法,還需要熟悉生成目標(biāo)代碼和生成解析可執(zhí)行文件的原理,甚至是匯編語言。 另外,本系統(tǒng)包含一個簡單易用的用戶界面部分,可以進(jìn)行 C語言代碼的編寫、打開、保存等功能,并且代碼視圖采用的是關(guān)鍵字高亮顯示技術(shù),使代碼的閱讀更加直觀。 下面分別概括介紹編譯過程中的這幾個階段。其主要任務(wù)是從左到右依次描描字符串形式的源程序的各個字符,逐個識別出其中的單詞,并將其轉(zhuǎn)換成為內(nèi)部編碼形式的單詞符號串輸出,用于進(jìn)行語法分析。 概括的說,掃描器在其工作過程中,一般應(yīng)完成下列的任務(wù): ( 1)識別出源程序中的各個單詞符號,并將其轉(zhuǎn)換成 內(nèi)部編碼形式; ( 2)刪除無用的空白字符、回車字符以及其他非實質(zhì)性字符; ( 3)刪除注釋; ( 4)進(jìn)行詞法檢查,報告所發(fā)現(xiàn)的錯誤。 從功能上看,詞法分析上把字符串形式的源程序轉(zhuǎn)換為單詞串形式,然后進(jìn)行語法分析。一種方式是將詞法分析的輸出結(jié)果存放在一個中間文件上,后面的語法分析程序?qū)⑺鳛檩斎脒M(jìn)行語法分析 。本設(shè)計采用前一種方式。 目 前,已存在多種語法分析方面的方法,但就產(chǎn)生語法樹的方向而言,可大致把它們分為自頂向下分析和自底向上分析兩大類。如果這一嘗試得到成功,則證明 w是相應(yīng)文法的一個句子;反之,則不是。 (2) 采用最左推導(dǎo)以實現(xiàn)對符號串 w的匹配,實際上是一個用文法產(chǎn)生式的諸候選式反復(fù)進(jìn)行試探的過程,這勢必會出現(xiàn)大量的回溯,從而導(dǎo)致語法分析效率的大幅度下降。 所謂自底向上的語法分析,是指從給定的輸入串 w=a1a2?an 出發(fā),試圖利用相應(yīng)文法中的產(chǎn)生式,逐步將其歸約為文法的開始符號 S,即從葉結(jié)點 a1,a2,?,an 出發(fā),試圖逐步向上構(gòu)造 一個語法樹,而其根結(jié)點恰好為 S0 由于上述分析過程通常采用的是最左歸約,所以實現(xiàn)此種語法分析的關(guān)鍵,是在分析的每一步,如何尋找或確定當(dāng)前句型的句柄,以及確定將其歸約為什么非終結(jié)符號。分析開始時,在棧底放置一個界符 ,然后將輸入符號逐個推入棧內(nèi),一旦在分析棧的棧頂出現(xiàn)句柄,就用相應(yīng)的產(chǎn)生式的左部去替換這個句柄,即進(jìn)行一次歸約。若最終能將全部輸入符號(不包括右界符 )移掉,且分析棧中只留下棧底符號 及最后一步歸約所
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1