资源简介
编译原理LL1文法的mfc实现,其中包括对LL1文法的First集合的算法,Follow集合的算法 select集合的算法 还包括消除左递归 提取左因子
代码片段和文件信息
#include “StdAfx.h“
#include “ClassPt.h“
CString Compare(CStringCString);
void ClassPt::Empty()
{
int i;
Count=0;
NewNonTerminator=‘A‘;
for(i=0;i<50;i++)
{
pleft[i].Empty();
pright[i].Empty();
priority[i]=9; //优先级设置为最大,用于文法排序
}
}
bool ClassPt::RecordDel(CString leftCString right)
{
int ij;
for(i=0;i {
if(left==pleft[i] && right==pright[i])
{
for(j=i;j {
pleft[j]=pleft[j+1];
pright[j]=pright[j+1];
}
pleft[j].Empty();
pright[j].Empty();
priority[j]=9;
Count--;
return(true);
}
}
return(false);
}
int ClassPt::RecordDel(CString left)
{
int ij;
int num=0;
for(i=0;i {
if(left==pleft[i])
{
for(j=i;j {
pleft[j]=pleft[j+1];
pright[j]=pright[j+1];
}
pleft[j].Empty();
pright[j].Empty();
priority[j]=9;
Count--;
i--;
num++;
}
}
return(num);
}
bool ClassPt::RecordFind(CString left)
{
int i;
for(i=0;i {
if(left==pleft[i])
return(true);
}
return(false);
}
void ClassPt::RecordApp(CString leftCString right)
{
pleft[Count]=left;
pright[Count]=right;
Count++;
}
void ClassPt::GetInVn(CString str) //录入原始非终结符集
{
Vn.Empty();
Vn=str;
}
void ClassPt::GetInVnPrimal(CString str)
{
VnPrimal.Empty();
VnPrimal=str;
}
CString ClassPt::GetNewVn() //得到ClassPt类的所有非终结符集
{
int i;
CString Vnn;
// Vn.Empty();
Vnn.Empty();
for(i=0;i {
if(VnPrimal.Find(pleft[i][0])!=-1 && Vnn.Find(pleft[i][0])==-1)
Vnn+=pleft[i][0];
}
for(i=0;i {
if(Vnn.Find(pleft[i][0])==-1)
Vnn+=pleft[i][0];
}
Vn=Vnn;
return(Vn);
}
void ClassPt::SetStarter() //设置文法开始符号
{
Starter=pleft[0][0];
}
void ClassPt::GetNewNonTerminator() //得到一个新的非终结符
{
GetNewVn();
while(Vn.Find(NewNonTerminator)!=-1)
NewNonTerminator++;
Vn+=NewNonTerminator;
}
void ClassPt::RemoveDirectLeftRecursion(CString left) //消除直接左递归
{
int i;
GetNewNonTerminator();
for(i=0;i {
if(pleft[i]==left)
{
if(pright[i][0]==left)
{
pleft[i]=NewNonTerminator;
pright[i].Delete(01);
pright[i]+=NewNonTerminator;
}
else
{
pright[i]+=NewNonTerminator;
}
}
}
RecordApp(NewNonTerminator“ε“);
}
void ClassPt::InsteadOf(CString ToInsteadCString BeInstead)
{
int ijjmax;
CString buffer[10];
CString BufferLeftBufferRight;
CString leftright;
for(i=0;i<10;i++)
buffer[i].Empty();
j=0;
for(i=0;i {
if(pleft[i]==ToInstead)
{
buffer[j]=pright[i];
if(buffer[j]==“ε“)
buffer[j].Empty();
j++;
}
}
jmax=j;
for(i=0;i {
if(pleft[i]==BeInstead && pright[i][0]==ToInstead)
{
BufferLeft=pleft[i];
BufferRight=pright[i];
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 188928 2008-06-19 23:12 J\LL(1)文法分析.ppt
文件 7175 2006-04-21 09:25 J\LL1文法\ClassPt.cpp
文件 1559 2006-05-28 13:16 J\LL1文法\ClassPt.h
文件 580 2006-04-19 21:00 J\LL1文法\CStack.cpp
文件 262 2006-05-28 13:16 J\LL1文法\CStack.h
文件 51315 2008-06-16 15:09 J\LL1文法\Debug\ClassPt.obj
文件 0 2008-06-19 09:37 J\LL1文法\Debug\ClassPt.sbr
文件 18560 2008-06-16 15:09 J\LL1文法\Debug\CStack.obj
文件 0 2008-06-19 09:37 J\LL1文法\Debug\CStack.sbr
文件 4236288 2008-06-19 16:29 J\LL1文法\Debug\LL1文法.bsc
文件 159860 2011-06-30 16:06 J\LL1文法\Debug\LL1文法.exe
文件 290792 2011-06-30 16:06 J\LL1文法\Debug\LL1文法.ilk
文件 31056 2008-06-16 15:09 J\LL1文法\Debug\LL1文法.obj
文件 7235728 2008-06-16 15:09 J\LL1文法\Debug\LL1文法.pch
文件 492544 2011-06-30 16:06 J\LL1文法\Debug\LL1文法.pdb
文件 4348 2011-06-30 14:41 J\LL1文法\Debug\LL1文法.res
文件 0 2008-06-19 09:37 J\LL1文法\Debug\LL1文法.sbr
文件 143681 2011-06-30 16:06 J\LL1文法\Debug\LL1文法Dlg.obj
文件 225501 2011-06-30 16:06 J\LL1文法\Debug\LL1文法Dlg.sbr
文件 105877 2008-06-16 15:09 J\LL1文法\Debug\StdAfx.obj
文件 1374952 2008-06-16 15:09 J\LL1文法\Debug\StdAfx.sbr
文件 320512 2011-06-30 19:17 J\LL1文法\Debug\vc60.idb
文件 438272 2011-06-30 16:06 J\LL1文法\Debug\vc60.pdb
文件 23244 2011-06-30 18:40 J\LL1文法\LL1文法.APS
文件 2023 2011-06-30 19:20 J\LL1文法\LL1文法.clw
文件 2033 2006-05-28 14:07 J\LL1文法\LL1文法.cpp
文件 4645 2008-06-18 11:15 J\LL1文法\LL1文法.dsp
文件 539 2006-04-07 22:25 J\LL1文法\LL1文法.dsw
文件 1303 2006-04-07 22:19 J\LL1文法\LL1文法.h
文件 107520 2011-06-30 19:20 J\LL1文法\LL1文法.ncb
............此处省略25个文件信息
- 上一篇:用C++ 实现 防火墙 源代码
- 下一篇:地震数据SEGY格式的读写 C++
相关资源
- 服务端和客户端(MFC CSocket)
- 文件覆盖确认工具MFC/VC++源代码
- MFC垃圾清理器V2.0
- 简易QQ mfc实现源码(学习使用的简单
- FTP客户端与服务器的MFC实现
- 基于UDP协议的聊天程序 MFC环境下的
- MFC简单邮件收发系统
- 生产者消费者问题源码-MFC实现-进程模
- MFC电子邮箱
- MFC写的学生宿舍管理系统
- MFC网络聊天工具
- 基于MFC实现的远程视频监控系统源代
- 完整版扫雷游戏
- VC实现录音实时显示波形
- 计算机图形学大作业参考代码(VC版)
- 获取屏幕上鼠标的位置坐标及其RGB颜
- 《Visual C++ MFC棋牌类游戏编程》的源代
- 计算器MFC+VC++
- dota连连看MFC源码
- 学生管理系统 mfc 数据库 c++
- C++ MFC 餐厅点菜管理系统
- skin界面库资源.rar
- mfc实现八皇后问题
- (VC)MFC Skinsharp换肤套装(lib+dll+h+编
- MFC邮件收发器 SMTP POP3
- MFC换肤非常方便
- vc++mfc经典数字图像处理程序
- VC/MFC多页浏览器源代码
- mfc配合listbox操作数据库
- 经典 MFC 界面组件库
评论
共有 条评论