实验三LR分析表语法分析报告.doc
文本预览下载声明
学 生 实 验 报 告
(理工类)
课程名称: 编译原理 专业班级:08计算机科学与技术(单)本
所属院部: 信息技术学院 指导教师: 洪 蕾
20 10 ——20 11 学年 第 二 学期
金陵科技学院教务处制
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。
实验报告书写说明
实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称: LR(1)分析表语法分析 实验学时: 6
同组学生姓名: 无 实验地点: B513
实验日期: 2011.4.7/4.21 实验成绩:
批改教师: 批改时间:
一、实验目的和要求
语法分析主要目的是按照程序语言的语法规则,从由词法分析输出的源程序符号串中识别出各类语法成分,同时进行语法检查,为语义分析和代码生成作准备.语法分析程序在分析过程中检查符号串是否为该程序的句子.若是则输出该句子的分析树,否则就表示源程序存在语法错误,并报告错误的性质与位置.
二、实验仪器和设备
主机一台:有Visual Studio 2005工具
三、实验过程
说明:此程序共有两个类,Lexical进行词法分析,Syntax进行语法分析.对于语法分析,采用LR(1)分析法,判断程序是否满足规定的结构.
1:LR-table.txt:存放分析表,其中正数表示移进,负数表示归约,100表示接受状态,0表示不操作。
2:grammar.txt 存放文法开始符号
3:lengh.txt 存放产生式右部字符长度
4:inpur.txt 输入的程序
语法规则:
定义的文法,如下:
Z---(E
E---(E+T
E----T
T---(T*F
T---(F
F---({E}
F---(i
根据上面文法画出的分层有限自动机并根据分层自动机构造的LR(1)分析表:
+ * ( ) I # E T F 0 S4 S5 1 2 3 1 S6 Acc 2 R2 S7 R2 R2 3 R4 R4 R4 R4 4 S4 S5 8 2 3 5 R6 R6 R6 R6 6 S4 S5 9 3 7 S4 S5 10 8 S6 S11 9 R1 S7 R1 R1 10 R3 R3 R3 R3 11 R5 R5 R5 R5 语法分析的核心代码和注释如下:
using System;
using System.Text;
using System.IO;
namespace Syntax_Analyzer
{
class Syntax
{
StreamReader myStreamReader;
int t;
int[] lengh;
int l =0;
string[] grammar;
int s=0;
string[] Word;
int w=0;
int[] wordNum ;
int n =0;
int[,] LR;
public Syntax()
{
lengh = new int[7];
grammar=new string[7];
Word=new string[100];
wordNum = new int[100];
LR=new int[30,30];
}
public void analyzer()
{
//读入grammar
Sy
显示全部