编译原理-语法分析程序设计(预测分析法)

上传人:lil****ar 文档编号:281921769 上传时间:2022-04-25 格式:DOC 页数:4 大小:30KB
返回 下载 相关 举报
编译原理-语法分析程序设计(预测分析法)_第1页
第1页 / 共4页
编译原理-语法分析程序设计(预测分析法)_第2页
第2页 / 共4页
编译原理-语法分析程序设计(预测分析法)_第3页
第3页 / 共4页
编译原理-语法分析程序设计(预测分析法)_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《编译原理-语法分析程序设计(预测分析法)》由会员分享,可在线阅读,更多相关《编译原理-语法分析程序设计(预测分析法)(4页珍藏版)》请在金锄头文库上搜索。

1、1 实验目的构造文法的语法分析程序实验要求,2 实验要求采用预测分析法对输入的字符串进行语法分析。3 实验环境V4 实验原理对文法G进行语法分析,文法G如下所示:*0.Sa */*1. S *2.S(T) *3.TSW *4. W,SW *5.W;5 软件设计与编程#include #include #include char str100; /存储待分析的句子const char T = a(),#; /终结符,分析表的列符const char NT = STW; /非终结符,分析表的行符/*指向产生式右部符号串*/const char *p = /*0.Sa */a,/*1. S */ ,

2、/*2.S(T) */(T),/*3.TSW */SW,/*4. W,SW */,SW,/*5.W; */; /设Mij=x,通过pMij=px获取右部符号串。const int M6 = /* a ( ) , # */*S*/ 0, 1, 2, -1, -1, -1 , /*T*/ 3, 3, 3, -1, -1, -1 , /*W*/ -1, -1,-1, 5, 4, -1 ;void init()/输入待分析的句子printf(请输入待分析的句子(以$结束):n);scanf(%s,str);int lin(char c);/非终结符转换为行号int col(char c);/终结转换为

3、列号bool isNT(char c);/isNT判断是否是非终结符bool isT(char c);/isT判断是否是终结符。void main(void)int i,j=0;int flag=1,flag2=0;char A;/设置指示句子的当前字符char stack20=#,S; /栈赋初值int top = 1 ;/设置栈顶指针char X = ; /存储栈顶字符init();A=str0; printf(t步数t分析栈t输入串t所用规则n);/在屏幕上输出列表标题while ( 1 )printf(nt(%d)t,+j);/输出当前执行步数for ( i = 0 ; i = 0;

4、i-)stack+top = *(pMlin(X)col(A) + i ) ;elseprintf(Error in main()%cn,X);exit(0);int lin(char c)for(int i = 0; i %cn,c);exit(0) ;int col(char c)for (int i=0; i%cn,c);exit(0);bool isNT(char c) /是否是非终结符for (int i = 0; i (int)strlen(NT); i + )if (c=NTi)return true;return false;bool isT(char c) /是否是终结符(不包括#)for (int i = 0; i (int)strlen(T) - 1; i + )if (c = Ti)return true;return false;6 程序测试结果

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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