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

正文內(nèi)容

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

2025-03-10 09:17本頁(yè)面
  

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