资源简介
43t9sb.rar

代码片段和文件信息
// LR1.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
//#include “CharStack.h“
#include “MidCode.h“
#include “IntStack.h“
#include
struct BNFNODE // 产生式节点
{
char Left; // 产生式左部
char Right[MAX_DATA_LEN]; // 产生式右部
char RLen; // 产生式右边长度
} m_Bnf[MAX_DATA_LEN];
int m_nBnfLen;
int m_nTempCount; // 生成临时变量记录
enum ACTIONTYPE // 动作类别
{
Push // 移进
Sumup // 规约
Accept // 接受
Error // 出错
};
struct LR1TABLE
{
int nStatus; // 状态
char CurChar; // 当前符号
ACTIONTYPE ActionType; // 动作类别
int nNextStatus; // 下一状态
} m_Lr1[MAX_DATA_LEN];
int m_nLr1Len;
/*****************************************************
* 以下是词法分析文件操作
******************************************************/
// 清空链表
void ClearWords(WORDNODE *pHeader)
{
WORDNODE *pNode;
while (pHeader != NULL)
{
pNode = pHeader->pNext;
free(pHeader);
pHeader = pNode;
}
}
// 增加结点
WORDNODE* AddNode(char c[] WORDNODE *pTail)
{
// c第0个字节为单词类别,第1个为逗号,第2个以后是值
WORDNODE *pNode = (WORDNODE *)malloc(sizeof(WORDNODE));
pNode->byType = c[0] - ‘0‘;
pNode->pNext = NULL;
int nChars = MAX_DATA_LEN - 2;
memcpy(pNode->Value &c[2] nChars);
pTail->pNext = pNode;
return pNode;
}
bool ReadWords(char FileName[] WORDNODE *pHeader)
{
// 打开文件
FILE *f = fopen(FileName “r“);
if (f == NULL)
{
ClearWords(pHeader);
return false;
}
WORDNODE *pTail = pHeader;
char c[MAX_DATA_LEN];
// 读取数据
while (!feof(f))
{
fscanf(f “%s\n“ c);
pTail = AddNode(c pTail);
printf(“%s\n“ c);
}
// 关闭文件
fclose(f);
// 增加一个结束符
c[0] = WT_OPERATOR + ‘0‘;
c[1] = ‘‘;
c[2] = ‘#‘;
c[3] = ‘\0‘;
AddNode(c pTail);
return true;
}
/*****************************************************
* 以下是文法文件操作
******************************************************/
char *ReadFile(char FileName[] int *nLen)
{
// 打开文件
FILE *f = fopen(FileName “r“);
if (f == NULL)
return NULL;
// 读取文件
char *pChar = (char *)malloc(sizeof(char) * MAX_DATA_LEN);
// 读取数据
int nRead;
*nLen = 0;
while (!feof(f))
{
nRead = fread(pChar + *nLen sizeof(char) MAX_DATA_LEN f);
*nLen += nRead;
if (nRead < MAX_DATA_LEN) // 文件结尾
break;
pChar = (char *)realloc(pChar *nLen + sizeof(char) * MAX_DATA_LEN);
}
// 关闭文件
fclose(f);
return pChar;
}
bool ReadBnfs()
{
// 读取文件
int nLen;
char *pChar = ReadFile(“Bnf.txt“ &nLen);
if (pChar == NULL)
return false;
// 解析出文法产生式
int nBegin nCur nIndex = 0;
for (nBegin = 0 nCur = 0; nCur < nLen; nCur++)
{
// 左部
m_Bnf[nIndex].Left = pChar[nCur];
// 右部
nCur += 2;
nBegin = nCur;
for (; pChar[nCur] != ‘;‘; nCur++);
m_Bnf[nIndex].RLen = nCur - nBegin;
memcpy(m_Bnf[nIndex].Right pChar + nBegin m_Bnf[nIndex].RLen);
m_Bnf[nIndex].Right[m_Bnf[nIndex].RLen] = ‘\0‘;
nIndex++;
}
m_nBnfLen = nIndex;
return true;
}
/***********
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 47 2005-11-15 23:29 实验材料\实验用源码\a.txt
文件 27 2005-11-17 23:04 实验材料\实验用源码\b.txt
文件 34 2005-12-10 18:52 实验材料\实验用源码\Bnf.txt
文件 25 2005-11-17 23:05 实验材料\实验用源码\c.txt
文件 974 2005-12-10 19:10 实验材料\实验用源码\CharStack.h
文件 30 2005-11-17 23:08 实验材料\实验用源码\d.txt
文件 471 2005-11-17 19:36 实验材料\实验用源码\IntStack.h
文件 7001 2005-12-10 21:35 实验材料\实验用源码\LR1.cpp
文件 4683 2005-12-10 19:41 实验材料\实验用源码\LR1.dsp
文件 531 2005-11-15 21:28 实验材料\实验用源码\LR1.dsw
文件 543 2005-12-10 18:39 实验材料\实验用源码\lr1.lr1
文件 53760 2008-11-25 21:39 实验材料\实验用源码\LR1.opt
文件 0 2008-11-25 21:38 实验材料\实验用源码\LR1.plg
文件 1205 2005-12-10 20:44 实验材料\实验用源码\MidCode.h
文件 1190 2005-11-15 21:28 实验材料\实验用源码\ReadMe.txt
文件 290 2005-11-15 21:28 实验材料\实验用源码\StdAfx.cpp
文件 769 2005-11-15 21:28 实验材料\实验用源码\StdAfx.h
目录 0 2008-11-25 21:39 实验材料\实验用源码
文件 47 2005-11-15 23:29 实验材料\语法制导翻译——自己检查用\a.txt
文件 27 2005-11-17 23:04 实验材料\语法制导翻译——自己检查用\b.txt
文件 34 2005-12-10 18:52 实验材料\语法制导翻译——自己检查用\Bnf.txt
文件 25 2005-11-17 23:05 实验材料\语法制导翻译——自己检查用\c.txt
文件 30 2005-11-17 23:08 实验材料\语法制导翻译——自己检查用\d.txt
文件 40960 2005-12-10 21:29 实验材料\语法制导翻译——自己检查用\LR1.exe
文件 543 2005-12-10 18:39 实验材料\语法制导翻译——自己检查用\lr1.lr1
目录 0 2008-10-09 20:50 实验材料\语法制导翻译——自己检查用
目录 0 2008-10-09 20:50 实验材料
文件 68608 2007-04-14 01:39 中间代码生成实验指导.doc
----------- --------- ---------- ----- ----
181854 28
............此处省略1个文件信息
相关资源
- PID_AutoTune_v0.rar
- vspd7.2.308.zip
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
评论
共有 条评论