




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗一 詞法分析程序實現一、實驗目的與要求通過編寫和調試一個詞法分析程序,掌握在對程序設計語言的源程序進行掃描的過程中,將字符形式的源程序流轉化為一個由各類單詞符號組成的流的詞法分析方法。二、實驗內容選取無符號數的算術四則運算中的各類單詞為識別對象,要求將其中的各個單詞識別出來。輸入:由無符號數和+,*,/, ( , ) 構成的算術表達式,如1.5E+2100。輸出:對識別出的每一單詞均單行輸出其類別碼(無符號數的值暫不要求計算)。三、實現方法與環境1、首先設計識別各類單詞的狀態轉換圖。描述無符號常數的確定、最小化狀態轉換圖如圖1所示。其中編號0,1,2,6代表非終結符號<無符號數>
2、;、<余留無符號數>、<十進小數>、<小數部分>、<指數部分>、<整指數>及<余留整指數>, 1,2和6為終態,分別代表整數、小數和科學計數的識別結束狀態。圖1 文法G<無符號數>的狀態轉換圖其中編號0,1,2,6代表非終結符號<無符號數>、<余留無符號數>、<十進小數>、<小數部分>、<指數部分>、<整指數>及<余留整指數>, 1,2和6為終態,分別代表整數、小數和科學計數的識別結束狀態。在一個程序設計語言中,一般都含有若干類
3、單詞符號,為此可首先為每類單詞建立一張狀態轉換圖,然后將這些狀態轉換圖合并成一張統一的狀態圖,即得到了一個有限自動機,再進行必要的確定化和狀態數最小化處理,最后據此構造詞法分析程序。四則運算算術符號的識別很簡單,直接在狀態圖的0狀態分別引出相應標記的矢線至一個新的終態即可。根據自己的習慣,也可以將其轉換為狀態矩陣形式。2、詞法分析程序編寫根據描述語言中各類單詞的文法狀態轉換圖或狀態矩陣,利用某種語言(C語言或JAVA語言)直接編寫詞法分析程序。3、詞法分析程序測試用于測試掃描器的實例源文件中應有詞法正確的,也應有錯誤的字符串,對于輸入的測試用例的源程序文件,以對照的形式將掃描器的分析結果信息在
4、輸出文件中表示出來。四、 源程序#include<iostream>using namespace std; /使用標準命名空間#define M 101 /定義可輸入的字符個數#define UNSIGNEDNUMBER 1 /無符號數#define PLUS 2 /加號#define SUBTRACT 3/減號#define MULTIPLY 4/乘號#define DIVIDE 5/除號#define LEFTBRACKET 6/左括號#define RIGHTBRACKET 7/右括號#define INEFFICACIOUSLABEL 8/無效字符串char pause;
5、class AccidenceAnalysis /定義 詞法分析 類private:char testStrM,*p;/私有數據public:AccidenceAnalysis();/構造函數AccidenceAnalysis();/析構函數void InputStr();/輸入函數void Output(int a,char *p1,char *p2);/輸出函數int IsAcceptantCharacter(char *p);/判斷輸入字符是否屬于字符集int IsOperator(char *p);/判斷字符是否是字符集+,-,*,/,(,)中的字符int IsUnsignedNum(
6、char *p);/判斷字符是否是0-9的整數void AbnormityExamine(char a); /異常檢測函數void IdentifyOperator(char *p);/識別字符集+,-,*,/,(,)中的字符void AssortIdentify();/對輸入字符分類識別void static StartAccidenceAnalysis();/開始分析函數void static StartSystem();AccidenceAnalysis:AccidenceAnalysis()/構造函數int i;for(i=0;i<M;i+)testStri='0'
7、;p=&testStr0; /指針P指向字符數組首元素AccidenceAnalysis:AccidenceAnalysis()/析構函數void AccidenceAnalysis:InputStr()/輸入函數cout<<"t輸入待分析單詞"<<M-1<<"字符以內:"char ch;int i=0;while(ch=cin.get()!='n')testStri=ch;i+;void AccidenceAnalysis:Output(int a,char *p1,char *p2)/輸出函
8、數cout<<"t類別碼:"<<a<<"t 單詞值:"while(p1<=p2)cout<<*p1;p1+;cout<<endl;int AccidenceAnalysis:IsOperator(char *p)/判斷字符是否是字符集+,-,*,/,(,)中的字char ch=*p;if(ch='+'|ch='-'|ch='*'|ch='/'|ch='('|ch=')')return 1;els
9、ereturn 0;int AccidenceAnalysis:IsUnsignedNum(char *p)/是否是19的數字char ch=*p;if('0'<=ch&&ch<='9')return 1;elsereturn 0;int AccidenceAnalysis:IsAcceptantCharacter(char *p)/判斷字符是否是字符集中的字char ch=*p;if(IsOperator(p)|IsUnsignedNum(p)|ch='E'|ch='.')return 1;else
10、return 0;void AccidenceAnalysis:IdentifyOperator(char *p)/對字符+,-,*,/,(,)分類識別char ch=*p;switch(ch) case '+': Output(PLUS,p,p);break; case '-': Output(SUBTRACT,p,p);break; case '*': Output(MULTIPLY,p,p);break; case '/': Output(DIVIDE,p,p);break; case '(': Output
11、(LEFTBRACKET,p,p);break; case ')': Output(RIGHTBRACKET,p,p);break; default: break; void AccidenceAnalysis:AssortIdentify()/對字符分類識別cout<<"t單詞分析結果顯示:n"<<endl; while(*p!='0') if(IsOperator(p) IdentifyOperator(p+); continue; else if(IsUnsignedNum(p)|*p='.')
12、char *p1=p;if(IsUnsignedNum(p)while(IsUnsignedNum(p)p+;if(*p='0')Output(UNSIGNEDNUMBER,p1,-p);p+;continue;else if(*p='E')p+;if(IsUnsignedNum(p)while(IsUnsignedNum(p)p+;Output(UNSIGNEDNUMBER,p1,-p);p+;continue;else if(*p='+'|*p='-')p+;while(IsUnsignedNum(p)p+;Output(UN
13、SIGNEDNUMBER,p1,-p);p+;continue;elseOutput(INEFFICACIOUSLABEL,p1,-p);p+;continue;else if(*p='.')p+;while(IsUnsignedNum(p)p+;if(*p='0')Output(UNSIGNEDNUMBER,p1,-p);p+;continue;else if(*p='E')p+;if(IsUnsignedNum(p)while(IsUnsignedNum(p)p+;Output(UNSIGNEDNUMBER,p1,-p);p+;continu
14、e;else if(*p='+'|*p='-')p+;if(IsUnsignedNum(p)while(IsUnsignedNum(p)p+;Output(UNSIGNEDNUMBER,p1,-p);p+;continue;elseOutput(INEFFICACIOUSLABEL,p1,-p);p+;continue;elseOutput(INEFFICACIOUSLABEL,p1,-p);p+;continue;elseOutput(UNSIGNEDNUMBER,p1,-p);p+;continue;else Output(UNSIGNEDNUMBER,p1
15、,-p);p+;continue;if(*p='.')p+;if(IsUnsignedNum(p)p+;while(IsUnsignedNum(p)p+;if(*p='0')Output(UNSIGNEDNUMBER,p1,-p);p+;continue;else if(*p='E')p+;if(IsUnsignedNum(p)while(IsUnsignedNum(p)p+;Output(UNSIGNEDNUMBER,p1,-p);p+;continue;else if(*p='+'|*p='-')p+;whil
16、e(IsUnsignedNum(p)p+;Output(UNSIGNEDNUMBER,p1,-p);p+;continue;else Output(UNSIGNEDNUMBER,p1,-p);p+;continue;elseOutput(INEFFICACIOUSLABEL,p1,-p);p+;continue; else if(*p='E') Output(INEFFICACIOUSLABEL,p,p); p+; continue; void AccidenceAnalysis:StartAccidenceAnalysis()/開始分析函數AccidenceAnalysis
17、accidenceanalysis;accidenceanalysis.InputStr();accidenceanalysis.AssortIdentify();int main()AccidenceAnalysis:StartAccidenceAnalysis();return 0; 五、實驗感想通過此次實驗,加深對詞法分析原理的理解;熟悉了構造詞法分析程序的手工方式的相關原理,根據識別語言單詞的狀態轉換圖,使用某種高級語言直接編寫此法分析程序。另外,也讓我重新熟悉了C+語言的相關內容,加深了對C+語言的用途的理解。實驗二 語法分析程序實現一、實驗目的與要求通過設計、編制、調試典型的SLR
18、(1)語法分析程序,實現對實驗一所得詞法分析程序所提供的單詞序列進行語法檢查和結構分析,進一步掌握常用的語法分析方法。二、實驗內容選擇對各種常見高級程序設計語言都較為通用的語法結構無符號數的算術四則運算作為分析對象,給出其文法描述(注意應與所采用的語法分析方法比較貼近),設計并實現一個完整的語法分析程序。輸入:由實驗一輸出的單詞類別串,如1,3,1。輸出:對于所輸入的源程序,如果輸入符號串是給定文法定義的合法句子,則輸出“RIGHT”,并且給出每一步歸約的過程;如果不是句子,即輸入串有錯誤,則輸出“ERROR”,并且顯示已經歸約出的各個文法符號,以及必要的出錯說明信息。三、實現方法與環境1、
19、首先根據算術四則運算的語法定義,構造SLR(1)分析表。無符號數的算術四則運算的語法可表示為:E->E+T| E-T|TT->T*F| T/F|FF->(E)|i2、語法分析程序編寫設置輸入緩沖區、狀態棧、符號棧,并根據SLR(1)分析表利用某種語言(C語言或JAVA語言)直接編寫移進、歸約、接受子程序,編寫語法分析程序。3、語法分析程序測試用于測試的實例源文件中應有語法正確的,也應有語法錯誤的符號串,以對照的形式將分析結果信息在輸出文件中表示出來。四、實驗程序#include <fstream>#include <iostream>#include
20、<stdlib.h>#include <string>using namespace std ;struct code_val char code;const char *p= /產生式 "E'E","EE+T","EE-T","ET","TT*F","TT/F","TF","F(E)","Fi" ;const char TNT ="+-*/()i#ETF" /LR
21、分析表列的字符const int M 11= 0,0,0,0,5,0,4,0,1,2,3, 7,6,0,0,0,0,0,17, -3,-3,10,12,0,-3,0,-3, -6,-6,-6,-6,0,-6,0,-6, -8,-8,-8,-8,0,-8,0,-8, 0,0,0,0,5,0,4,0,14,2,3, 0,0,0,0,5,0,4,0,0,8,3, 0,0,0,0,5,0,4,0,0,9,3, -2,-2,10,12,0,-2,0,-2, -1,-1,10,12,0,-1,0,-1, 0,0,0,0,0,0,4,0,0,0,11, -4,-4,-4,-4,0,-4,0,-4, 0,0,
22、0,0,0,0,0,4,0,0,13, -5,-5,-5,-5,0,-5,0,-5, 7,6,0,0,0,15,0,0, -7,-7,-7,-7,0,-7,0,-7 ;int col(char); /列定位函數原型void main() int state50=0; /狀態棧初值 int top=0; /棧頂指針初值 ifstream cin("E:lex_r.txt"); struct code_val t; /結構變量,存放單詞。 cin>>t.code; do /讀一單詞 int action; action=Mstatetopcol(t.code); i
23、f(action>0 && action!=17) /移進 state+top=action; cin>>t.code; else if(action < 0) /歸約 top=top-(strlen(p-action)-3); /""為漢字,占 2字節故減3 statetop+1=Mstatetopcol(p-action0); /產生式左部符號 top=top+1; else if(action=17) cout<<"Acc"break; elsecout<<"err"
24、;break; while(1);int col(char c) /將字符+* ()i#ETF分別轉換為數字012345678 for(int i=0;i<(int)strlen(TNT);i+) if(c=TNTi)return i; cout<<"Err in col char>"<<c<<endl; exit(0); /終止程序運行 四、實驗感想 SLR(1)文法有效地消除了規約和移進之間的沖突,在程序中設了兩個堆棧,一個狀態棧,一個符號棧。根據LR分析表構造了一個ACTION和矩陣,再用循環的方式把堆棧中的內容顯示出來
25、。實驗三 語義分析程序實現一、實驗目的與要求通過設計、編制、調試一個簡單的語義處理分析程序,實現對實驗一和實驗二所得單詞和語句的語義信息簡單處里,進一步掌握語義處理的內容和簡單方法。二、實驗內容對實驗一進行擴展,對識別的無符號數進行計值,并將輸出形式改為(類別碼,值)的二元式形式。對實驗二進行擴展,在語法分析的基礎上,增加語義操作來實現語法制導翻譯。對于給定文法中的每一產生式,編寫相應的語義子程序。在語法分析過程中,每當用一產生式進行推導或歸約時,語法分析程序除執行相應的語法分析動作之外,還要調用相應的語義子程序,計算并輸出算術表達式的值。將實驗一與實驗二的程序合并,以能對完整的輸入源文件進行
26、詞法分析生成中間文件,然后進行語法制導翻譯,輸出最終翻譯結果。輸入:由無符號數和+,*,/, ( , ) 構成的算術表達式。輸出:如果輸入單詞串是合法的無符號數的算術四則運算,輸出運算結果,并且給出每一步的分析過程;如果不是無符號數的算術四則運算,輸出“非法四則運算表達式”。三、基本實驗題目對實驗一中每個無符號數識別狀態插入計值處理,最終獲得無符號數的取值。對實驗二進行擴展,在歸約(分析表中的歸約動作已經反應了運算優先級)處理子程序中加入計值處理,接受子程序中加入輸出算數表達式值的處理。四、實驗程序#include<iostream>#include<stdlib.h>
27、#include<cmath>#include<string>using namespace std;#define EndState -1char ACTION168='s','e','e','e','e','s','e','e','e','s','s','e','e','e','e','a','e'
28、,'r','r','s','s','e','r','r','e','r','r','r','r','e','r','r','s','e','e','e','e','s','e','e','e','r'
29、,'r','r','r','e','r','r','s','e','e','e','e','s','e','e','s','e','e','e','e','s','e','e','s','e','e'
30、,'e','e','s','e','e','s','e','e','e','e','s','e','e','e','s','s','e','e','e','s','e','e','r','r','s'
31、,'s','e','r','r','e','r','r','s','s','e','r','r','e','r','r','r','r','e','r','r','e','r','r','r','r'
32、,'e','r','r','e','r','r','r','r','e','r','r'int GOTO1611=5,0,0,0,0,4,0,0,1,2,3,0,6,7,0,0,0,0,0,0,0,0,0,2,2,8,9,0,2,2,0,0,0,0,5,5,5,5,0,5,5,0,0,0,5,0,0,0,0,4,0,0,10,2,3,0,8,8,8,8,0,8,8,0,0,0,5,0,0,0,0,4,0,0,0,11,3
33、,5,0,0,0,0,4,0,0,0,12,3,5,0,0,0,0,4,0,0,0,0,13,5,0,0,0,0,4,0,0,0,0,14,0,6,7,0,0,0,15,0,0,0,0,0,1,1,8,9,0,1,1,0,0,0,0,3,3,8,9,0,3,3,0,0,0,0,4,4,4,4,0,4,4,0,0,0,0,6,6,6,6,0,6,6,0,0,0,0,7,7,7,7,0,7,7,0,0,0,;int Stimulation168=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,2,0,5,5,5,5,0,5,5,0,0,0,0,0,0,0
34、,0,0,8,8,8,8,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,3,3,0,0,0,3,3,0,4,4,4,4,0,4,4,0,6,6,6,6,0,6,6,0,7,7,7,7,0,7,7;class AccidenceAnnalysisprivate:char temp20;char *ptr;int Class;int CurrentState;char test20;float FCON;int w;int n;int p
35、;int e;int d;public:int EXCUTE(int,char);void Push_temp(char);void Clear_temp(void);bool Operator(char);void Operator_Get(char);void Output(void);void Center();AccidenceAnnalysis();int result_class20;float result_value20;int *ptr_c;float *ptr_v;AccidenceAnnalysis:AccidenceAnnalysis()ptr=temp;Clear_t
36、emp();ptr_c=result_class;ptr_v=result_value;bool AccidenceAnnalysis:Operator(char c)if(c='+') return true;else if(c='-') return true;else if(c='*') return true;else if(c='/') return true;else if(c='(') return true;else if(c=')') return true;else if(c=&
37、#39;0') return true;else return false;void AccidenceAnnalysis:Clear_temp(void)for(int i=0;i<20;i+)tempi='0'void AccidenceAnnalysis:Push_temp(char c)*ptr=c;ptr+;int AccidenceAnnalysis:EXCUTE(int state,char c)if(state=0)if(c<='9'&&c>='0') CurrentState=1;d=c
38、-'0'n=0;w=d;p=0;e=1;if(Operator(c) CurrentState=EndState;Operator_Get(c);Push_temp(c);if(c='.') CurrentState=3;w=0;n=0;p=0;e=1;if(state=1)if(c='.') CurrentState=2;if(c<='9'&&c>='0')CurrentState=1;d=c-'0'w=w*10+d;if(Operator(c)CurrentState
39、=EndState;Class=1;FCON=w;if(c='E'|c='e')CurrentState=4;if(state=2)if(c<='9'&&c>='0')CurrentState=2;d=c-'0'w=w*10+d;n+;if(c='E'|c='e') CurrentState=4;if(Operator(c)CurrentState=EndState;Class=1;FCON=w*pow(10,e*p-n);if(state=3)if(c&
40、lt;='9'&&c>='0') CurrentState=2;d=c-'0'w=w*10+d;n+;if(state=4)if(c='+') CurrentState=5;if(c='-')e=-1;CurrentState=5;if(c<='9'&&c>='0') CurrentState=6;d=c-'0'p=p*10+d;if(state=5)if(c<='9'&&c>
41、;='0') d=c-'0'p=p*10+d;CurrentState=6;if(state=6)if(c<='9'&&c>='0')d=c-'0'p=p*10+d;CurrentState=6;if(Operator(c)CurrentState=EndState;FCON=w*pow(10,e*p-n);Class=1;return CurrentState;void AccidenceAnnalysis:Operator_Get(char c)if(CurrentState=End
42、State)&&(Operator(c)if(c='0') Class=0;if(c='+') Class=2;if(c='-') Class=3;if(c='*') Class=4;if(c='/') Class=5;if(c='(') Class=6;if(c=')') Class=7;void AccidenceAnnalysis:Output(void)switch(Class)case 1:cout<<FCON<<"tt1n
43、"*ptr_c=Class;*ptr_v=FCON;ptr_v+;ptr_c+;break;case 2:cout<<temp<<"tt2n"*ptr_c=Class;ptr_c+;break;case 3:cout<<temp<<"tt3n"*ptr_c=Class;ptr_c+;break;case 4:cout<<temp<<"tt4n"*ptr_c=Class;ptr_c+;break;case 5:cout<<temp<<
44、;"tt5n"*ptr_c=Class;ptr_c+;break;case 6:cout<<temp<<"tt6n"*ptr_c=Class;ptr_c+;break;case 7:cout<<temp<<"tt7n"*ptr_c=Class;ptr_c+;break;void AccidenceAnnalysis:Center()Clear_temp();cin>>test;CurrentState=0;cout<<"詞法分析過程如下:n"c
45、out<<"ClassttValuen"for(int i=0;i<20;i+)EXCUTE(CurrentState,testi);if(CurrentState!=EndState)Push_temp(testi);elseif(Class!=0) Output();CurrentState=0;Clear_temp();ptr=temp;if(testi!='0'&&Class=1) i-; class GrammarAnnalyseprivate:int status20;struct Annalyseint sta
46、;float val;annalyse20,*a;int input20;int *s,*i,*i_end;int i_step;float value20,*v;public:GrammarAnnalyse();void Annalyse();string NumToChar(int*,int);char check_action(int*,int*);int check_goto(int*,int*);int check_stimulation(int*,int*);void Initilize(int,float);void Advance();void Stimulate();void
47、 Output();void Calculate();GrammarAnnalyse:GrammarAnnalyse()status0=0;annalyse0.sta=8;s=&status0;a=&annalyse0;i=&input0;i_end=&input0;v=&value0;i_step=1;void GrammarAnnalyse:Initilize(int a20,float b20)for(int i=0;i+)inputi=ai;if(inputi=8) break;i_end=&inputi;/8代表'#'f
48、or(i=0;i<20;i+)valuei=bi;char GrammarAnnalyse:check_action(int *s,int *t)return ACTION*s*t-1;int GrammarAnnalyse:check_goto(int *s,int *t)return GOTO*s*t-1;int GrammarAnnalyse:check_stimulation(int *s,int *t)return Stimulation*s*t-1;string GrammarAnnalyse:NumToChar(int *t,int n)string temp;int i=
49、0;for(;n>=0;n-)switch(*(t-n)case 1:temp+="i"i+;break;case 2:temp+="+"i+;break;case 3:temp+="-"i+;break;case 4:temp+="*"i+;break;case 5:temp+="/"i+;break;case 6:temp+="("i+;break;case 7:temp+=")"i+;break;case 8:temp+="#&quo
50、t;i+;break;case 9:temp+="E"i+;break;case 10:temp+="T"i+;break;case 11:temp+="F"i+;break;return temp;void GrammarAnnalyse:Output()cout<<i_step<<'t'i_step+;int *s1=&status0;for(;s1<=s;s1+)cout<<*s1;cout<<'t'GrammarAnnalyse te
51、mp;temp.a=&annalyse0;int n=0,a_temp20,*a_temp_ptr=a_temp;for(;temp.a<=a;temp.a+)a_tempn=temp.a->sta;a_temp_ptr+;n+;string a_str=NumToChar(a_temp_ptr,n);cout<<a_str<<'t'n=0;int *i_temp;i_temp=i;for(;i_temp<i_end;i_temp+)n+;string i_str=NumToChar(i_end,n);cout<<i
52、_str<<'t'cout<<check_action(s,i);if(check_action(s,i)='r') cout<<check_stimulation(s,i);if(check_action(s,i)='s') cout<<check_goto(s,i);if(check_action(s,i)='a') cout<<"cc"cout<<endl;cout<<"_"cout<<en
53、dl;void GrammarAnnalyse:Advance()a+;a->sta=*i;s+;*s=check_goto(s-1,i);i+;Output();void GrammarAnnalyse:Stimulate()int t=check_stimulation(s,i);switch(t)case 1:a->sta=0;(a-1)->sta=0;(a-2)->sta=0;a=a-2;a->sta=9;a->val=a->val+(a+2)->val;*s=0;*(s-1)=0;*(s-2)=0;s=s-2;int *temp=&am
54、p;a->sta;*s=check_goto(s-1,temp);Output();break;case 2:a->sta=9;int *temp=&a->sta;*s=check_goto(s-1,temp);Output();break;case 3:a->sta=0;(a-1)->sta=0;(a-2)->sta=0;a=a-2;a->sta=9;a->val=a->val-(a+2)->val;*s=0;*(s-1)=0;*(s-2)=0;s=s-2;int *temp=&a->sta;*s=check_goto(s-1,t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳連鎖品牌授權與區域經營合同
- 個人借款信息咨詢服務與合同
- 教育機構場地租賃合同終止及學生安置保障協議
- 老妖精消防課件內容概覽
- 美洲說課課件
- 美術生職業規劃
- 美術欣賞中國結小班課件
- 防汛事故應急預案
- 安全生產事故案例分析及事故教訓
- 水下作業安全操作規程
- SAP月結年結用戶手冊精
- 2023年本科招生考試
- 碳捕集、利用與封存技術課件
- 碳達峰和“碳中和”環境知識科普宣傳PPT教學課件
- 中文版b4a新手指南-第14-15章語言畫圖
- 新入職護士培訓考試試題及答案
- 《消防安全技術實務》課本完整版
- 北師大版七年級數學下冊 與信息技術相融合的數學教學案例 教案
- 鈍針穿刺法臨床應用護理
- 精品中文版b4a新手指南第4章開發環境
- 光纜線路的故障分析及障礙搶修
評論
0/150
提交評論