




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、計算機專業(yè)類課程實驗報告課程名稱:編譯原理學(xué)院:計算機科學(xué)與工程學(xué)院專業(yè):計算機科學(xué)與技術(shù)專業(yè)學(xué)生姓名:郫縣庫里學(xué)號:2014666666666指導(dǎo)教師:日期: 2017年 5月 14日電 子 科 技 大 學(xué)實 驗 報 告實驗一1、 實驗名稱:詞法分析器的設(shè)計與實現(xiàn)2、 實驗學(xué)時:43、 實驗內(nèi)容和目的:(一)實驗內(nèi)容:1.源語言:求n!的極小語言2.輸入輸出:源程序*.pas文件作為輸入,經(jīng)過自己編程實現(xiàn)的詞法分析器進行處理,生成二元式,保存到*.dyd文件中,如下圖所示。(二)實驗?zāi)康模和ㄟ^設(shè)計詞法分析器的實驗,使同學(xué)們了解和掌握詞法分析程序設(shè)計的原理及相應(yīng)的程序設(shè)計方法,同時提高編程能力
2、。4、 實驗原理:(一) 結(jié)合“數(shù)據(jù)結(jié)構(gòu)”進行分析:1. 二元式文件*.dyd(1) 二元式形式:分析:由輸出二元式形式可知,使用printf輸出可以很方便達到要求:(2) 每行后加一分析:對輸入文件中的換行符“n”,要采取相應(yīng)的策略:(3) 文件結(jié)尾加分析:對于文件末尾的“EOF”,要采取相應(yīng)的策略:2. 錯誤信息文件:*.err(1) 錯誤信息格式分析:設(shè)置出錯處理的函數(shù),并且需要記錄錯誤行號、錯誤性質(zhì):(2) 注意:進入每一階段, 首先打開*.err, 如果無錯誤, 則*.err為空。(二) 詞法分析的實現(xiàn)方法利用狀態(tài)轉(zhuǎn)換分析:根據(jù)狀態(tài)轉(zhuǎn)化圖,編寫讀到不同的內(nèi)容時的狀態(tài)轉(zhuǎn)化函數(shù),是設(shè)計詞
3、法分析器的核心。(三) 對“輸入輸出”文件的分析文件相關(guān)操作因為需要讀寫文件,并生成錯誤文件,涉及許多文件相關(guān)操作,通過相關(guān)函數(shù)函數(shù)實現(xiàn)功能:5、 實驗器材(設(shè)備、元器件)(一) 操作系統(tǒng):Windows 8 Professional (二) 開發(fā)工具:Visual Studio 2015(三) 編程語言:C6、 實驗步驟:(一) 啟動Visual Studio 2015,新建一個項目LxicalAnalyzer(二) 編寫LxicalAnalyzer.h文件,聲明項目將要用到的自定義函數(shù):(三) 編寫LxicalAnalyzer.cpp文件,根據(jù)“狀態(tài)轉(zhuǎn)化圖”、“單詞符號與種別對照表”實現(xiàn)L
4、xicalAnalyzer.h中聲明的函數(shù)(詳細代碼附在實驗報告最后);(四) 編寫main.cpp文件,完成編碼;(五) 根據(jù)給出的測試程序,編寫輸入文件test.pas(六) 運行寫好的詞法分析器程序,并結(jié)合輸出文件test.err、test.dyd進行調(diào)試;(七) 完成實驗。7、 實驗數(shù)據(jù)及結(jié)果分析:(一) 輸入文件test.pas(二) 執(zhí)行詞法分析器程序(三) 檢查輸出文件test.err因為輸入文件中測試程序沒有錯誤,所以文件為空:(四) 檢查輸出文件test.dyd檢查可知,輸出文件內(nèi)容為符合實驗要求的二元式: (五) 修改輸入文件,在輸入文件中添加錯誤(六) 再次執(zhí)行詞法分析器
5、程序(七) 重新檢查輸出文件test.err可見,本詞法分析器成功實現(xiàn)檢查多處詞法錯誤:8、 實驗結(jié)論、心得體會和改進建議:(一) 實驗結(jié)論通過編碼與反復(fù)調(diào)試,成功完成了詞法分析器的設(shè)計與實現(xiàn),能夠?qū)o出文法的測試程序進行正確的詞法分析,按要求輸出二元式的*.dyd文件。同時,也可以檢測出所給源程序中的多處詞法錯誤。(二) 心得體會1. 對于這種需要多次重復(fù)同一操作的實驗,將相應(yīng)的操作寫成函數(shù),可以方便編碼,減少錯誤和代碼行數(shù)。2. 第一次編碼忽略了狀態(tài)轉(zhuǎn)化之后的回退工作,導(dǎo)致bug的出現(xiàn),以后需要吸取經(jīng)驗教訓(xùn)。3. 盡量在第一次編寫程序時,寫出較多的提示信息和注釋,便于發(fā)現(xiàn)bug后的調(diào)試。(
6、三) 改進建議上課使用的教材P134頁“第六章 詞法分析”中的內(nèi)容對本實驗的完成有很大幫助,認真閱讀后思路更加清晰。*為便于老師評閱報告,兩次實驗代碼都添加底紋后放在在文檔最后部分*電 子 科 技 大 學(xué)實 驗 報 告實驗二1、 實驗名稱:遞歸下降分析器的設(shè)計與實現(xiàn)2、 實驗學(xué)時:43、 實驗內(nèi)容和目的:(一)實驗內(nèi)容:根據(jù)給定的方法,編寫相應(yīng)的遞歸下降的語法分析程序,實現(xiàn)對詞法分析后的單詞序列的語法檢查和程序結(jié)構(gòu)的分析,生成相應(yīng)的變量名表和過程名表,并將編譯中語法檢查出來的錯誤寫入相應(yīng)的文件。語法錯分類:(1)缺少符號錯;(2)符號匹配錯;(3)符號無定義或重復(fù)定義。(二)實驗?zāi)康模和ㄟ^設(shè)計
7、遞歸下降分析器的設(shè)計與實現(xiàn)實驗,使同學(xué)們掌握自上而下的遞歸分析法的語法分析原理和程序設(shè)計方法。4、 實驗原理:(一)語法分析的定義和功能語法分析是根據(jù)語法規(guī)則,將單詞符號構(gòu)成各類語法單位,并進行語法檢查。在本實驗中,對源程序經(jīng)過詞法分析后轉(zhuǎn)換成的單詞流按方法規(guī)則進行判斷,對能構(gòu)成正確句子的單詞流,給出相應(yīng)的語法樹;對不能構(gòu)成正確句子的單詞流判斷其語法錯誤并做出相應(yīng)處理。(二)語法分析的方法語法分析方法有自上而下和自下而上的分析方法。(1)自上而下語法分析法:或從開始符號出發(fā),找最左推導(dǎo);或從根開始,構(gòu)造推導(dǎo)樹。(2)自下而上語法分析法:從輸入串開始,歸約,直至文法開始符。本實驗中,我們采用自上
8、而下的遞歸下降分析法,在不含左遞歸的文法G中,如果對每一個非終結(jié)符的所有候選式的第一個終結(jié)符都是兩兩不相交的(即無公共左因子),則可能構(gòu)造出一個不帶回溯的自上而下的分析程序,這個分析程序由一組遞歸過程組成,每個過程對應(yīng)文法的一個非終結(jié)符。這樣的分析程序稱為遞歸下降分析程序。(三)數(shù)據(jù)結(jié)構(gòu)1.*.dys同*.dyd2.變量名表·變量名vname: char(16)·所屬過程vproc:char(16)·分類vkind: 0.1(0變量、1形參)·變量類型vtype: types·變量層次vlev: int·變量在變量表中的位置vadr:
9、 int(相對第一個變量而言)3.過程名表·過程名pname: char(16)·過程類型ptype: types·過程層次plev: int·第一個變量在變量表中的位置fadr: int·最后一個變量在變量表中的位置ladr: int4.四元式表 (oprd, op1, op2, result)·oprd整數(shù)碼·op1第一操作數(shù)·op2第二操作數(shù)·result結(jié)果·op1、op2、result可用“值/地址”表示5.目標(biāo)代碼P碼 (四)給定文法產(chǎn)生式實驗中給定文法如下:<程序>&l
10、t;分程序><分程序>begin <說明語句表>;<執(zhí)行語句表> end<說明語句表><說明語句><說明語句表> ;<說明語句><說明語句><變量說明><函數(shù)說明><變量說明>integer <變量><變量><標(biāo)識符><標(biāo)識符><字母><標(biāo)識符><字母> <標(biāo)識符><數(shù)字><字母>abcdefghijklmno pq rstuvwxyz&l
11、t;數(shù)字>0123456789<函數(shù)說明>integer function <標(biāo)識符>(<參數(shù)>);<函數(shù)體><參數(shù)><變量><函數(shù)體>begin <說明語句表>;<執(zhí)行語句表> end<執(zhí)行語句表><執(zhí)行語句><執(zhí)行語句表>;<執(zhí)行語句><執(zhí)行語句><讀語句><寫語句><賦值語句><條件語句><讀語句>read(<變量>)<寫語句>wri
12、te(<變量>)<賦值語句><變量>:=<算術(shù)表達式><算術(shù)表達式><算術(shù)表達式>-<項><項><項><項>*<因子><因子><因子><變量><常數(shù)><函數(shù)調(diào)用><常數(shù)><無符號整數(shù)><無符號整數(shù)><數(shù)字><無符號整數(shù)><數(shù)字><條件語句>if<條件表達式>then<執(zhí)行語句>else <執(zhí)行
13、語句><條件表達式><算術(shù)表達式><關(guān)系運算符><算術(shù)表達式><關(guān)系運算符> <<=>>=<>5、 實驗器材(設(shè)備、元器件)(一)操作系統(tǒng):Windows 8 Professional (二)開發(fā)工具:Visual Studio 2015(三)編程語言:C6、 實驗步驟:(一) 啟動Visual Studio 2015,新建一個項目GrammerAnalyzer;(二) 消除文法中的左遞歸;(三)編寫GrammerAnalyzer.h文件,定義將要用到的結(jié)構(gòu),并聲明項目將要用到的自定義函數(shù):(
14、四)編寫GrammerAnalyzer.cpp文件,根據(jù)“文法產(chǎn)生式”實現(xiàn)LxicalAnalyzer.h中聲明的函數(shù)和具體的遞歸下降分析法(詳細代碼附在實驗報告最后);(五)編寫main.cpp文件,完成編碼;(五)將詞法分析器的輸出文件test.dyd作為實現(xiàn)的語法分析器的輸入文件: (六)運行寫好的詞法分析器程序,并結(jié)合輸出文件test.dys、變量名表文件test.var、過程名表文件、錯誤文件等進行調(diào)試;(七)完成實驗。7、 實驗數(shù)據(jù)及結(jié)果分析:(一)輸入文件test.dyd,內(nèi)容為2元式子 (二)執(zhí)行詞法分析器程序(三)檢查輸出文件test.dys,與輸入文件相同,
15、正確: (四)檢查變量名表文件test.var,符合要求:(五)檢查過程名表文件,符合要求:(六)檢查過程名表文件test.err,基本符合要求:8、 實驗結(jié)論、心得體會和改進建議:(一)實驗結(jié)論:本實驗程序較好地完成了遞歸下降分析器的設(shè)計與實現(xiàn),能夠?qū)λo文法的程序進行語法分析,生成變量名表和過程名表,如果源程序有語法錯誤則給出出錯類型及所在行數(shù)。(二)心得體會:1.標(biāo)識符中不能包含關(guān)鍵字,以免出錯;2.要注意文法中公共左因子的消除;3.思路要清晰,加一些提示信息,避免出現(xiàn)邏輯錯誤;4.由于對Pascal語言語法細節(jié)不是特別熟悉,所以對錯誤的識別不一定準(zhǔn)確,還有改正和提高的空
16、間,期末考試過后有時間,可以做進一步的完善。(三)改進建議:可以改成對C語言等我們經(jīng)常接觸到的語言作為本次實驗的源語言,實驗做起來可能會更有趣。*以下為實驗一源代碼,共三個文件*(一) LexicalAnalyzer.h#pragma once#ifndef LEXICALANALYZER_H#define LEXICALANALYZER_Hchar getNextC(); /獲取下一個字符bool lexAnalyzer(); /用于詞法分析的函數(shù)bool isLetter(char ch); /判斷ch是否為字母bool isDigit(char ch); /判斷ch是否為數(shù)字void r
17、etract(char& ch); /回退字符int reserve(char* token); /返回保留字對應(yīng)種別int symbol(); /返回標(biāo)識符的對應(yīng)種別int constant(); /返回常數(shù)的對應(yīng)種別void output_token(const char* token, int kindNum); /按要求格式輸出單詞符號和種別bool printError(int lineNum, int errNum); /按要求打印錯誤提醒void getPath(char* in, char* out); /獲得路徑void getFilename(char* in, c
18、har*out); /獲得文件名bool init(int argc, char* argv); /初始化函數(shù)#endif / ! LEXICALANALYZER_H(二) LexicalAnalyzer.cpp#include "LexicalAnalyzer.h"#include <string>#define MAX_COUNT 1024#define ILLEGAL_CHAR_ERROR 1#define UNKNOWN_OPERATOR_ERROR 2FILE *file;bool lexAnalyzer() /用于詞法分析的函數(shù) if (feof(f
19、ile) return false; static int lineNum = 1; char ch; char token17 = "" ch = getNextC(); switch (ch) case 'r': case 'n': /每行后加一ÈEOLNÈ24 output_token("EOLN", 24); lineNum+; break; case EOF: /結(jié)尾加 EOFÈ25 output_token("EOF", 25); return false; c
20、ase 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q
21、39;: case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case
22、39;H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': c
23、ase 'Y': case 'Z': while (isLetter(ch)|isDigit(ch) ) char s2 = ch ; strcat(token, s); ch = getchar(); retract(ch); int num; num = reserve(token); if (num != 0) output_token(token, num); else int val; val = symbol(); /標(biāo)識符 output_token(token, val); break; case '0': case '1&
24、#39;: case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': while (isDigit(ch) char s2 = ch ; strcat(token, s); ch = getchar(); retract(ch); int val; val = constant(); output_token(token, val); break; case '
25、;=': output_token("=", 12); break; case '<': ch = getchar(); if (ch = '>') output_token("<>", 13); else if (ch = '=') output_token("<=", 14); else retract(ch); output_token("<", 15); break; case '>': ch
26、= getchar(); if (ch = '=') output_token(">=", 16); else retract(ch); output_token(">", 17); break; case '-': output_token("-", 18); break; case '*': output_token("*", 19); break; case ':': ch = getchar(); if (ch = '=
27、39;) output_token(":=", 20); else printError(lineNum, 2); /輸出“未知運算符”錯誤 break; case '(': output_token("(", 21); break; case ')': output_token(")", 22); break; case '': output_token("", 23); break; default: printError(lineNum, 1); /輸出&quo
28、t;出現(xiàn)字母表以外的非法字符"錯誤 return true;bool isLetter(char ch) /判斷ch是否為字母 if (ch >= 'a'&&ch <= 'z') | (ch >= 'A' && ch <= 'Z') return true; else return false;bool isDigit(char ch) /判斷ch是否為數(shù)字 if (ch >= '0')&& (ch <= '9
29、39;) return true; else return false;void retract(char& ch) /回退字符 ungetc(ch, stdin); ch = NULL;int reserve(char* token) /返回保留字對應(yīng)種別 if (strcmp(token, "begin") = 0) return 1; else if (strcmp(token, "end") = 0) return 2; else if (strcmp(token, "integer") = 0) return 3;
30、else if (strcmp(token, "if") = 0) return 4; else if (strcmp(token, "then") = 0) return 5; else if (strcmp(token, "else") = 0) return 6; else if (strcmp(token, "function") = 0) return 7; else if (strcmp(token, "read") = 0) return 8; else if (strcmp(to
31、ken, "write") = 0) return 9; else return 0;int symbol() /返回標(biāo)識符對應(yīng)種別 return 10;int constant() /返回保常數(shù)對應(yīng)種別 return 11;void output_token(const char* token, int kindNum) /按要求輸出二元式 printf("%16s %2dn", token, kindNum);bool printError(int lineNum, int errNum) /按要求輸出錯誤 char * errInfo; switc
32、h (errNum) case ILLEGAL_CHAR_ERROR: errInfo = "出現(xiàn)字母表以外的非法字符" break; case UNKNOWN_OPERATOR_ERROR: errInfo = "出現(xiàn)未知運算符(“:”后無“=”)" break; default: errInfo = "未知錯誤" if (fprintf(stderr, "*LINE:%d %sn", lineNum, errInfo) >= 0) return true; else return false;char g
33、etNextC() /獲取下一個字符 char ch; ch = getchar(); while (true) if (ch = 'r' | ch = 't' | ch = ' ') / ch = getchar(); else break; return ch; void getPath(char* in, char* out) /獲得路徑 char* name; name = strrchr(in, ''); if (name != NULL) strncpy(out, in, strlen(in) - strlen(nam
34、e) + 1); else strcpy(out, "");void getFilename(char* in, char* out) /獲得文件名 char* fullName; char* extension; fullName = strrchr(in, ''); extension = strrchr(in, '.'); if (fullName != NULL) strncpy(out, fullName + 1, strlen(fullName) - 1 - strlen(extension); else strncpy(out,
35、 in, strlen(in) - strlen(extension);bool init(int argc, char* argv) /初始化函數(shù) if (0) return false; else char* inFilename = "test.pas" char outFilenameMAX_COUNT = "" char errFilenameMAX_COUNT = "" char filenameMAX_COUNT = "" char pathMAX_COUNT = "" /獲得文件
36、名(不包括擴展名)和路徑 getFilename(inFilename, filename); getPath(inFilename, path); /生成輸出文件全部路徑 strcat(outFilename, path); strcat(outFilename, filename); strcat(outFilename, ".dyd"); /生成錯誤文件全部路徑 strcat(errFilename, path); strcat(errFilename, filename); strcat(errFilename, ".err"); if (fil
37、e = freopen(inFilename, "r", stdin)= NULL) printf("文件打開錯誤"); return false; if (file = freopen(outFilename, "w", stdout) = NULL) printf("緩存區(qū)寫入錯誤"); return false; if (file = freopen(errFilename, "w", stderr) = NULL) printf("錯誤區(qū)寫入錯誤"); return
38、false; return true; (三) main.cpp#include "LexicalAnalyzer.h"#include <stdio.h>int main(int argc, char* argv) if (init(argc, argv) while (lexAnalyzer(); fclose(stdin); fclose(stdout); fclose(stderr); return 0;*以下為實驗二源代碼,共三個文件*(一)GrammerAnalyzer.h#pragma once#ifndef GRAMMERANALYZER_H#d
39、efine GRAMMERANALYZER_Htypedef enum integer types; /types是支持類型的集合typedef struct /記錄變量信息的結(jié)構(gòu)體 char vname17; char vproc17; bool vkind; types vtype; int vlev; int vadr; varRecord;typedef struct /記錄過程信息的結(jié)構(gòu)體 char pname17; types ptype; int plev; int varNum; int fadr; int ladr; int parameter; bool parameter
40、IsDefined; proRecord;void A(); /A:程序 A->Bvoid B(); /B:分程序 B->begin C;M endvoid C(); /C:說明與句表 C->DC'void C_(); /C_:DC'|void D(); /D:說明語句 D->E|Jvoid E(); /E:變量說明 E->integer Fvoid F(); /F:變量 F->Gvoid G(); /G:標(biāo)識符 G->HG' G'->HG'|IG'|void J(); /J:函數(shù)說明 J->
41、integer function G(K);Lvoid K(); /K:參數(shù) K->Fvoid L(); /L:函數(shù)體 L->begin C;M endvoid M(); /M:執(zhí)行語句表 M->NM'void M_(); /M'->NM'|void N(); /N:執(zhí)行語句 N->O|P|Q|Wvoid O(); /O:讀語句 O->read(F)void P(); /P:寫語句 P->write(F)void Q(); /Q:賦值語句 Q->F:=Rvoid R(); /R:算術(shù)表達式 R->SR'voi
42、d R_(); /R'->-SR'|void S(); /S:項 S->TS'void S_(); /S'->*TS'|void T(); /T:因子 T->F|U|Zvoid U(); /U:常數(shù) U->Vvoid W(); /W:條件語句 W->if X then N else Nvoid X(); /X:條件表達式 X->RYRvoid Y(); /Y:關(guān)系運算符 Y-><|<=|>|>=|=|<>void Z(); /Z:函數(shù)調(diào)用 Z->G(R)bool i
43、nit(int argc, char* argv);/初始化函數(shù):從輸入文件讀取數(shù)據(jù),建立各個文件,初始化全局變量bool final(); /結(jié)束處理函數(shù),將var和pro數(shù)組中的元素輸出到相應(yīng)文件,填充輸出文件bool error(int lineNum, int errNum, const char* sign); /錯誤處理函數(shù),參數(shù)分別為行號、錯誤碼和錯誤符號void getPath(char* in, char* out); /獲得所處目錄路徑,包括最后斜杠,或者為空void getFilename(char* in, char* out); /獲得文件名,不包括擴展bool ne
44、xtToken(); /獲得下一符號,true表示已到隊尾,false表示還未到隊尾bool nextChar(); /獲得當(dāng)前符號的下一字符,true表示已到'0'bool isVarExisted(char* vname, char* vproc, bool vkind); /判斷變量是否已存在bool isProExisted(char* vname); /判斷過程是否已存在,參數(shù)為過程名int getNextToken(); /獲得下一符號,指針不變#endif / !GRAMMERANALYZER_H(二)GrammerAnalyzer.cpp#include &qu
45、ot;GrammerAnalyzer.h"#include <stdio.h>#include <string.h>#include <Windows.h>#define MAX_COUNT 1024#define SIGN_UNDEFINED_ERR 1#define SIGN_REDEFINED_ERR 2#define SIGN_EXECUTE_ERR 3#define NO_SIGN_ERR 4#define SIGN_RESERVE_ERR 5#define NO_PARA_ERR 6char inputMAX_COUNT17;/存放輸入
46、文件所有符號的數(shù)組int kindMAX_COUNT;int inputCount;/輸入符號的數(shù)量int pToken;/指向當(dāng)前輸入符號int pChar;/指向當(dāng)前輸入符號中的當(dāng)前字符varRecord currentVar;/存放當(dāng)前變量的信息proRecord currentPro;/存放當(dāng)前過程的信息int lineNum;/當(dāng)前行號varRecord varMAX_COUNT;/存放變量名表項數(shù)組proRecord proMAX_COUNT;/存放過程名表項數(shù)組int varCount;/變量的數(shù)量int proCount;/過程的數(shù)量FILE* inFile;/輸入文件句柄FI
47、LE* outFile;/輸出文件句柄FILE* errFile;/錯誤文件句柄FILE* varFile;/變量文件句柄FILE* proFile;/過程文件句柄bool init(int argc, char* argv) if (0) return false; else char* inFilename ="test.dyd"/argv1 char outFilenameMAX_COUNT = "" char errFilenameMAX_COUNT = "" char varFilenameMAX_COUNT = "
48、;" char proFilenameMAX_COUNT = "" char filenameMAX_COUNT = "" char pathMAX_COUNT = "" /獲得文件名(不包括擴展名)和路徑 getFilename(inFilename, filename); getPath(inFilename, path); /生成輸出文件全部路徑 strcat(outFilename, path); /strcat(outFilename, ""); strcat(outFilename, file
49、name); strcat(outFilename, ".dys"); /生成錯誤文件全部路徑 strcat(errFilename, path); /strcat(errFilename, ""); strcat(errFilename, filename); strcat(errFilename, ".err"); /生成變量文件全部路徑 strcat(varFilename, path); /strcat(varFilename, ""); strcat(varFilename, filename); str
50、cat(varFilename, ".var"); /生成過程文件全部路徑 strcat(proFilename, path); /strcat(proFilename, ""); strcat(proFilename, filename); strcat(proFilename, ".pro"); /打開文件句柄 if (inFile = fopen(inFilename, "r") && (outFile = fopen(outFilename, "w") && (errFile = fopen(errFilename, "w") && (varFile = fopen(varFilename, "w") && (proFile = fopen(proFilename, "w") /初始
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 61215:2005 FR-D Crystalline silicon terrestrial photovoltaic (PV) modules - Design qualification and type approval
- 【正版授權(quán)】 IEC 61558-1:1997+AMD1:1998 CSV EN-D Safety of power transformers,power supply units and similar - Part 1: General requirements and tests
- 【正版授權(quán)】 IEC 61058-1:2000+AMD1:2001 CSV EN-D Switches for appliances - Part 1: General requirements
- 2025年主題教育活動實施方案
- 2025年五一主題勞動光榮活動方案
- 放射性腸炎的評估及護理
- 校園安全教育活動方案2025年模板
- 伺服系統(tǒng)與工業(yè)機器人 課件匯 第6-13章 伺服驅(qū)動器的參數(shù)配置-工業(yè)機器人工程應(yīng)用及實例
- 迎接2025年元旦節(jié)聯(lián)歡晚會活動方案
- 酒店安全知識培訓(xùn)
- 佳能相機PowerShot SX60 HS使用說明書
- GB/T 44311-2024適老環(huán)境評估導(dǎo)則
- 2025屆高考語文復(fù)習(xí):補寫語句+課件
- 幼兒園美術(shù):交通工具
- 康養(yǎng)服務(wù)專業(yè)群建設(shè)方案
- 人教版部編版統(tǒng)編版一年級語文上冊漢語拼音9《y+w》課件
- CB-Z-211-1984船用金屬復(fù)合材料超聲波探傷工藝規(guī)程
- CJJ99-2017 城市橋梁養(yǎng)護技術(shù)標(biāo)準(zhǔn)
- 澳大利亞省公開課一等獎新名師比賽一等獎?wù)n件
- 2024年高考英語快速提閱讀-科技創(chuàng)新類詞匯記
- 《濕地資源資產(chǎn)評估和資源核算技術(shù)規(guī)范》報批稿及編制說明
評論
0/150
提交評論