资源简介
这是我自己用c++编的LR分析器,下载后即用。对编译时出现的各种错误都能纠正,很好用,希望能够帮助大家。
另外补充一下:此编译器实现功能主要是+*()的操作。
代码片段和文件信息
#include
#include
#include
using namespace std;
char f[9]={‘i‘‘+‘‘*‘‘(‘‘)‘‘#‘‘E‘‘T‘‘F‘};
/*将产生式左部写在前,逆序存放产生式内容*/
char anal[8][2]=
{
{‘E‘‘E‘} // 1 E->E+T
{‘E‘‘T‘} // 2 E->T
{‘T‘‘T‘} // 3 T->T*F
{‘T‘‘F‘} // 4 T->F
{‘F‘‘(‘} // 5 F->(E)
{‘F‘‘i‘} // 6 F->i
};
void display(int lr)
{
cout<<“按“;
switch(lr)
{
case 1:cout<<“E->E+T“;break;
case 2:cout<<“E->T“;break;
case 3:cout<<“T->T*F“;break;
case 4:cout<<“T->F“;break;
case 5:cout<<“F->(E)“;break;
case 6:cout<<“F->i“;break;
}
cout<<“归约“< }
//LR分析表(个位表状态,十位1表r,十位2表s)
int LR[12][9]=
{
{25-1-124-2-1123}
{-3260-3-2100000}
{-31227-31212000}
{-3141401414000}
{25-1-124-2-1823}
{-3161601616000}
{25-1-124-2-1093}
{25-1-124-2-10010}
{-3260-331-4000}
{-31127-31111000}
{0131301313000}
{0151501515000}
};
int anal_f(char c)//由符号判断分析表的列
{
switch(c)
{
case ‘i‘:return 0;break;
case ‘+‘:return 1;break;
case ‘*‘:return 2;break;
case ‘(‘:return 3;break;
case ‘)‘:return 4;break;
case ‘#‘:return 5;break;
case ‘E‘:return 6;break;
case ‘T‘:return 7;break;
case ‘F‘:return 8;break;
}
}
void main()
{
queuewenfa;//输入
stackzhan_s;//栈中的数字--状态
stackzhan_f;//栈中的字符
char ss[10];
char idtf;
int numtsjksym;
cout<<“------>>欢迎使用LR文法<<-------\n“<<“请输入文法串:“;
while(id!=‘#‘)
{
cin>>id;
wenfa.push(id);
}
cout< zhan_s.p
- 上一篇:单像空间后方交会用C语言实现的
- 下一篇:MFC多人聊天室
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(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)
- c++多边形交并差运算
评论
共有 条评论