資源簡(jiǎn)介
LR(0)文法分析器(LR (0) grammar parser)對(duì)于實(shí)現(xiàn)整個(gè)編譯器而言,語(yǔ)法分析器是整個(gè)過(guò)程的核心部分,同時(shí)對(duì)構(gòu)造整個(gè)編譯器起到了關(guān)鍵作用,對(duì)程序的進(jìn)一步擴(kuò)展,以后有機(jī)會(huì)涉及對(duì)編譯器的編寫而言,將會(huì)是很容易便上手,當(dāng)然,對(duì)于復(fù)雜的文法,復(fù)雜的語(yǔ)言而言,需要對(duì)文法的識(shí)別進(jìn)一步擴(kuò)展

代碼片段和文件信息
//?AnalyzeDlg.cpp?:?implementation?file
//
#include?“stdafx.h“
#include?“LR0ForWin.h“
#include?“AnalyzeDlg.h“
#include?
#include?
#include?“Pair.h“
using?namespace?std;
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//?CAnalyzeDlg?dialog
CAnalyzeDlg::CAnalyzeDlg(CWnd*?pParent?/*=NULL*/)//分析句子窗口
:?CResizingDialog(CAnalyzeDlg::IDD?pParent)
{
//{{AFX_DATA_INIT(CAnalyzeDlg)
m_input?=?_T(““);
//}}AFX_DATA_INIT
m_strTempFilename?=?““;
m_pTree?=?new?CTreeDlg;
m_pTree->Create(IDD_DIALOG3?this);
m_pTree->SetControlInfo(IDC_TREE1?RESIZE_BOTH);
m_pTree->SetControlInfo(IDOK?ANCHORE_BOTTOM?|?ANCHORE_RIGHT);
}
CAnalyzeDlg::~CAnalyzeDlg()
{
m_pTree->DestroyWindow();
delete?m_pTree;
}
void?CAnalyzeDlg::DoDataExchange(CDataExchange*?pDX)
{
CResizingDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAnalyzeDlg)
DDX_Control(pDX?IDC_EDIT1?m_edit1);
DDX_Control(pDX?IDC_EXPLORER1?m_web);
DDX_Text(pDX?IDC_EDIT1?m_input);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAnalyzeDlg?CResizingDialog)
//{{AFX_MSG_MAP(CAnalyzeDlg)
ON_BN_CLICKED(IDC_BUTTON1?OnButton1)
ON_BN_CLICKED(IDC_BUTTON2?OnButton2)
ON_WM_ACTIVATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//?CAnalyzeDlg?message?handlers
void?CAnalyzeDlg::OnOK()?
{
//?TODO:?Add?extra?validation?here
//CDialog::OnOK();
}
void?CAnalyzeDlg::OnCancel()//分析句子的關(guān)閉按鈕
{
//?TODO:?Add?extra?cleanup?here
if?(m_strTempFilename?!=?““)
DeleteFile(m_strTempFilename.c_str());
CResizingDialog::OnCancel();
}
void?CAnalyzeDlg::OnButton1()?//分析句子的分析按鈕
{
//?TODO:?Add?your?control?notification?handler?code?here
UpdateData(TRUE);
m_pTree->m_tree.DeleteAllItems();
for(int?i?=?0;?i? {
if?(!m_g.IsInVt(m_input.GetAt(i)))
{
MessageBox(“輸入的句子不全部由終結(jié)符組成“?“錯(cuò)誤“?MB_OK?|?MB_IConstop);
return;
}
}
assert(TreeStack.empty());
m_input?+=?“#“;
char?szTempPath[MAX_PATH];?
char?szTempName[MAX_PATH];?
if?(m_strTempFilename?!=?““)
::DeleteFile(m_strTempFilename.c_str());
::GetTempPath(100szTempPath);
::GetTempFileName(szTempPath“LR0“0szTempName);
m_strTempFilename?=?szTempName;
CStdioFile?out;
out.Open(szTempName?CFile::modeCreate?|?CFile::modeWrite);
out.WriteString(“\n“);//寫表
out.WriteString(“\n“);
out.WriteString(“tle>Untitled?Document tle>\n“);
out.WriteString(“ta?http-equiv=\“Content-Type\“?content=\“text/html;?charset=gb2312\“>\n“);
out.WriteString(“\n“);
out.WriteString(“\n“);
out.WriteString(“yle=\“border-collapse:?collapse\“?bordercolor=\“#111111\“>\n“);
out.WriteString(“\n 步驟&
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????121??2002-05-24?00:50??Copy?of?LR0ForWin\1.txt
?????文件????????115??2002-05-24?16:12??Copy?of?LR0ForWin\2.txt
?????文件?????????98??2002-05-26?23:24??Copy?of?LR0ForWin\3.txt
?????文件????????123??2002-05-26?22:38??Copy?of?LR0ForWin\4.txt
?????文件????????155??2002-05-26?23:35??Copy?of?LR0ForWin\5.txt
?????文件???????8490??2010-01-01?21:12??Copy?of?LR0ForWin\AnalyzeDlg.cpp
?????文件???????1917??2002-05-25?00:57??Copy?of?LR0ForWin\AnalyzeDlg.h
?????文件?????166772??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\AnalyzeDlg.obj
?????文件??????????0??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\AnalyzeDlg.sbr
?????文件??????64038??2009-12-23?12:11??Copy?of?LR0ForWin\Debug\explorer.obj
?????文件??????????0??2009-12-23?12:11??Copy?of?LR0ForWin\Debug\explorer.sbr
?????文件???????3609??2009-12-23?12:11??Copy?of?LR0ForWin\Debug\GoData.obj
?????文件??????????0??2009-12-23?12:11??Copy?of?LR0ForWin\Debug\GoData.sbr
?????文件?????186803??2010-01-05?21:17??Copy?of?LR0ForWin\Debug\Grammar.obj
?????文件??????????0??2010-01-05?21:17??Copy?of?LR0ForWin\Debug\Grammar.sbr
?????文件????3859456??2010-01-05?21:18??Copy?of?LR0ForWin\Debug\LR0ForWin.bsc
?????文件?????233605??2010-01-05?21:18??Copy?of?LR0ForWin\Debug\LR0ForWin.exe
?????文件?????757932??2010-01-05?21:18??Copy?of?LR0ForWin\Debug\LR0ForWin.ilk
?????文件??????15940??2010-01-04?23:32??Copy?of?LR0ForWin\Debug\LR0ForWin.obj
?????文件????6870840??2009-12-23?12:11??Copy?of?LR0ForWin\Debug\LR0ForWin.pch
?????文件?????852992??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\LR0ForWin.pdb
?????文件???????4720??2010-01-01?10:54??Copy?of?LR0ForWin\Debug\LR0ForWin.res
?????文件??????????0??2010-01-04?23:32??Copy?of?LR0ForWin\Debug\LR0ForWin.sbr
?????文件??????69902??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\LR0ForWinDlg.obj
?????文件??????????0??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\LR0ForWinDlg.sbr
?????文件???????4222??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\Pair.obj
?????文件??????????0??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\Pair.sbr
?????文件??????17884??2010-01-01?23:17??Copy?of?LR0ForWin\Debug\Precept.obj
?????文件??????????0??2010-01-01?23:17??Copy?of?LR0ForWin\Debug\Precept.sbr
?????文件??????46921??2010-01-01?23:53??Copy?of?LR0ForWin\Debug\ProjectSet.obj
............此處省略58個(gè)文件信息
評(píng)論
共有 條評(píng)論
相關(guān)資源
-
編譯原理實(shí)驗(yàn)工具及參考源碼(lex&
-
類pascal語(yǔ)言編譯器(編譯原理實(shí)驗(yàn))
-
編譯原理課程設(shè)計(jì):詞法語(yǔ)法編譯器
-
中科院 編譯原理 習(xí)題及解答
-
編譯原理四元式和逆波蘭式
-
《編譯原理》清華大學(xué)版中的pl0擴(kuò)充
-
PL/0功能擴(kuò)充break功能
-
編譯原理LR(0)語(yǔ)法分析
-
編譯原理中間代碼生成程序
-
編譯原理:LR分析程序
-
編譯原理實(shí)驗(yàn):詞法分析,語(yǔ)法分析
-
吉林大學(xué)編譯原理課件
-
編譯原理龍書答案
-
編譯原理 第三章課后習(xí)題答案
-
易語(yǔ)言變量和數(shù)組的編譯原理
-
編譯原理語(yǔ)法分析器、詞法分析器
-
山東大學(xué)編譯原理PL/0語(yǔ)言 compiler實(shí)驗(yàn)
-
FOR循環(huán)語(yǔ)句的翻譯程序設(shè)計(jì)簡(jiǎn)單優(yōu)先
-
NFA的確定化NFA->DFA完整可運(yùn)行代碼
-
哈工大威海編譯原理實(shí)驗(yàn)報(bào)告和源代
-
哈工大威海-編譯原理實(shí)驗(yàn)報(bào)告和源碼
-
編譯原理課設(shè)c編譯器
-
賦值語(yǔ)句翻譯四元式
-
河北工業(yè)大學(xué)編譯原理實(shí)驗(yàn)代碼及實(shí)
-
編譯原理課程設(shè)計(jì) while do循環(huán)語(yǔ)句翻
-
編譯原理課程設(shè)計(jì)do——while簡(jiǎn)單優(yōu)先
-
南開大學(xué)編譯原理課件及作業(yè)
-
華工往年編譯原理試卷
-
編譯原理課程設(shè)計(jì)for循環(huán)LR法三元式
-
哈工程-編譯原理課程設(shè)計(jì)(2016級(jí))