資源簡介
利用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?VN.size();?i++)
{
for(j?=?0;?j?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轉化小工具
評論
共有 條評論