资源简介
1、 理解自底向上语法分析方法;
2、 用LR分析技术实现语法分析器;
3、 熟练掌握LR分析程序的构造方法。

代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
string temp[20];
int c;
ofstream out(“output.txt“ios::app);
string output;
void ReadDataFromFileLBLIntoString()
{
string total = ““;
int i = 0;
ifstream fin( “input.txt“ );
while(fin.good() && i < 20){
getline(fintemp[i]);
total += temp[i];
i++;
c=i;
}
}
char input[10];
void inputcode(string x){
for(int m=0;m {
input[m]=x[m];
}
}
string action[12] [6]={
{“s5“ “error““error“ “s4“ “error“ “error“}
{“error““s6“ “error“ “error“ “error““acc“}
{“error““r2“ “s7“ “error“ “r2““r2“}
{“error“ “r4““r4““error““r4““r4“}
{“s5““error“ “error““s4““error“ “error“}
{“error““r6““r6““error““r6““r6“}
{“s5“ “error““error“ “s4“ “error““error“}
{“s5“ “error““error“ “s4“ “error“ “error“}
{“error““s6“ “error““error“ “s11““error“}
{“error““r1“ “r7““error“ “r1 ““r1“}
{“eror““r3“ “r3“ “error““r3““r3“}
{“eror““r5“ “r5“ “error““r5““r5“}
};
string go[12][3]={
{“1““2““3“}
{“error““error““error“}
{“error““error““error“}
{“error““error““error“}
{“8““2““3“}
{“error““error““error“}
{“error““9““3“}
{“error““error““10“}
{“error““error““error“}
{“error““error““error“}
{“error““error““error“}
{“error““error““error“}
};
char Vt[6]={‘i‘‘+‘‘*‘‘(‘‘)‘‘#‘};
string LR[6]={“E->E+T““E->T““T->T*F““T->F““F->(E)““F->i“};
stackS;
stackX;
int num(string s){ //判断字符串中的数字
int i;
string str=““;
for(int j=0;j if(s[j]>=‘0‘&&s[j]<=‘9‘)
str=str+s[j];
}
i=atoi(str.c_str());
return i;
}
//剩余输入串的输出
void print(int ichar*c)
{
for(int j=i;j<10;j++){
cout< out < }
cout<<‘\t‘;
out <<‘\t‘<}
//查找终结符
int same(char a){
for(int i=0;i<6;i++){
if(a==Vt[i])
return i;
}
}
void analyse(string x){
bool flag=true; //循环条件
int step=1point=0state=0; //步骤 指针 状态
char ch1ch2;
int mnl; //用于判断终结符,分析表,表达式右部的长度
string str1; //用于判断对应分析表中的符号
string str2=“#“str3=“0“; //记录符号栈、状态栈中的所有元素
inputcode(x);
X.push(‘#‘);
S.push(0);
cout<<“步骤“<<‘\t‘<<“状态栈“<<‘\t‘<<“符号栈“<<‘\t‘<<“输入串 “<<‘\t‘<<“动作“< out <<“步骤“<<‘\t‘<<“状态栈“<<‘\t‘<<“符号栈“<<‘\t‘<<“输入串 “<<‘\t‘<<“动作“<< output << endl;
out < cout<
print(pointinput);
cout<<“初始化“< out<<“初始化“<
while(flag)
{
state=S.top();
ch1=input[point];
m=same(ch1);
str1=action[state][m];
if(str1[0]==‘s‘)
{
n=num(str1);
S.push(n);
X.push(ch1);
str2=str2+ch1;
ch2=n+48;
str3=str3+ch2;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-05 19:14 自底向上语法分析--LR分析\
文件 38912 2018-12-05 19:14 自底向上语法分析--LR分析\4实验四 自底向上语法分析--LR分析.doc
目录 0 2018-12-02 11:06 自底向上语法分析--LR分析\Debug\
文件 598101 2018-12-02 11:06 自底向上语法分析--LR分析\Debug\LR分析.exe
文件 845624 2018-12-02 11:06 自底向上语法分析--LR分析\Debug\LR分析.ilk
文件 398160 2018-12-02 11:06 自底向上语法分析--LR分析\Debug\LR分析.obj
文件 2391428 2018-11-29 00:32 自底向上语法分析--LR分析\Debug\LR分析.pch
文件 1180672 2018-12-02 11:06 自底向上语法分析--LR分析\Debug\LR分析.pdb
文件 91136 2018-12-02 11:06 自底向上语法分析--LR分析\Debug\vc60.idb
文件 126976 2018-12-02 11:06 自底向上语法分析--LR分析\Debug\vc60.pdb
文件 56 2018-11-29 01:29 自底向上语法分析--LR分析\input.txt
文件 4778 2018-12-02 10:20 自底向上语法分析--LR分析\LR分析.cpp
文件 42447 2018-12-05 19:13 自底向上语法分析--LR分析\LR分析.docx
文件 3403 2018-12-02 11:06 自底向上语法分析--LR分析\LR分析.dsp
文件 537 2018-12-02 11:06 自底向上语法分析--LR分析\LR分析.dsw
文件 41984 2018-12-02 11:06 自底向上语法分析--LR分析\LR分析.ncb
文件 48640 2018-12-02 11:06 自底向上语法分析--LR分析\LR分析.opt
文件 1300 2018-12-02 11:06 自底向上语法分析--LR分析\LR分析.plg
文件 13716 2018-12-02 11:06 自底向上语法分析--LR分析\output.txt
- 上一篇:小区物业管理信息系统
- 下一篇:AB触摸屏与第三方PLC通讯解决方案
相关资源
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- 用C 实现的对网络上的ARP数据包进行
- Microsoft基本类库 (MFC)(C 库)
评论
共有 条评论