资源简介
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通讯解决方案
相关资源
- 贪吃蛇代码+继续游戏用文件存储
- 入门书籍.rar三本LBM的入门书籍,适合
- 基于Qt实现的多线程客户端与服务器
- 图书管理系统,大一实习
- vs2015搭载Qt Creator 4.5.1写的一个串口调
- 最新版本7.1.0 MinGW For Windows
- QT调用basler SDK 多线程多相机采集代码
- 基于opencv的双目相机标定代码
- cmake-3.17.2-win64-x64.zip
- 元器件管理小程序
- 视频人脸追踪
- C用Easyx图形库编写贪吃蛇.zip
- VC锁屏屏蔽热键
- 大家来找茬有些小BUG
- 基于hog+pca+svm行人检测源码
- OMG的DDS标准的使用
- 基于TCP、QT带虚拟键盘的多功能聊天系
-
fr
ameLessWinApiQt无边框窗口调用winAP - edgenet.tar.gz
- 我们自己写的浏览器源代码
- 基于DCT算法视频压缩内含实验报告和
- Opencv+VS米粒图像处理实验源代码
- ACE编程超全面
- VTK使用手册VTKUsersGuide
- 海康工业相机二次开发源码 + OpenCV3
- VS+CSocket实现网络聊天,可发文件Wor
- 基于Winpcap实现抓取数据包
- 南京公交线路查询
- 图像细化算法
- Visual C 6.0
评论
共有 条评论