资源简介
利用First集,Follow集,预测分析表以及先进后出栈来实现LL(1)文法的分析程序,以及判别某个串是否属于当前文法的范畴,内含c++源代码和实验报告说明

代码片段和文件信息
// AnalysisDlg.cpp : implementation file
//
#include “stdafx.h“
#include “LL1Grammar.h“
#include “AnalysisDlg.h“
#include “PatDlg.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// AnalysisDlg dialog
AnalysisDlg::AnalysisDlg(CWnd* pParent /*=NULL*/)
: CDialog(AnalysisDlg::IDD pParent)
{
//{{AFX_DATA_INIT(AnalysisDlg)
m_sentence = _T(““);
m_starter = _T(““);
//}}AFX_DATA_INIT
}
void AnalysisDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(AnalysisDlg)
DDX_Control(pDX IDC_PRODLIST2 m_prodlist2);
DDX_Control(pDX IDC_ANATABLE m_anatable);
DDX_Text(pDX IDC_SENTENCE m_sentence);
DDX_Text(pDX IDC_STARTER m_starter);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(AnalysisDlg CDialog)
//{{AFX_MSG_MAP(AnalysisDlg)
ON_BN_CLICKED(IDC_ANALYSIS OnAnalysis)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// AnalysisDlg message handlers
BOOL AnalysisDlg::OnInitDialog()
{
CDialog::OnInitDialog();
PatDlg* fatherDlg = ((PatDlg*)GetParent());
LL1Pointer = fatherDlg->LL1Pointer;
this->m_anatable.SetExtendedstyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
this->m_anatable.InsertColumn(0 _T(““)LVCFMT_CENTER 0);
this->m_anatable.InsertColumn(1 _T(“分析栈“)LVCFMT_LEFT 100);
this->m_anatable.InsertColumn(2 _T(“剩余输入串“)LVCFMT_RIGHT 100);
this->m_anatable.InsertColumn(3 _T(“推导所用产生式或匹配“)LVCFMT_CENTER 200);
int ij;
CString temp;
for(i = 0; i < LL1Pointer->VN.size(); i++)
{
for(j = 0; j < LL1Pointer->p[LL1Pointer->VN[i]].size(); j++)
{
temp = ““; temp += LL1Pointer->VN[i]; temp += “→“;
temp += LL1Pointer->p[LL1Pointer->VN[i]][j].c_str();
m_prodlist2.AddString(temp);
}
}
m_starter = LL1Pointer->start;
UpdateData(false);
// m_prodlist.SetExtendedstyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);//设置表格网格以及整行选择
// m_prodlist.InsertColumn(0 _T(“产生式“)LVCFMT_CENTER 200); //插入表格第一列,标题为产生式
return TRUE; // return TRUE unless you set the focus to a control
}
void AnalysisDlg::OnAnalysis() //点击分析句子,开始分析
{
// TODO: Add your control notification handler code here
m_anatable.DeleteAllItems();
UpdateData(true);
if(m_starter.GetLength() != 1 || !LL1Pointer->contain(m_starter[0]))
{
MessageBox(“开始符号不合法,请检查!““错误“ MB_OK | MB_IConstop);
}
else
{
string str;
str = m_sentence.GetBuffer(0);
LL1Pointer->setStarter(m_starter[0]);
LL1Pointer->analysisString(strthis);
}
}
void AnalysisDlg::OnOK()
{
this->OnAnalysis();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 285153 2019-03-23 17:22 LL(1)文法.docx
目录 0 2019-03-23 17:07 LL1Grammar\
文件 2830 2017-12-29 19:43 LL1Grammar\AnalysisDlg.cpp
文件 1373 2017-12-29 19:43 LL1Grammar\AnalysisDlg.h
目录 0 2019-03-23 17:07 LL1Grammar\Debug\
文件 44134 2017-12-29 20:06 LL1Grammar\Debug\AnalysisDlg.obj
文件 210610 2017-12-29 20:06 LL1Grammar\Debug\LL1.obj
文件 176246 2017-12-29 20:06 LL1Grammar\Debug\LL1Grammar.exe
文件 355036 2017-12-29 20:06 LL1Grammar\Debug\LL1Grammar.ilk
文件 31344 2017-12-29 20:06 LL1Grammar\Debug\LL1Grammar.obj
文件 5516248 2017-12-29 20:06 LL1Grammar\Debug\LL1Grammar.pch
文件 467968 2017-12-29 20:06 LL1Grammar\Debug\LL1Grammar.pdb
文件 4096 2017-12-29 20:06 LL1Grammar\Debug\LL1Grammar.res
文件 62490 2017-12-29 20:06 LL1Grammar\Debug\LL1GrammarDlg.obj
文件 38191 2017-12-29 20:06 LL1Grammar\Debug\PatDlg.obj
文件 34413 2017-12-29 20:06 LL1Grammar\Debug\ProductionDlg.obj
文件 86528 2009-09-15 10:29 LL1Grammar\Debug\SkinH.dll
文件 88576 2010-08-15 16:08 LL1Grammar\Debug\SkinHu.dll
文件 106123 2017-12-29 20:06 LL1Grammar\Debug\StdAfx.obj
文件 18765 2009-02-22 16:05 LL1Grammar\Debug\storm.she
文件 271360 2018-01-03 22:31 LL1Grammar\Debug\vc60.idb
文件 471040 2017-12-29 20:06 LL1Grammar\Debug\vc60.pdb
文件 88 2017-11-25 15:44 LL1Grammar\Debug\文法1.txt
文件 65 2017-11-24 19:52 LL1Grammar\Debug\文法2.txt
文件 25 2017-11-27 22:28 LL1Grammar\Debug\文法3.txt
文件 28 2017-11-27 23:25 LL1Grammar\Debug\文法4.txt
文件 18546 2017-12-09 16:05 LL1Grammar\LL1.cpp
文件 2017 2017-11-26 15:43 LL1Grammar\LL1.h
文件 24484 2018-01-03 22:31 LL1Grammar\LL1Grammar.aps
文件 3324 2018-01-03 22:31 LL1Grammar\LL1Grammar.clw
文件 2119 2017-11-24 10:45 LL1Grammar\LL1Grammar.cpp
............此处省略30个文件信息
- 上一篇:MFC音乐播放
- 下一篇:HSV和RGB转化小工具
相关资源
- 编译原理c语言编译器
- 编译原理实验-词法分析(c语言代码)
- 北邮-编译原理-词法分析
- 现代编译原理-C语言描述
- 编译原理实验报告+代码+使用说明
- 编译原理课程设计-C语言子集编译器
- 赋值语句翻译c语言实现四元式
- 编译原理用C++消除左递归
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- 编译原理 LR分析器 c++代码
- 设计并实现TINYC语言的扫描程序TINYC
- LL(1)文法分析全过程(FIRST/FLLOW/S
- 编译原理 LR0项目集规范族的构造 L
- 山东大学编译原理实验源代码c++版
- 简单函数绘图语言的解释器
- Lex和Yacc从入门到精通.pdf
- 简易词法分析器——基于C语言
- LL(1)文法的实现-mfc-编译原理学习
- 词法分析代码内有报告
- 编译原理LL1文法的mfc实现含消除左递
- 编译原理词法分析实验
- pl/0语言的编译器
- C++实现编译原理自动机、LL1文法、及
- 编译原理语义分析程序 c++实现
- 编译原理 课程设计 DAG 报告+源码C++版
- 编译原理课程设计----语法分析器(
- 编译原理简单的编译器源码
- C语言实现一个编译器-编译原理南开大
- 编译原理课程实验报告词法分析器及
评论
共有 条评论