编译原理之语义分析

上传人:hs****ma 文档编号:548636613 上传时间:2022-08-09 格式:DOC 页数:23 大小:68KB
返回 下载 相关 举报
编译原理之语义分析_第1页
第1页 / 共23页
编译原理之语义分析_第2页
第2页 / 共23页
编译原理之语义分析_第3页
第3页 / 共23页
编译原理之语义分析_第4页
第4页 / 共23页
编译原理之语义分析_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《编译原理之语义分析》由会员分享,可在线阅读,更多相关《编译原理之语义分析(23页珍藏版)》请在金锄头文库上搜索。

1、编译原理之语义分析(Semantic analysisof compilerprinciples)/ / 语义分析源代码/ / function a = 2 + 3 * 4; x = (a + b) / c; endfunc # include # include # include # include # include struct quadchar result 12; char ag1 12; char op 12; char ag2 12; ;struct quad quad 30;int count = 0;char * expression (void);char prog 20

2、0, token 8;char ch;int syn, p, m, n, sum = 0, y = 0, mm = 0;char * rwtab 6 = function, if, then, while, do, endfunc;from scaner ()m = 0;for (n = 0; n = a & & ch = z) | | (ch = a)while (ch = a & & ch = z) | | (ch = a), | | (ch = 0 & & ch = 9)token m + + = ch;ch = prog p + +;token m + + = 0;p - - - -

3、- - - -;syn = 10;for (n = 0; n = 0 & & ch = 0 & & ch = 9)sum = sum * 10 + ch - 0);ch = prog p + +;p - - - - - - - -;syn = 11;elseswitch (ch)case means:m = 0;token m + + = ch;ch = prog + + p;if (ch = = =)syn = 24;token m + + = ch;elsesyn = 23;ch = prog - p;break;case =:m = 0;token m + + = ch;ch = pro

4、g + + p;if (ch = = =)syn = 25;token m + + = ch;elsesyn = 18;ch = prog - p;break;case ! :m = 0;token m + + = ch;ch = prog + + p;if (ch = = =)syn = 22;token m + + = ch;elsesyn = - 1;break;case +: syn = 13; token 0 = ch; break;case -: syn = 14; token 0 = ch; break;case *: syn = 15; token 0 = ch; break;

5、case /: syn = 16; token 0 = ch; break;case ;: syn = 26; token 0 = ch; break;case (): syn = 27; token 0 = ch; break;case ): syn = 28; token 0 = ch; break;case #: syn = 0; token 0 = ch; break;default: syn = - 1;/ / ch = prog p + +;from emit (char * result, char * ag1, char * op, char * ag2)strcpy (qua

6、d count.result, result); strcpy (quad count.ag1, ag1); strcpy (quad count.op, op); strcpy (quad count.ag2, ag2); count + +;return;char * newtemp ()char * p;char m 8;p = (char *) malloc (8);c + +;itoa (k, m, 10);strcpy (p + 1, m);p 0 = t;return (p);char * factor (void)char * fplace;fplace = (char *)

7、malloc (12);strcpy (fplace, );if (syn = = 10)strcpy (fplace, token);scaner ();else if (syn = = 11)itoa (sum, fplace, 10);scaner ();else if (syn = = 27)scaner ();fplace = expression ();if (syn = = 28)scaner ();elseprintf ( n) 错误 );kk = 1;elseprintf ( n (错误 );kk = 1;return (fplace);char * term (void)char * tp, * wp2, * eplace, * tt;tp = (char *) malloc (12);wp2 = (char *) malloc (12);eplace = (char *) malloc (12);tt = (char *) malloc (12); strcpy (eplace, factor ();while (syn = = 15 | | vision = = 16)if (syn = = 15)tt 0 = *; tt 1 = 0;else if (syn = = 16)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号