华北水利水电学院 编译原理 实验报告
2010~2011学年 第 二 学期 xxxx 级 计算机 专业
班级: xxxxx 学号: xxxxx 姓名: xxx
一、实验目的
通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法.
二、实验要求
⑴ 选择最有代表性的语法分析方法,如LL(1)分析法、算符优先法或LR分析法
⑵ 选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。
⑶ 实****时间为6小时。
三、实验内容
选题1:使用预测分析法(LL(1)分析法)实现语法分析:
(1)根据给定文法,先求出first集合、follow集合和select集合,构造预测分析表(要求预测分析表输出到屏幕或者输出到文件);
(2)根据算法和预测分析表分析给定表达式是否是该文法识别的正确的算术表达式(要求输出归约过程)
(3)给定表达式文法为:
G(E): S→TE
E→+TE |
T→FK
K→*FK |
F→(S)|i
(4)分析的句子为:
(i+i)*i和i+i)*i
四、程序源代码
#include ”stdafx。h”
#include ”SyntaxAnalysis.h”
#include ”SyntaxAnalysisDlg。h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_ char THIS_FILE[] = __FILE__;
#endif
///////////////////////////////////////////// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
ﻩCAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
ﻩenum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
ﻩ// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
ﻩ//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
ﻩ//{{AFX_DATA_INIT(CAboutDlg)
ﻩ//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
ﻩ//{{AFX_DATA_MAP(CAboutDlg)
ﻩ//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
ﻩ//{{AFX_MSG_MAP(CAboutDlg)
ﻩ// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// CSyntaxAnalysisDlg dialog
CSyntaxAnalysisDlg::CSyntaxAnalysisDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSyntaxAnalysisDlg::IDD, pParent)
{
ﻩ//{{AFX_DATA_INIT(CSyntaxAnalysisDlg)
ﻩm_strCode = _T(””);
m_strResult = _T("");
ﻩ//}}AFX_DATA_INIT
ﻩ// Note that LoadIcon does not require a s
编译原理语法分析实验二 来自淘豆网www.taodocs.com转载请标明出处.