资源简介
利用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语言描述-高清-完整目
- TINY扩充语言的语法分析(实现 while、
- 编译原理课程设计词法语法分析器
- 编译原理课程设计整个项目和报告
- 编译原理LL1语法分析器C++版源代码
- 编译原理之算符优先算法-迭代法
- 编译原理词法分析器实验报告含源代
- 编译原理词法分析器C++版源代码
- 现代编译原理-c语言描述虎书
- 合工大编译原理实验报告
- LL1文法消除左递归编译原理mfc实现完
- 南邮编译原理实验
- 编译原理及实践
- 编译原理LL(0)C语言小子集源代码
- 第四次上机作业 语法分析2
- PLO编译器的扩展编译原理课程实践
- 编译原理课程设计C编写的C-编译器
- 编译原理课程设计LR(0)语法分析器
- 西电编译原理大作业 C语言版
- 编译原理 简单函数绘图语言的解释器
- 编译原理之语义分析
- 编译原理 词法分析器
- 编译原理综合性实验 选择部分C语言的
- 编译器前两步
- 编译原理实验语法分析器
- 哈工大编译原理编译器C++
- PL/0语法分析程序
- 编译原理课程设计简单优先文法判定
- cminus语法分析器源代码完整版
- 编译原理--语法分析 实验 C++版
评论
共有 条评论