合肥工业大学编译原理实验报告(完整代码版)

上传人:jin****ng 文档编号:182213719 上传时间:2023-01-21 格式:DOCX 页数:60 大小:120.61KB
收藏 版权申诉 举报 下载
合肥工业大学编译原理实验报告(完整代码版)_第1页
第1页 / 共60页
合肥工业大学编译原理实验报告(完整代码版)_第2页
第2页 / 共60页
合肥工业大学编译原理实验报告(完整代码版)_第3页
第3页 / 共60页
资源描述:

《合肥工业大学编译原理实验报告(完整代码版)》由会员分享,可在线阅读,更多相关《合肥工业大学编译原理实验报告(完整代码版)(60页珍藏版)》请在装配图网上搜索。

1、计算机与信息学院编译原理 实验报告专业班级信息安全13-1班学生姓名及学号马骏 2013211869课程教学班号任课教师李宏芒实验指导教师李宏芒实验地点实验楼机房20152016 学年第二学期实验1词法分析设计一、实验目的通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和 清楚的理解,并能正确地、熟练地运用二、实验要求1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。2、将标识符填写的相应符号表须提供给编译程序的以后各阶段使用。3、根据测试数据进行测试。测试实例应包括以下三个部分:全部合法的输入。各种组

2、合的非法输入。由记号组成的句子。4、词法分析程序设计要求输出形式:例:输入VC+语言的实例程序:If i=0 then n+ + ;a = 3b %);输出形式为:单词二元序列类型位置(行,列)for(单词种别,单词属性)(1,for )关键字(1, 1)i( 6,i )标识符(1, 2)=(4,=)关系运算符(1, 3)120(5, 0 )常数(1,4)then(1, then)关键字(1, 5)n(6,n )标识符(1, 6)+ +ErrorError(1, 7)/(2,;)分界符(1,8)a(6,a )标识符(2, 1)v =(4,=)关系运算符(2, 2)3bErrorError(2,

3、4)%ErrorError(2, 4)(2,)分界符(2, 5)/(2,;)分界符(2,6)三、实验内容用VC+/VB/JAVA语言实现对C语言子集的源程序进行词法分析。通过 输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编 码及单词符号自身值;若遇到错误则显示“Error”,然后跳过错误部分继续显示; 同时进行标识符登记符号表的管理。以下是实现词法分析设计的主要工作:(1)从源程序文件中读入字符。(2)统计行数和列数用于错误单词的定位。(3)删除空格类字符,包括回车、制表符空格。(4)按拼写单词,并用(内码,属性)二元式表示。(属性值token的机内 表示)(5)如果发现错

4、误则报告出错7(6)根据需要是否填写标识符表供以后各阶段使用。四、实验步骤1、根据流程图编写出各个模块的源程序代码上机调试。2、编制好源程序后,设计若干用例对系统进行全面的上机测试,并通过所设计的词法分析程序;直至能够得到完全满意的结果。3、书写实验报告;实验报告正文的内容:功能描述:该程序具有什么功能?程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图。详细的算法描述(程序总体执行流程图)。给出软件的测试方法和测试结果。实验总结(设计的特点、不足、收获与体会)。五、实验截图先创建salaryfile.txt文件输入If i=0 the nn + + ;a #in

5、cludevstring #includevfstream #include vsstream using namespace std;const char* salaryfile=salaryfile.txt;const int max=40;string idmax=do,end,for,if,printf,scanf,then,while“/关键字 表stringslmaxlN,;,%,),-,*,/,/,/”/ 分界符表算数运算符表关系运算符表spring ksaxl;/、前站 springsmax;/、 im ma?poimH9;/、jH53sjtiAl inr+cipoimerHO

6、;/、iii inr+idpoimerHO;/、HetBwiii int kpomter0;/、5ahl int 50 创褶富 1mid int rowyl;/、5aIT6tN int rowxHl;/、58tia=J!lH-outkeyHowfTeis 置 0甘讪*嗚w養凹犬 id searcht(mt i-string m)、4R訪CD58w=3:ln*HF58lH宀OOErtAA- a word:=Acendr for(XH0;x: max;x+ +) 宀Word V濮ooaa=p=aaezaa=aa=(AC rowyca-zac rowxc 八 nyAcendbreakfor(XH O

7、pcc max;x+i=h(运xllHm)cout A(0-AAm A)5SnAA84AA-AA8esAA-AASttbreakif(XH n max)、fi5ai5acour+c 八-(6-AC m 八 c =)5a(=八 c rowyAa-:ac rowxc 八=yAcendkkpointer=m;kpointer+;if(i=1)识别常数/ coutvv a number!vvendl;for(x=0;xvmax;x+)if(cx=m)coutvv(5,vvxvv)vvendl; break;if(x=max)coutvv(5,vvmvv)(AC rowycA-ZAC rowxc A n

8、yAcend scipoimerHmi cipoimer+=h(liH2)、ol sdsHC别尚為 宀-coutcc- a signa-:=Acendr max;x+i宀ifsxllHm)break、X:siXA6)宀egSIXV5 农 &XC10)宀if(outkeyHHl)Word V濮ooc A AA A wz A A jtf(AC rowycA-ZAC rowxc A nyAcendourkeyHpmHpif(XV9RO&XC max 1)宀if (out key Hl)宀ooc A A A A wz A A HClJtnAA84AA-AA8esAA-AASttoutkeyHpsiXH

9、Hmax)if(outkeyHHl)couT 八Amrror Error (AcrowyccAcrowx:A-yA:endr抑仪PJO=xusz)aleas as-a xuso)oeas (EuyDE96int sign2;/、卅來導wfi讲int diannumbero;/-&lnrs今 for(XHO;XAS-engtho;x+i宀=h(sxv64 农如 SZA91)-(SZV96SEA23)-(5248农52八57)-(XV 0 农农 SEHH46 如农sig n H H HlFfinaH农 SECH57- -SZH H46) 宀N2XIIH46)宀if(diannumberHO) di

10、annumber+e_se signe_se signHpH+if(XH H(s-enshos 宀sn Hssu bsAx一+1-壬Word V濮3V0)宀= ooAAW=AA- H-AAAA3rt=-ooAAW=AA- a-=h(sig n H H 0)、HlFfin*HF31t3iooAA- Error Error(AC rowyAA-zAc rowxc c nyAcend宀= 005 A A= true-AAendrwordooAsnLOLSn)rowx+e_se=h(xvo 农农(S.X4V64 农农 s.x1A91N-SX4V96 农农 s.x1A123)-_(S【X1VH48农农S

11、【X1AH57)、蛊雪尚斡博&宀snHSsubs4*E3V0)宀= ooAAW=AA- h-aaaa0=-0O5AA3AA-=-w(signHHO)ooAA- Error Error (AC rowyAA-zAc rowxc c nyAcend 一e_se= 0O5AA- true-AAendr word -ooAsno-ss 6WX+lipspring 一一 HSsubsAx-lK、RI9*iw wordook(sE=iWord V濮宀H+=h(sx+lv64农农盈卡匕名匕-希玄+匕茁农农盈卡一買肘一倉莘一“生农农盈x+lAH57)、in)lfflfin9l*册劇则葩宀sn Hssu bst

12、r* i+1?、coutccsncA-jtliAcAif(_llH-:)rowy+ rowxHl;int main。int x;string instring;/读入一行string sn;/*getline(cin,sn)“/ string 带空格输入 coutvvsnvvendl;char t=sn0;if(t=48&tv=57) searcht(1,sn);elseif(t64&tv91)|(t96&tvl23)searcht(O,sn);else searcht(2,sn);*/ifstream inputfilein file stream inputfile open(salary

13、file);/ inputfilenoskipws;if(!inputfile)coutvvno filevvendl;string pp;while(!inputfile eofO)getline(inputfile,pp);istringstream istr(pp);string ppword;while(istrppword)/按照空格分割字符串split(ppword);/*int begin = 0;/去掉字符串的所有空格begin = pp.find( ”,begin); 査找空格在str中第一次出现的位置while(begin != -1) 表示字符串中存在空格ppreplac

14、e(begin, 1, ); /用空串替换str中从begin开始的1个字 符begin = pp.find(” ,begin); /査找空格在替换后的str中第一次出现 的位置*/ coutvvgood vvppvvendl;/ rowx+; rowy+“/换行 rowx=1;return 0;七、实验总结通过本次试验使我不仅对词法分析器有了更深的了解,而且提高了编程能九希望在以后的学习中可以解决词法分析更多的问题。实验2 LL(1)分析法、实验目的通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的 区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和 构造方法,

15、训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。二、实验要求1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。2、如果遇到错误的表达式,应输出错误提示信息。3、对下列文法,用LL (1)分析法对任意输入的符号串进行分析: E-TG(2) G-+TG|TG(3) G-s(4) T-FS(5) S-*FS|/FS(6) S- F-(E)(8) F-i三、实验内容根据某一文法编制调试LL ( 1 )分析程序,以便对任意输入的符号串 进行分析。构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。分析法的功能是利用LL (1)

16、控制程序根据显示栈栈顶内容、向前看符以及LL(1)分析表,对输入符号串自上而下的分析过程。四、实验步骤1、根据流程图编写出各个模块的源程序代码上机调试。2、编制好源程序后,设计若干用例对系统进行全面的上机测试,并通过所设计的LL(1)分析程序;直至能够得到完全满意的结果。3、书写实验报告;实验报告正文的内容:写出LL(1)分析法的思想及写出符合LL(1)分析法的文法。程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图。详细的算法描述(程序执行流程图)。给出软件的测试方法和测试结果。实验总结(设计的特点、不足、收获与体会)。五、实验截图D:c t + dccumet

17、TtsT3E?ifj:DebiLigb i a nyi2_2.esettEi+i*i#初始化1#Ei+i*i#E-TGPOP,PUSHCGT2ttGJi+i*i#T-FSPOP,PUSHCSF3#GSFi+i*i#F-iPOP,PUSHCi4flGSii+i*iitGETNEXT呂#GS+i*i#s-$POP,PUSHC$6ttG+i*i#G-+IGPOP,PUSHCGT+7#GT +i*i#GETNEXT8ttGJi*i#T-FSPOP,PUSHCSF9#GSFi*i#F-iPOP,PUSHCi10#GSii*i#GETMEXTCI11#GS*i#S-*FSP0P,PUS412#GSF*i#

18、GETMEXTCI13#GSFi#F-iP0P,PUS414#GSii#GETMEXTCI15#GStts-$POP,PUS416ttGttG-$P0P,PUS417#sucessed!over!?!匚to continue六、核心代码#includeviostream #includevstring using namespace std; string pp“/输出字符串 string hh=rn;/换行 const int max=50;int endfumax;/终止符序号表int endfupointer=8;char endfurealmax=+,-,*:7,(,i,),#; in

19、t unendfumax;int unendfupointer=5;char unendfurealmax=E,G,T,S,F;sr+ringmakem 伴 hHaxHrTVTG-:GV+TG-:GYTG-:GVS-:TVFS-:SV*FS-:SV、FS-Isos-:?1乂 Ey-ZFY-F、0 EOTpl QV+HQ-M QV.HQ-W Qv TOFS-5 s v*FS-6 s v、FS-7 svs-8TvscoTv、另ittKJwstring behaviollmaxllr 世3:0 int checkendfu(char fswidlnmtstr;int x,y;for(x=0;xmax

20、;x+) /初始化分析表99为错误代号for(y=0;yy=99;smarttable04=0;smarttable05=0;smarttable10=1;smarttable11=2;smarttable16=3;smarttable17=3;smarttable24=4; smarttable25=4; smarttable30=7; smarttable31=7; smarttable32=5; smarttable33=5; smarttable36=7; smarttable37=7; smarttable44=8; smarttable45=9;smartbox mark;char

21、fu;char enterfu;int endfunumber; int unendfunumber; string readyin; string enter;/ cinenter; enter=i+i*i#; enter=str;enter=(i)#;int count=0;步骤char buffer1max;sprintf(buffer1,%d,count);string s1=buffer1;pp=pp+s1+;/分析栈for(int qq1=0;qq1v=markboxpointer;qq1+)pp=pp+markboxqq1;for(qq1=0;qq1v10-markboxpoin

22、ter;qq1+)pp=pp+;剩余输入栈string jiequ1=enter.substr(0,enterlengthO); pp=pp+jiequ1;for(int t1=0;t1v20;t1+)pp=pp+;pp=pp+ 初始化+hh;for(x=0;xventerlengthO;)步骤count+;char buffermax; sprintf(buffer,%d,count); string s=buffer; pp=pp+s+;分析栈for(int qq=0;qqv=markboxpointer;qq+) pp=pp+markboxqq;for(qq=0;qqv10-markbo

23、xpointer;qq+)pp=pp+;剩余输入栈string jiequ=entersubstr(x,enterlength()-x); pp=pp+jiequ;for(int t=0;tvx+10;t+)pp=pp+;enterfu=enterx;II coutenterfu: vventerfuvvendl;markcheck();fu=markpopO;II coutv2;y-)pp=pp+readyiny;pp=pp+)+hh;/ coutvvreadyin: vvreadyinvvendl;int firsttime=0;for(y=readyin length()-1;y2;y-

24、)/ coutvvreadyinyvv;if(readyiny!=$)markpush(readyiny);if(firsttime=0)if(checkendfu(readyiny)!=-1)/ coutvvnow x: vvxvv;步骤count+;char buffermax;sprintf(buffer,%d,count);string s=buffer;pp=pp+s+;/分析栈for(int qq=O;qqv=mark.boxpointer;qq+)pp=pp+mark.boxqq;for(qq=0;qqvl0-markboxpointer;qq+)pp=pp+;剩余输入栈stri

25、ng jiequ=entersubstr(x,enterlength()-x); pp=pp+jiequ;for(int t=0;tvx+10;t+)pp=pp+;pp=pp+GETNEXT(I)+hh;x+;/ coutvvnext x: vvxvv vvendl; firsttime=1;markcheck();/ coutvvendl; pp=pp+hh;coutvvpp;return 0;CDialog:OnOK0;七、实验总结通过本次试验使我不仅对11(1)分析法有了更深的了解,而且提高了编程能 力,希望在以后的学习中可以解决自动构造follow集的问题。实验3LR(1)分析法一、实

26、验目的构造LR(1 )分析程序,利用它进行语法分析,判断给出的符号串是否为该文 法识别的句子,了解LR (K)分析方法是严格的从左向右扫描,和自底向 上的语法分析方法。二、实验要求1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。2、如果遇到错误的表达式,应输出错误提示信息。3、程序输入/输出实例:输入一以#结束的符号串(包括+*()i#):在此位置输入符号串输出过程如下:步骤状态栈符号栈剩余输入串i+i*i#移进i + i*i 的LR分析过程步骤状态栈符号栈输入串动作说明# i + i*i# ACTIONO,i二S5,状态 5 入栈205#i+i*i#303#F+i*i#402#

27、T+i*i#501#E+i*i#016016r6: FT 归约,GOTO(0,F)=3 入栈r4: TF 归约,GOTO(0,T)=3 入栈r2: ET 归约,GOTO(0,E)=1 入栈ACTION1,+=S6,状态 6 入栈1011121314016501630169#E+ i*i#ACTION6,i=S5,状态 5 入栈#E+i *i# r6: Fi 归约,GOTO(6,F)=3 入栈#E+F *i# r4: TF 归约,GOTO(6,T)=9 入栈#E+T *i# ACTION9,*=S7,状态 7 入栈01697 #E+T* i# ACTION7,i=S5,状态 5 入栈016975

28、 #E+T*i # r6:Fi 归约,GOTO(7,F)=10 入栈0169710 #E+T*F # r3: TT*F 归约,GOTO(6,T)=9 入栈0169 #E+T # r 1:EE+T,GOTO(0,E)=1 入栈01 #E # Acc :分析成功三、实验内容对下列文法,用LR (1)分析法对任意输入的符号串进行分析: E- E+T E-T(3) T- T*F T-F(5) F- (E)(6) F- i四、实验步骤1、根据流程图编写出各个模块的源程序代码上机调试。2、编制好源程序后,设计若干用例对系统进行全面的上机测试,并通过所设计的LR(1 )语法分析程序;直至能够得到完全满意的结

29、果。3、书写实验报告;实验报告正文的内容:描述LR(1)语法分析程序的设计思想。程序结构描述:函数调用格式、参数含义、返回值描述、函数功能;函数之间的调用关系图。详细的算法描述(程序执行流程图)。给出软件的测试方法和测试结果。五、实验截图I D;c -F -I- document5/BT3iDebugbidnyi3_J.exe卩e9p11121314PressQ05MJ02 01Q1GQ1G50163MlbV01697016971091G5 0丄anij My to41 ffF #TitF ttE+ #Ei UE+F fft+J #E+T* #F+T*i ltE+T*F #E *T UE co

30、nt inueiixi# +L*i# +i*i +i*i# +i*it i*itt xi# *i4fi#flCT IOHEBil -GE,状态 5 入栈FTl归约,GQTX0,F=3人栈r& :诃:T-F归约,GOTO=2XtS r2: E-TI丿二营 ftCTTONTI ,+l=Rf; fiCTION6,il=S5, rt= r-iJ3 约謳OTQT*Fl)EI,GOTOETlJZ,GOTO-l 眦听分析成帀六、核心代码#includeviostream#includevstringusing namespace std;int count=1;string pp;/输出字符串string

31、hh=rn;/换行const int max=100;char endfurealmax=i,+I*JC,)J#J,EJTJF;int endfupointer=8;string creatwordmax=E-E+T,E-T,T-T*F,T-F,F-(E),F-i;/ (0) E- E+T(1)E-T (2) T- T*F (3) T-F (4)F- (E) (5)F-注意rj时j应对应数组下标int checkendfu(char fu)查终结符序号 int x;for(x=0;x=endfupointer;x+) if(endfureal |X=fu)break;if(xv=endfupo

32、inter)return x; else return -1;class actiongo/原 子动作 public:actiongoO/ coutvveroor! wrong action or goto creatvvendl; actype=4;action(int i,int j)actype=i;number=j;/ coutvvivv vvjvvendl;int actype;/0=s 1=r 2=acc 3=goto 表 4=wrongint number;actiongo smarttablemaxmax;class stylebox/状态栈public:styleboxObo

33、x0=0;boxpointer=0;void push(int style)boxpointer+; boxboxpointer=style;int popOint a=boxboxpointer; boxpointer-;/ coutvvpop nowvvendl; return a;int boxmax;int boxpointer;class readybox/ 已归约栈public:readyboxObox0=#;boxpointer=0;void push(char fu)boxpointer+;boxboxpointer=fu;char popOchar a=boxboxpoint

34、er;boxpointer-;return a;char boxmax;int boxpointer;int program(stylebox&style,readybox&ready,char fu,int icount,string ptr,intcontrol)/返回是否需要移进信号if(control=1) /char bermax;sprintf(ber,%d,count);string st=ber;pp=pp+st+count+;/pp=pp+;for(int qq=O;qqv=style boxpointer;qq+)char bssmax;sprintf(bss,%d,sty

35、le boxqq);string st=bss;pp=pp+st;for(qq=0;qqv10-style boxpointer;qq+)pp=pp+;for( qq=0;qqv=readyboxpointer;qq+)pp=pp+ready.boxqq;for(qq=0;qqOOCA A mCA imli-checkendfu(fapl)宀PPHPP+=error=-=return 4;/wrong=ooAA- stm博哪=AA?AA= -AATA03n= int checksty-eHsmarttab-e 日曰actype;/、liif(checksty_eHH4)宀PPHPP+=erro

36、r=-= rer+urn 4;/wrong=h(checksty-eHH0-checksty-eH3)styppushaKinwsif(checksty_eHHO)、couzACToNAcA:xfuAA-llsAAsmarttab_AmnumbeKAcendrpp=pp+ACTION;char buffermax;sprintf(buffer,%d,i); string s=buffer;pp=pp+s;pp=pp+,;pp=pp+fu;pp=pp+=S;char bufmax; sprintf(buf,%d,smarttableij .number); s=buf;pp=pp+s;pp=pp

37、+,状态;pp=pp+s+入栈+hh;if(checkstyle=3) /coutvvivv,vvendfureal|jv)=vvsmarttablei|j.numbervv入 栈vvendl;char bfmax;sprintf(bf,%d,i);string s=bf;pp=pp+s;pp=pp+,+endfurealj+)=;char bfffmax;sprintf(bfff1%d1smarttableij .number);s=bfff;pp=pp+s+入栈+hh;ready.push(fu);style push(smarttableij .number);/coutvvstyle

38、boxstyle boxpointervvendl;return 1;/移进if(checkstyle=1)string l=creatwordsmarttableij .number;/ coutvvrvvsmarttableij.number+1: vvlvv归约,GOTO(; pp=pp+r;int dd=smarttableij .number+1;char bfcmax;sprintf(bfc,%d,dd);string ss=bfc;pp=pp+ss+: +l+归约,GOTO(;char n“/pop 用的int x;/ coutvvllengthOvvendl;char sq=r

39、eady.popO;for(x=0;xvl length()-4;x+)/前面 pop 次了n=style.popO; n=ready.popO;/coutvvnvvendl;/ coutvl0str;/0=i 1=+ 2=* 3=( 4=) 5=# 6=E 7=T 8=Fsmarttable00 action(0,5);smarttable03 action(0,4);smarttable06 action(3,1);smarttable07 action(3,2);smarttable08 action(3,3);smarttable11 action(0,6);smarttable15

40、action(2,0);smarttable21 action(1,1);smarttable22 action(0,7);smarttable24 action(1,1);smarttable25 action(1,1);smarttable31 action(1,3);smarttable32 action(1,3);smarttable34 action(1,3);smarttable35 action(1,3);smarttable40 action(0,5);smarttable43 action(0,4);smarttable46 action(3,8);smarttable47

41、action(3,2);smarttable48 action(3,3);smarttable51 action(1,5);smarttable52 action(1,5);smarttable54 action(1,5);smarttable55 action(1,5);smarttable60 action(0,5);smarttable63 action(0,4);smarttable67 action(3,9);smarttable68 action(3,3);smarttable70 action(0,5);smarttable73 action(0,4);smarttable78

42、action(3,10);smarttable81 action(0,6);smarttable84 action(0,11);smarttable91 action(1,0);smarttable92 action(0,7);smarttable94 action(1,0);smarttable95 action(1,0); smarttable101 action(1,2); smarttable102 action(1,2); smarttable104 action(1,2); smarttable105 action(1,2); smarttable111 action(1,4); smarttable112 action(1,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!