版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include<cstdio> #include<iostream> #include<cstdlib> #include<fstream> #include<string> #include<cmath> using namespace std;/*客*客*下面是"些重要数据结构 的声明*客*客*客* */struct token/词法 token 结构体int code;/编码int num;/递增编号token *next;;token *token_head,*token_tail;/token 队列
2、struct str词法 string 结构体int num;/编号string word;/字符串内容str *next;;str *string_head,*string_tail;/string 队列 struct ivan/i§法产生式结构体char left;/产生式的左部 string right;/产生式的右部 int len;产生式右部的长度;ivancss20;语法20个产生式struct pank/语法action表结构体char sr;移进或归约int state;/转到的状态编号;pank action461181;/action 表int go_to46ll
3、;/i§法 go_to 表struct ike/语法分析栈结构体,双链ike *pre;int num;/状态int word;/符号编码ike *next;ike *stack_head,*stack_tail;/分析栈首尾指针struct l语义四元式的数据结构int k;string op;/操作符string opl;操作数string op2; 操作数string result;/结果l *next;语义四元式向后指针l *ltrue;/回填true链向前指针l *lfaise;/回填false链向前指针;l *l_four_head,*l_four_tail,*l_tru
4、e_head,*l_false_head;/四元式链,true 链,false 链 struct symb/语义输入时符号表string word;/变量名称int addr;/变量地址svmb *next:;symb *symb_head,*symb_tail;语义符号链表/* *下面是与词法分析相关的一些函数的声明*窃*窃*窃*窃*窃*窃*窃*窃*容*容*容*容*容*/void scan();/按字符读取源文件void cifa_main();/词法分析主程序int judge(char ch);判断输入字符的类型void outl(char ch);/写入 token.txtvoid o
5、ut3(char ch,string word);/写入 string.txt void inputl(token *temp);/插入结点到队列 token void input3(str *temp);插入结点到队列 string void output();输出三个队列的内容void outfile();/输出三个队列的内容到相应文件中void yufa_main();语法分析主程序void yufanitialize();初始化语法分析数据结构int yufa_slrl(int a);语法分析主体部分int idl(int a);给输入字符编号,转化成action表列编号 string
6、 id10(int i);给输入字符反编号int id2(char ch);给非终结状态编号,转化成go_to表列编号 int id20(char ch);给非终结状态编号char id21(int j);给非终结状态反编号void add(ike *temp);给ike分析栈链表增加一个结点 void del();给ike分析栈链表删除一个结点/* *下面是与语义分析相关的一.些函数的声明*窃*窃*窃*窃*窃*窃*窃*窃*容*容*容*容*容*/void yuyi_main(int m);语义分析主程序void add_l_four(l *temp);/向四元式链中加一个结点void add_
7、l_true(l *temp);/向 true 链中加一*个结点void add_l_false(l *temp);/向 false 链中加一个结点void add_symb(symb *temp);/向语义符号表链中加一个结点 void output_yuyi();/输出中间代码四元式和最后符号表 string newop(int m);把数字变成字符串string id_numtoname(int num);/ie编号转换成相应的变量名 int lookup(string m);变量声明检查file愉;文件指针int wordcount;/志符计数int eir;标志词法分析结果正确或错误
8、int nl;读取行数int yuyiinshi;语义临时变量string e_name,t_name,f_name,m_name,id_name,idl_name,id2_name,errword;/用于归约时名称传递和未声明变量的输出int id_num,id l_num,id2_num,id_left,id_while,id_then,id_do;/ffl 于记录一些特殊的字符位置信息/*il力台*/int main()coutvv'' * vvendl; cout«h* 说明:*”v vendl;cout«n*第一部分:词法分析*'*
9、1;endl; cout«h*第二部分:语法分析*'*«endl; cout«n*第三部分:语义分析*m«endl; coutvv'' * vvendl; cifa_main();词法 yufa_main();/ 语法 output_y uyi(); 语义cout«endl;system(npausen);return(o);/* 也 卜具士禅南void cifa_main()token_head=new token;token_head->nex 仁 n ull;token_tail=new token;toke
10、n_tail->next=null;string_head=new str;string_head->next=null;string_tail=new str;string_tail->next=null;/j始化三个队列的首尾指针l_four_head=new l;l_four_head->next=null;l four tail=new l;l_four_tail->k=0;l_four_tail->next=null;l_true_head=new l;l_true_head->ltrue=null;l_false_head=new l;l_
11、false_head->lfalse=null;symb_head=new symb;symb_head->next=null;symb_tail=new symb;symb_tail->next=null;yuyi_linshi=-l;id_num=0;wofdcount=0;初始化字符计数器err=0;/7j始化词法分析错误标志nl=l;初始化读取行数scan();if(err=0)char m;output();cout«"词法分析正确完成!yvendlvvendlvv"如果将结果保存到文件中请输入y ,否则请输入其它字 母;cin
12、7;m;cout«endl;if(m=,y,)outfile();cout«h结果成功保存在token.txt和sting.txt两个文件中,请打开查看h«endl;cout«endl;void scan()cout«endl;system(hpausen);cout«endl;char ch;string word;char document50;int flag=0;cout«"请输入源文件路径及名称cin»document;cout«endl;cout«m*第一部分:词法分析 *
13、"vvendl;cout«h5jc5jc 5|c ®,«endl;if(fp=fopen(document/,rtm)=null)err=l;cout«*'无法找到该文件!h«endl;return;vvhile(!feof(fp)word=tm,;ch=fgetc(fp);flag=judge(ch);if(flag=l)outl(ch);else if(flag=3)out3(ch,word);else if(flag=4 | flag=5 |flag=6) continue;elsecout«nl«m
14、 行 ”vv”错误:非法字符! h«ch«endl; err=l;fclose(fp);int judge(char ch)int flag=o;if(ch=,=t ii ch=,+, ii ch=,* ii ch=,>, ii ch=,f | ch=,;t | ch=, ii ch=,1 ii ch=,(, ii ch=')*)flag=l;/ 界符else if(ca'v二ch && ch<=,z,) | ('a'v二ch && ch<=,z,)hag=3;/ 字母else if(ch=*
15、 ')flag=4;/ 空格else if(feof(fp)llag=5;/ 结束else if(ch=,n,)flag=6;/ 换行nl+;elseflag=o;非法字符return(flag);void outl(char ch)int id;switch(ch)case t=, : id=l;break;case : id=2;break;case : id=3;break;case : id=4;break;case : id=5;break;case : id=6;break;case : id=7;break;case : id=8;break;case '(
16、9; : id=9;break;case *)' : id=10;break;/界符编码default: id=0;token *temp;temp=new token;temp > code=id;temp um二 1;temp->next=null;inputl(temp);return;void out3(char ch,string word)token * temp; temp=new token; temp > code=-l; temp->num=-l; temp->next=null;str * tempi; templ=new str;
17、templ->num=-l; templ->word=nh; templ->next=null;int flag=0; word=word+ch; ch=fgetc(fp); flag=judge(ch);if(flag=l | flag=4 | flag=5 | flag=6)if(word=nandtf | word=hifm | word=hthenn | word=mwhileh | word=hdon | word=hintm) if(word=mandn)temp->code=31;else if(word=mifn)temp->code=32;els
18、e if(word=hthenn)temp code=33;else if(word=nwhilen)temp > code=35;else if(word=,dom)temp->code=36;else if(word=hinth)temp->code=37;关键字编码inputl(temp);if(flag=l)outl(ch);else if(flag=4 | flag=5 | flag=6)return;else if(flag=l)wordcount+; temp > code=25; temp->num=wordcount; inputl(temp);
19、tempi ->num=wordcount; tempi->word=word; input3(templ);outl(ch);else if(flag=4 | flag=5 | flag=6)wordcount+;temp > code=25; temp->num=wordcount; inputl(temp); templ->num=wordcount; tempi > word=word; input3(templ);return;else if(flag=2 | flag=3) out3(ch,word);/ 形成字符串 elseerr=l;tf
20、171;ch«endl;cout«nl«n行” vv”错误:非法字符!return;void inputl(token *temp)if(token_head->next = null)token_head > next=temp; token_tail->next=temp;elsetoken_tail->next->next=temp; token_tail->next=temp;void input3(str *temp)if(string_head->next = null)stringhead > next
21、=temp;string_tail->next=temp;elsestring_tail->next->next=temp;string_tail->next=temp;void output()cout«htoken 表内容如下:'*«endl;token * tempi;tenipl=nevv token;templ=token_hea d> next;while(temp 1 !=null)cout«temp code;if(templ->num =1)cout«endl;elsecout«&q
22、uot; ,«templ->num«endl;tempi =templ ->next;cout«n符号表内容如下:"vvendl;str *temp3;temp3=new str;temp3=string_head > next;vvhile(temp3!=null)cout«temp3->num«n ,«temp3->word«endl; temp3=temp3 next;void outfile()ofstream font 1(”token.txt'');/写文件
23、ofstream fout3(hstring.txtm);token *templ;templ=nevv token;temp 1=token_head > next;vvhile(templ !=null)foutl«templ->code;if(templ->num =1) foutl«endl;elsefoutl«n u«templ->num«endl;tempi=temp 1 > next;str *temp3;temp3=new str;temp3=string_head->next;vvhile(
24、temp3!=null)fout3«temp3->num«m ,f«temp3->word«endl; temp3=temp3 > next;void yufa_main() if(err=0)sy stem(11 pause11); cout«endl;cout«h*第二部分:语法分析*n«endl;yufa_initialize();/j始化语法分析数据结构 token *temp;temp=nevv token;temp=token_head > next;int p,q;p=0;q=0;cou
25、t«n语法分析过程如下:"vvendl;while(temp!=null)int w;w=id 1 (temp->code); p=yufa_slrl(w); if(p=l) break;if(p=o) temp=temp >n ext;if(temp=null) q=l;语法分析if(q=l)while(l)p=yufa_slrl(17); if(p=3) break;最后输入$来完成语法分析void yufa_initialize()stack_head=new ike;stack_tail=new ike; stack_head->pre=null;
26、stack_head > next=stack_tail; stack_head->num=o; stack_head->word=*!*; stack_tail->pre=stack_head; stack_tail>next=null;初始化栈分析链表 csso.left=,q*;csso.right=npm;cssl.left=,p,;cssl.right=mid()l;rn;css2.left=*l,;css2.right=hl;dh;css3le2u;css3.right=,dm;css41.1eft=,d,;css4.right=,id:intn;cs
27、s5.left=,e,;css5.right=he+tm;css6.left=*e'css6.right=hth;css7.left=*t,;css7.right=ht*fn;css8.left=*t,;css8.right=,fm;css91.1eft=*f*;css9.right=*,(e)h;css10.left=,f,;css10.right=nidm;=3ssu:elp (+©zv©»)joj:?_= 广zrhsmrs?二 sse 厂h.ejq三 6 二 ssj 广seqojdu5©=883 广n££5?=ssj j
28、sz.=2.2f=卜二 ssq jweq.=fj二9 二ssu 广 sn 二 ss。-rs op h 2 三 mqo£r-s 二 ssj "seju.rs 二 ssj.w ua£ h jr也fd-c守二 ss3 "sg子二 ss) juhprhxxij二 ssu 广 w.ejv 齐二 ss jpaprh2.2?jnhss。厂 h.hjq二 z 二 sso pe qma-e.h二sso赳悬毀聚000£吴聚u02e sa f q q q q q q q q qi i i i i、聚£001芒袈舄二(二,"二【二0&(+二
29、 vc0h0joj(+=9nyo.!')joj聚u.2-5e羊渡舄二( 聲.ujs.5eu0号e (+r 呂 vrohojoj) (+=9wo.!')joj卅胡k羊録舄mbhuahs二ss。hualhllsscj 苗 hug 药二 ssj 芮 hug 目 ss3 芬 huasmsso 二曹二0 二 ssu一 ssj29hu2三 ssokuuiss guvhshuar s ss。 =o=uc£rsss;>nhuassjaction00.sr='s'action00.state=2; actionl17.sr=,;/ 结束 action2l.sr=,
30、s,;action2l.state=3; action32.sr=,s,;action32.state=4; action40.sr='s'action40.state=5; action54.sr=,s*;action 54.state=6; action6ll.sr=,s,;action6n.state=7; action73.sr=,r*;action 7 3 .state=4; action83sr='r'action 8 3 .state=3; action93.sr=*s,;action93.state=10; action1010.sr=ls,;a
31、ction100.state=5; action109.sr=,s,;action109.state=13; actionllj17.sr=*r,;actionllj17.state=l; action 12 3 .sr= * r *; action 12 3 .sta te=2; action130.sr=,s,;action130.state=14; actionfl 3 13.sr=,s,;action 1313.state=23; action1315.sr=*s,;action1315.state=27; action148.sr=,s,;action14 8.state=15; a
32、ction150.sr=*s,;action150.state=36; action 15l.sr=*s* ;action 15 1 .state=41; action166.sr=*s, ;actionl 66.state=43; action163.sr=,r*;action16 3.state=13; action1610.sr='r'action1610.state=13; action 17 3 .sr= * s * ;action 17 3 .sta te=19; action1710.sr='s'action1710.state=18; actio
33、n1817.sr=,r,;action18171.state=19; action190.sr=,s,;action19 0.state=14; action1913.sr=,s,;action1913.state=23; action1915.sr=,s'action1915.state=27; action203.sr=,r'action203.state=17; action20110.sr=,r,;action20101.state=17; action21j3j.sr=*r*;action21j 3.state=18; action2110.sr=,r,;action
34、2110.state=18; action22 3 .sr= * r1; action22 3 .sta te= 16; action2210.sr=*r,;action2210.state=16; action230.sr=,s,;action2301.state=31; action2412.sr='s'action2412.state=34; action2414.sr='s'action2414.state=25; action250.sr=*s*;action250.state=14; action263.sr=*r'action263.sta
35、te=14; action2610.sr=,r,;action26101.state=14; action270.sr=,s,;action27 0.state=31; action2812.sr='s'action2812.state=34; action2816.sr='s'action2816.state=29;action290.sr=,s,;action290.state=14; action303.sr=*r*;action30 3.state=15; action3010.sr=,r*;action3010.state=15; action317.
36、sr=*s,;action317.state=32; action320.sr=*s*;action320.state=33; action3312.sr=,r,;action3312.state=12; action3314.sr=,r*;action3314.state=12; action3316.sr=,r*;action3316.state=12; action34 0 .sr= * s * ;action 34 0 .sta te=31; action3512.sr=,r,;action3512.state=ll; action3514.sr=,r,;action35141.sta
37、te=n; action3516.sr=,r,;action3516.state=ll; action36jl2j.sr=*r*;actionl36jl2j.state=10; action36 3 .sr= * r' action36 3 .sta te= 10; action365.sr=,r*;action365.state=10; action366.sr=,r,;action36f6.state=10; action3610.sr='r'action3610.state=10; action372.sr=,r,;action37 2.state=8; acti
38、on373.sr=*r*;action373.state=8; action 37 5 .sr= * r' action 37 5 .sta te=8; action376.sr=*r,;action376.state=8; action 37 10 .sr=1 r *; action 37 10 .state=8; action382.sr=,r,;action38 2.state=6; action38 3 .sr= * r *; action38 3 .sta te=6; action385.sr=,s,;action385.state=39; action38f61.sr=,r
39、,;action38 6.state=6; action 38 10 «sr=' r' action 38 10 .state=6; action390.sr=,s,;action39 0.state=36; action39 1 .sr= * s * ;action 39 1 .sta te=41; action402.sr=,r'action402.state=7; action40f31.sr=,r,;action403.state=7; actionl40j5j.sr=*r*;action40j5j.state=7; action406.sr=,r,;
40、action406.state=7; action4010.sr=,r,;action4010.state=7; action410.sr=,s,;action410.state=36; action41l sr='s' ;action41 1 .state=41; action422.sr=,s,;action422.state=45; action426.sr=,s,;action426.state=43; action430.sr=*s*;action430.state=36; action43l.sr=,s,;action43l.state=41; action442.
41、sr=,r,;action442.state=5; action443.sr=,r,;action44 3.state=5; action445.sr=,s,;action445.state=39; action446.sr=*r'action44 6.state=5;鶯養養養養養養養養養養冬哥服赳定庫恥oj om 忌來uouoe*蛊薫蛊薫薫蛊薫蛊養诧養養诜诧養-me"s="tdoo?£mme2loo?sz£"s=m2lo?£8e''b=moo?sz0''e=m£lo?on'&
42、#39;s=6aoo?fse''9=beeo?£oe''l=6zeoo£gdz"9=lz©o?f9z"卜=s zoo处rfz''9=g£lo?soz''oo=6ioo?foz''卜=6二。处卜:诂一旦言营弱丄兰旦言乞曹丄巴旦言乞e"0i=e 二 00 兰 z''8=e=oo?szz''卜=2oo?ss''z=oiooox)3''i=o 巴 oo?56''6=soo?s
43、qo''i=xoo?j-''o=oooo<)f6lss-2=s5luouj5?-hjs©ss2lu.2芳 e orh£5s【9=sslu.2t5er.=js-9=s2lu.2se "6£-ss【s=s2lu.2t5e<=js-s=sslli.2se "6uzss 齐=seuoujeepjs 齐=sncogje 26h0ssk=sslu.2te<=jsh=seu.2te »nh3ss©"=trtrc.2t55jp.issi=h7u.2t5ex。o£.ghs&
44、quot;(nlunsj«题*胡 op 吐凰班 «繼、三主八丄込 jnojihopi29ia (9eh")j 换帝鋼2z乡-fr®®ezaa 鋼酬二三+ma,=5l.moji、i£=-=ki2snn (seh1)j 題怎mdslua£ 吐尽飓经*酬、二二+大估 e.moji、i=:u*£l2m.ll,)(eehhs 芬 i.!k(zehh£“e (i y2ataoiej 二丄(6h.!l)j me f !)j "6aqej 芬芯(9h»)j 苓a(su»)j mur (tr=
45、")j inhr (erdj 6=4 (zh")j根冬離媒dhew隼划km怒 mmnulpn坊prooa二 7=2横怎養竝«w<w+enul2oa二 szh")jif(i=o) ch=midh;if(i=l) ch=m(n;if(i=2) ch尸;if(i=3) ch=,;h;if(i=4) ch=h:m;if(i=5) ch=m*m;if(i=6) ch=m+k;if(i=7) ch=n>h;if(i=8) ch=,=,'if(i=9) ch=hh;if(i=10) ch=mm;if(i=ll) ch=hintm;if(i=12)
46、ch=mandh;if(i=13) ch=hifn;if(i=14) ch=hthenh;if(i=15)ch=nwhileh;if(i=16) ch=hdoh;if(i=17) ch=n$m;return(ch);int id2(char ch)/按go_to表给非终结符编号int j;j=-l;if(ch=t,) j=0;if(ch=,d,)j=l;if(ch=,r,) j=2;if(ch=,e,) j=3;if(ch=,t,) j=4;if(ch=t*)j=5;if(ch=,b,)j=6;if(ch=,m,)j=7;if(ch=,s,)j=8;if(ch=,l,) j=9;if(ch=,
47、n,)j=10;return(j);int id20(char ch)给非终结符编号int j;j=l;if(ch=t*) j=100;if(ch=,d*)j=101;if(ch=,r,)j=102;if(ch=,e,)j=103;if(ch=,t,) j=104;if(ch=,f,)j=105;if(ch=,b,)j=106; if(ch=,m,)j=107;if(ch=,s,)j=108;if(ch=,l,)j=109;if(ch=,n,) j=1010;return(j);char id21(int j)反编号非终结符char ch;if(j=100 |j=0) ch= p'if
48、(j=101 |j=l)ch=,d,;if(j=102 |j=2)ch=,r,;if(j=103 |j=3) ch=*e*;if(j=104 |j=4) ch二t;if(j=105 |j=5) ch=t*;if(j=106 |j=6) ch='b'if(j=107 |j=7) ch=*m*;if(j=108 |j=8) ch='s;if(j=109 |j=9) ch=*l*; if(j=1010 |j=10) ch='n' return(ch);void add(ike 床temp)/力口一个结点 if(stack_head->next=stack
49、_tail) temp >pre二stack_head; temp->next=stack_tail; stack_head->next=temp; stack_tail->pre=temp;elsetemp->pre=stack_tail->pre; temp > next 二 stack_tail;stack_tail->pre->next=temp; stack_tail->pre=temp;void del()删除一个结点stack_tail->pre->pre->next=stack_tail;stack_
50、tail > pre=stack_tail > pre->pre;int yufa_slrl(int w)/*cout«n当前输入符号:h«id10(w)«nm;*/int i,flag=o,state_temp;/flag错误标志,0正常移进,1错误,2归约,3结束char sr_temp;sr_temp=actionstack_tail->pre->numw.sr;/ 动作 state_temp=actionstack_tail->pre->numw.state;/ 状态变化 if(sr_temph#) 错误动作fla
51、g=l;err=3;cout«n语法分析岀错lv vendl;else if(sr_temp=,s,)/ 移进动作ike *temp;temp=new ike;temp->next=null;temp->pre=null;temp >word=w;temp->num=state_temp;add(temp);cout/*«n 动作(移进):n*/«sr_temp«state_temp«n状态转为:h«stack_tail->pre->num«11 n«h栈顶符号:*'
52、171;id 10(stack_tail->pre->word)*/«endl;llag=o;else if(sr_temp=,r*)/归约动作int p=id2(cssstate_temp.left);int q=cssstate_temp>ien;for(i=0;i<q;i+)del();ike *temp;temp=nevv ike;temp->next=null;temp->pre=null;temp->word=id20(cssstate_templjeft);temp->num=go_tofstack_tail->pr
53、e>nump;查 go_to 表add(temp);cout/*«h 动作 (归 约):11 */<<sr_temp«state_temp«1111 «cssstate_tempeleft«11 -1 *«cssstate_temp.right«'*h/*«n 状态转为:h«stack_tail->pre->num«nh«n 栈顶符号:*«id21(stack_tail->pre->word)*/«endi;flag
54、=2;yuyi_main(state_temp);在产生树的同时进行语义分析else if(sr_temp=* *)/ 结束动作coutvv”end'7*vv,'动作(归约):m«sr_temp«state_temp*/«n m«cssstate_temp.left«h - n«cssstate_temp.right«n m/*«h 状态转为:h«stack_tail->pre->num«n m«h 栈顶符号: n«id21(stack_tail-
55、>pre->word)*/«endl;flag=3;cout«h语法分析正确完成!n«endl;else/其他意外情况flag=l;err=3;cout«k语法分析出错!h«endl;return(flag);void yuyi_main(int m)l *temp;int k;k=l;temp=new l;temp->op=*' ; temp->opl=n temp->op2=m n; temp->result=,m,; temp->next=null; temp->ltrue=null; temp->lfalse=null;if(m=4)变量声明时加入符号表链 symb *stemp;stemp=new symb;id_name=id_numtoname(id_num); stemp->word=id_name; stemp->next=null;add_sym
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高端鲜花定制公司财务预算管理制度
- 浙海院海洋科学导论课件08大气和海洋
- 高血压的营养教育
- 结直肠癌症状剖析及护理方法
- 开学音乐教师自我介绍
- 字体设计手抄报
- 甲状腺结节常见症状及护理要点讲解
- 臀部肌肉的训练
- 肢体麻木症表现及护理方法讲解
- 2025福建厦门市集美区杏滨小学非在编教师招聘1人考试笔试备考试题及答案解析
- 钢结构员工管理制度
- 现代汉语语序变化试题及答案分析
- 电子邮箱使用许可合同
- 广州水务笔试题目及答案
- 艺术学概论教学大纲
- 胸痛中心建设流程
- 建筑施工现场急救知识
- (高清版)DB37∕T 3048-2017 自主可控软件测试与认证规范
- DB11-T 213-2022 城镇绿地养护技术规范
- 2024-2025学年河北省唐山市高一上学期期末考试数学试卷(含答案)
- 《金属非金属矿山重大事故隐患判定标准》解读
评论
0/150
提交评论