• 大小: 3.1MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-11
  • 语言: C/C++
  • 标签: 编译原理  

资源简介

利用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个文件信息

评论

共有 条评论