2023年语义分析实验报告2.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2023年语义分析实验报告2.docx》由会员分享,可在线阅读,更多相关《2023年语义分析实验报告2.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验三语法分析 科3 李君林一.实验目的:通过使用、剖析和扩充TINY语言的语义分析程序,掌握编译器的语义分析 程序的构造方法。二.实验内容(一)运营T INY的语义分析程序(二)扩充T I NY的语法分析程序提醒:。考虑作用域(如:函数)和数组时也许需要修改符号表。三,实验环节.先读懂T INY语义程序(相关联的文献:MAIN. C ANA L YZE.C AN ALYZE.H)(1) b u i 1 d Sym t ab(s y nt a xTree);根据语法树建立符号表通过递归调用 tr a verse(syntaxTr e e, insert No de, null P r oc);
2、进行 static void insertN o d c ( Tre e Node * t ),这样将碰到与 I D 有关的 N o de 信息通过 voi d st_in s ert( char * name, int li n e no, i n t loc,int len )加入到 hashT a blch数据结构中。(2 )接着调用typeCheck (syntaxTre e);进行类型检测通过递归调用 tr a ver se(synt a xT r e e, n ullProc, checkN o de);将语法树遍 历然后调用s t atic voi d c heckNode(T
3、r eeNo d e * t)对节点进行类型检测2.扩充TINY的语法分析程序本次实验我一方面将源程序实现的功能改成符合C.MINUS的符号表与类型检 测a dd 1 ine num be r o f us e only */st_insert(t-attr.name,t- 1 i nen o , 0,-1);b r eak;。 d e fau 1 t:bre a k;)b rea k;d e f a ult: break;)/* F unction b uildSymtab const r u c ts the symbo 1* t a ble b y preor d er t rav e
4、rsai oflhesy n t a x tree*/v o id b u i ldSymtab(Tre e N ode * sy n taxTree)(fp r i n t f(li s ting/XnunDecErr o r an d arra y Cal 1 Er r or c h eckn);trav e r s e(syn t ax T r e e,inse r tNode,nullPr o c);f printf(lis ting , n u n De c Err o r and a r ra y C allE r r or ch e ck fi n i s h ed n);if
5、(Tra c eA n al y ze)(i f (T r ac e Ana 1 yz e ) f printf( 1 i s t i ng, nB u i 1 di n g Sym b o 1 Table. An);prin t SymTab(l i sti n g);/* P roced u re c heck Nod epe r fo r ms* t ype ch e cki n g at a s ingle t ree n ode*/s t a t ic v oid check Node (Tree N ode * t)(sw i t c h (t- n o dek i nd) c a
6、se Exp K:switc h ( t k ind.ex p ) c ase OpK:if ( t -child 0 -(y p e != I n leger) |(t- c h i 1 d 1 -typc != Int e g er)t ypeErro r (t,O p appl i e d t o no n - i nl e g er );if (t-attr. op = EQ) | (t- a t tr. o p = LT) | (tattr. o p = BG)g | I ( t -attr. op = LE) | ( t -att r .o p = BG) | (t-attr.o
7、p = U N EQ)t-t y pe = Bo o lean;el s et- t y p e = Int e ger;b r e a k;c a se C o nstK:c a se I d K:t t ype = Integer;def ault:brea k;)b r eak;case Stm t K :sw i tch (t- k ind.stmt) c a s e Se 1 K:i f (t-ch i ld 0 -t y p e = I nt e g e r)ty p e E rro r (t-child0, i f t e s t i s no t Boo 1 ean ); br
8、e a k;case I teK:i f (t- ch i Id 0typ e = In t e g er)t y peError( t -c h i ldOb while tes t i s no t Boolean); break;ca s e W r iteK:i f (t- c h ild0- t ypc ! = Int e ger)“ y p e E r ror(t-c h ild 0 /w r i( e of non- i nl e g er v a 1 u e * ); obrea k ;def a u 1 t: break;)bre a k;default:/ * Pr o c
9、e d u rc t y p e Ch e c k performs ty p e c h eck i n g* b y a po s t o rde r s y n t a x tree traversa 1vo i d (yp e Check( Tre eNode * syntaxTr e e)otra v e r s e (s y ntaxTree, n ullPr o c,c h ec k Node);然后加入没中明调用与数组调用错误即数组没申明而调用数组类型。四.实验结果1 .对的的测试程序/ */i n t g c d (i n t u, i nt v j)(if( v = 0 )
10、r e t u r n u;elseretu r n g c d(v,u);)voi d main(void)int x;i n t y;rea d x ;x =y=2;w h i 1 e(x0)y=y-hwrite y;re t urn (gcd(x,y);)/ */运营结果:unDecErroi* and arrayCa 1 lError checkunDecError and arrayCa1lError check f inishedQBuilding Symbol Table .Uariable NameLocationLineNumbersmain391257u2247X41111
11、1314y511111315gcd02717Checking Types Type CheckingFinishedPress any keyto continue17151617经检查测试程序代码无语义错误2 .错误测试程序/ */int gcd (i n t u ,in t v)i f ( v =0)retur n u;e Iser e t u rn gc d (v, u );)vo i d main(void)int x; i n t y;re a d x ;t=l;x=y= 2 ;wh i le(x 0 )y=y-l;wr i te y;re t u r n ( g cd(x,y);/
12、*/实验结果:unDecError Type error Type errorkm DecErrorand arvayCallError check at line 13: the t doesnt declaration at line 15: the ID x isnt a Array and arrayCa1lError check f inishedBuilding Symbol Table.Uariable NameLocationLineNumbersmain3912572247X41111141619y51111141717gcd02719becking Types.1819Ty
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 语义 分析 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内