资源简介
编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。 给定算术表达式文法,编写程序。测试数据:1.算术表达式文法 E→TE’ E’ → +TE’|- TE’|ε T→FT’ T’ →*FT’ |/ FT’ |%FT’|ε
代码片段和文件信息
#include
#include
#include
char cch;
FILE *fp;
char GetC( )//取下一个字符
{
char t;
t=getc(fp);
if(t==‘\t‘||t==‘\n‘||t==‘\r‘) t=‘ ‘;
return t;
}
char Vt[10]={‘+‘‘-‘‘*‘‘/‘‘%‘‘(‘‘)‘‘i‘‘n‘‘#‘};//终结符
char Vn[5]={‘E‘‘M‘‘T‘‘N‘‘F‘};//非终结符
char *Fa[12]={“TM““+TM““-TM““““FN““*FN““/FN““%FN““““(E)““i““n“};//产生式
int analysis_table[5][10]={-1-1-1-1-10-200-2
12-1-1-1-13-1-13
-2-2-1-1-14-244-2
88567-18-1-18
-2-2-2-2-29-21011-2};//预测分析表
#define maxsize 1024
typedef struct//结构栈
{char data[maxsize];
int top;
}seqstack;
seqstack *init_seqstack()//栈初始化
{
seqstack *s;
s=new seqstack;
if(!s)
{cout<<““< return NULL;
}
else
{s->top=-1;
return s;
}
}
void push_seqstack(seqstack *schar x)//入栈
{
if(s->top==maxsize-1)
cout<<“栈满!操作不成功!“< else
{s->top++;
s->data[s->top]=x;
}
}
void pop_seqstack(seqstack *schar x)//出栈
{
if(s->top==-1)
cout<<“栈空操作不成功!“< else
{x=s->data[s->top];
s->top--;
}
}
char top_seqstack(seqstack *s)//取栈顶元素
{ if(s->top==-1)
return 0;
else
return s->data[s->top];
}
int compare(char wchar x[])//查找位置
{ for(int i=0;i<10;i++)
{
if(w==x[i])
return i;
}
return -9;
}
void analysis()
{
seqstack *s; char topdate;
s=init_seqstack();
push_seqstack(s ‘#‘);
push_seqstack(sVn[0]);
cch=GetC(); //读入一个字符
topdate=top_seqstack(s); //取栈定元素
cout<<“栈顶元素“<<“ 当前单词“<<“
- 上一篇:ds12c887+的汇编程序与C语言应用程序
- 下一篇:C语言学生管理系统项目
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 编译原理c语言编译器
- 编译原理实验-词法分析(c语言代码)
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
评论
共有 条评论