资源简介
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个文件信息
相关资源
- 1fporp.rar
- 2015年逻辑控制赛项思路分析.pdf
- Bilibili竞对分析20200508.pdf
- 多元统计分析程序.rar
- tuosanqian1575_10300922.zip
- MIKEZERO2014_.rar
- zw_hello3222-8745847-语义分析及中间代码
- kay-仓库管理系统.zip
- 梯控数据分析.rar
- exapowerflow5.3c特别版(附破解教程破解
- Y---腾讯大牛亲授Web前后端漏洞分析与
- ofdmproj_win.rar
- 从零进阶!数据分析的统计基础.txt
- 电子负载.rar
- 谷歌.zip
- 康拓系统分析(1).rar
- 孵化环境温湿度监控系统设计.rar
- 密码科技全加密破解.rar
- 实验三TCP和UDP协议分析.docx
- 湖北省计算机类专业人才培养合作联
- 考研数学公式-电脑桌面1.zip
- 计算机图形学期末试卷2套及详细答案
- experiment1.zip
- 基于BBS的智能舆情分析系统.docx
- 答题卡单张试卷识别,GUI.zip
- 基于GSM短信模块的家庭防盗报警系统
- 温度上下限报警.rar
- imagefusion13.zip
- 可行性分析与需求分析
- IF-ELSE条件语句的翻译程序设计简单优
评论
共有 条评论