文档详情

实验三LR分析表语法分析报告.doc

发布:2017-06-05约7.85千字共12页下载文档
文本预览下载声明
学 生 实 验 报 告 (理工类) 课程名称: 编译原理 专业班级: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
显示全部
相似文档