当前位置:文档之家› 实验一_文法分析方法及其应用 (1)

实验一_文法分析方法及其应用 (1)

实验一_文法分析方法及其应用 (1)
实验一_文法分析方法及其应用 (1)

深圳大学实验报告

课程名称:编译原理

实验项目名称:文法分析方法及其应用

学院:计算机与软件学院

专业:软件工程

指导教师:陈飞

报告人: 学号: 班级:

实验时间:2015年10月12日至2015年11月9日实验报告提交时间:

教务处制

材料分析方法实验报告

篇一:材料分析方法实验报告 篇二:材料分析方法课程设计报告 材料分析测试方法 课程设计(论文) 题目:磁控溅射c/w多层膜成分及微观分析 学院材料科学与工程 专业材料化学 班级材化082 学生王维娜 学号 3080101296 指导教师陈迪春 起止时间 2010.12.27-2011.1.1 年 材料分析测试方法课程设计任务书 课程设计内容要求: 掌握高分辨透射电子显微镜样品制备方法,学习并了解真空镀膜 技术-磁控溅射技术,多层膜制备过程,以及其微观结构分析,成分 分析所用仪器和原理。 学生(签名) 月日 材料分析测试方法课程设计评语 指导教师(签名) 年日 目录 材料分析测试方法 ............................................................................. .. (1) 1.1 磁控溅射 ............................................................................. (5) 1.2 x射线衍射仪 ............................................................................. . (5) 1.3 透射电子显微镜 ............................................................................. (6) 1.4 x射线光电子能谱仪(xps) ........................................................................ (7) 第二章实验方法 ............................................................................. .. (9) 2.1 tem样品的制备方法 .............................................................................

材料现代分析方法练习题及答案

8. 什么是弱束暗场像?与中心暗场像有何不同?试用Ewald图解说明。 答:弱束暗场像是通过入射束倾斜,使偏离布拉格条件较远的一个衍射束通过物镜光阑,透射束和其他衍射束都被挡掉,利用透过物镜光阑的强度较弱的衍射束成像。 与中心暗场像不同的是,中心暗场像是在双光束的条件下用的成像条件成像,即除直射束外只有一个强的衍射束,而弱束暗场像是在双光阑条件下的g/3g的成像条件成像,采用很大的偏离参量s。中心暗场像的成像衍射束严格满足布拉格条件,衍射强度较强,而弱束暗场像利用偏离布拉格条件较远的衍射束成像,衍射束强度很弱。采用弱束暗场像,完整区域的衍射束强度极弱,而在缺陷附近的极小区域内发生较强的反射,形成高分辨率的缺陷图像。图:PPT透射电子显微技术1页 10. 透射电子显微成像中,层错、反相畴界、畴界、孪晶界、晶界等衍衬像有何异同?用什么办法及根据什么特征才能将它们区分开来? 答:由于层错区域衍射波振幅一般与无层错区域衍射波振幅不同,则层错区和与相邻区域形成了不同的衬度,相应地出现均匀的亮线和暗线,由于层错两侧的区域晶体结构和位相相同,故所有亮线和暗线的衬度分别相同。层错衍衬像表现为平行于层错面迹线的明暗相间的等间距条纹。 孪晶界和晶界两侧的晶体由于位向不同,或者还由于点阵类型不同,一边的晶体处于双光束条件时,另一边的衍射条件不可能是完全相同的,也可能是处于无强衍射的情况,就相当于出现等厚条纹,所以他们的衍衬像都是间距不等的明暗相间的条纹,不同的是孪晶界是一条直线,而晶界不是直线。 反相畴界的衍衬像是曲折的带状条纹将晶粒分隔成许多形状不规则的小区域。 层错条纹平行线直线间距相等 反相畴界非平行线非直线间距不等 孪晶界条纹平行线直线间距不等 晶界条纹平行线非直线间距不等 11.什么是透射电子显微像中的质厚衬度、衍射衬度和相位衬度。形成衍射衬度像和相位衬度像时,物镜在聚焦方面有何不同?为什么? 答:质厚衬度:入射电子透过非晶样品时,由于样品不同微区间存在原子序数或厚度的差异,导致透过不同区域落在像平面上的电子数不同,对应各个区域的图像的明暗不同,形成的衬度。 衍射衬度:由于样品中的不同晶体或同一晶体中不同部位的位向差异导致产生衍射程度不同而形成各区域图像亮度的差异,形成的衬度。 相位衬度:电子束透过样品,试样中原子核和核外电子产生的库伦场导致电子波的相位发生变化,样品中不同微区对相位变化作用不同,把相应的相位的变化情况转变为相衬度,称为相位衬度。 物镜聚焦方面的不同:透射电子束和至少一个衍射束同时通过物镜光阑成像时,透射束和衍射束相互干涉形成反应晶体点阵周期的条纹成像或点阵像或结构物象,这种相位衬度图像的形成是透射束和衍射束相干的结果,而衍射衬度成像只用透射束或者衍射束成像。

编译原理实验报告《LL(1)语法分析器构造》

《LL(1)分析器的构造》实验报告 一、实验名称 LL(1)分析器的构造 二、实验目的 设计、编制、调试一个LL(1)语法分析器,利用语法分析器对符号串的识别,加深对语法分析原理的理解。 三、实验内容和要求 设计并实现一个LL(1)语法分析器,实现对算术文法: G[E]:E->E+T|T T->T*F|F F->(E)|i 所定义的符号串进行识别,例如符号串i+i*i为文法所定义的句子,符号串ii+++*i+不是文法所定义的句子。 实验要求: 1、检测左递归,如果有则进行消除; 2、求解FIRST集和FOLLOW集; 3、构建LL(1)分析表; 4、构建LL分析程序,对于用户输入的句子,能够利用所构造的分析程序进行分析,并显示出分析过程。 四、主要仪器设备 硬件:微型计算机。 软件: Code blocks(也可以是其它集成开发环境)。 五、实验过程描述 1、程序主要框架 程序中编写了以下函数,各个函数实现的作用如下: void input_grammer(string *G);//输入文法G

//将文法G预处理得到产生式集合P,非终结符、终结符集合U、u, int eliminate_1(string *G,string *P,string U,string *GG);//消除文法G中所有直接左递归得到文法GG int* ifempty(string* P,string U,int k,int n);//判断各非终结符是否能推导为空 string* FIRST_X(string* P,string U,string u,int* empty,int k,int n);求所有非终结符的FIRST集 string FIRST(string U,string u,string* first,string s);//求符号串s=X1X2...Xn的FIRST集 string** create_table(string *P,string U,string u,int n,int t,int k,string* first);//构造分析表 void analyse(string **table,string U,string u,int t,string s);//分析符号串s 2、编写的源程序 #include #include #include using namespace std; void input_grammer(string *G)//输入文法G,n个非终结符 { int i=0;//计数 char ch='y'; while(ch=='y'){ cin>>G[i++]; cout<<"继续输入?(y/n)\n"; cin>>ch; } } void preprocess(string *G,string *P,string &U,string &u,int &n,int &t,int &k)//将文法G预处理产生式集合P,非终结符、终结符集合U、u, { int i,j,r,temp;//计数 char C;//记录规则中()后的符号 int flag;//检测到() n=t=k=0; for( i=0;i<50;i++) P[i]=" ";//字符串如果不初始化,在使用P[i][j]=a时将不能改变,可以用P[i].append(1,a) U=u=" ";//字符串如果不初始化,无法使用U[i]=a赋值,可以用U.append(1,a) for(n=0;!G[n].empty();n++) { U[n]=G[n][0]; }//非终结符集合,n为非终结符个数 for(i=0;i

编译原理词法分析器语法分析器实验报告

编译技术 班级网络0802 学号3080610052姓名叶晨舟 指导老师朱玉全2011年 7 月 4 日

一、目的 编译技术是理论与实践并重的课程,而其实验课要综合运用一、二年级所学的多门课程的内容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。 二、任务及要求 基本要求: 1.词法分析器产生下述小语言的单词序列 这个小语言的所有的单词符号,以及它们的种别编码和内部值如下表: 单词符号种别编码助记符内码值 DIM IF DO STOP END 标识符 常数(整)= + * ** , ( )1 2 3 4 5 6 7 8 9 10 11 12 13 14 $DIM $IF $DO $STOP $END $ID $INT $ASSIGN $PLUS $STAR $POWER $COMMA $LPAR $RPAR - - - - - - 内部字符串 标准二进形式 - - - - - - 对于这个小语言,有几点重要的限制: 首先,所有的关键字(如IF﹑WHILE等)都是“保留字”。所谓的保留字的意思是,用户不得使用它们作为自己定义的标示符。例如,下面的写法是绝对禁止的: IF(5)=x 其次,由于把关键字作为保留字,故可以把关键字作为一类特殊标示符来处理。也就是说,对于关键字不专设对应的转换图。但把它们(及其种别编码)预先安排在一张表格中(此表叫作保留字表)。当转换图识别出一个标识符时,就去查对这张表,确定它是否为一个关键字。 再次,如果关键字、标识符和常数之间没有确定的运算符或界符作间隔,则必须至少用一个空白符作间隔(此时,空白符不再是完全没有意义的了)。例如,一个条件语句应写为

材料现代分析方法实验指导书

实验一:显微镜的操作与金相组织观察 一、实验目的: 1. 了解掌握普通光学金相显微镜基本原理。 2. 掌握普通光学金相显微镜基本操作。 3. 分辨已制备好的标准试祥组织。 二、实验设备及材料: 1. 台式金相显微镜; 2. 已制备好的标准试祥。 三、实验内容: 1. 掌握金相显微镜的使用方法。 2. 观察标准试样的组织,调整粗调及微调手轮,掌握显微镜的聚焦方法 3. 分别调整视场光栏和孔径光栏,观察其对显微镜分辨率的影响规律。 4. 调整物镜与目镜的匹配,理解有效放大倍数。 5. 分别用100X及400X观察标准试祥组织,并描绘示意图。 四、实验报告要求: 1. 实验目的 2. 实验设备及材料 3. 实验内容 4. 讨论 (1)简述金相显微镜的放大原理。 (2)简述影响显微镜成像质量的因素有哪些。 (3)如何提高显微镜的分辨率。 (4)画出观察组织的示意图。示意图按统一规格画,并用箭头标明各组织

材料: 放大倍数: 实验二:金相试样制备技术 一、实验目的: 1. 了解试样的制备原理,熟悉制备过程。 2. 初步掌握显微试样的制备方法。 二、实验设备及材料: 砂轮机、抛光机、加工好的碳钢试样、砂纸、抛光膏、无水乙醇、浓硝酸。 三、实验内容 1. 每人制备一块碳钢的金相显微试样,按照下面步骤:砂轮机粗磨 T 砂纸从粗到细磨 制f 机械抛光f 化学腐蚀。 2. 观察金相制备试样,分析所制备试样存在的缺陷。 四、实验报告要求: 1. 实验目的 2. 实验设备及材料 3. 实验内容 4. 讨论 (1) 简述金相试样的制备原理和过程。 (2) 分析试样制备过程中出现缺陷的原因, 结合自己试样中的缺陷讨论如何制备出高质 量的显微试样 编号: 组织:

编译原理实验报告(语法分析器)

. 编译原理实验专业:13级网络工程

语法分析器1 一、实现方法描述 所给文法为G【E】; E->TE’ E’->+TE’|空 T->FT’ T’->*FT’|空 F->i|(E) 递归子程序法: 首先计算出五个非终结符的first集合follow集,然后根据五个产生式定义了五个函数。定义字符数组vocabulary来存储输入的句子,字符指针ch指向vocabulary。从非终结符E函数出发,如果首字符属于E的first集,则依次进入T函数和E’函数,开始递归调用。在每个函数中,都要判断指针所指字符是否属于该非终结符的first集,属于则根据产生式进入下一个函数进行调用,若first集中有空字符,还要判断是否属于该非终结符的follow集。以分号作为结束符。 二、实现代码 头文件shiyan3.h #include #include

#include using namespace std; #define num 100 char vocabulary[num]; char *ch; void judge_E(); void judge_EE(); void judge_T(); void judge_TT(); void judge_F(); 源文件 #include"shiyan3.h" void judge_E() { if(*ch==';') { cout<<"该句子符合此文法!"<

int a=0; cout<<"按1结束程序"<>a; if(a==1) exit(0); } else if(*ch=='('||*ch=='i') { judge_T(); judge_EE(); } else { cout<<"该句子不匹配此文法!"<>a; if(a==1) exit(0); }

材料分析(SEM)实验报告

材料专业实验报告 题目:扫描电镜(SEM)物相分析实验学院:先进材料与纳米科技学院专业:材料物理与化学 姓名: 学号:1514122986 2016年6月30日

扫描电镜(SEM)物相分析实验 一.实验目的 1.了解扫描电镜的基本结构与原理 2.掌握扫描电镜样品的准备与制备方法 3.掌握扫描电镜的基本操作并上机操作拍摄二次电子像 4.了解扫描电镜图片的分析与描述方法 二.实验原理 1.扫描电镜的工作原理 扫描电镜(SEM)是用聚焦电子束在试样表面逐点扫描成像。试样为块状或粉末颗粒,成像信号可以是二次电子、背散射电子或吸收电子。其中二次电子是最主要的成像信号。由电子枪发射的电子,以其交叉斑作为电子源,经二级聚光镜及物镜的缩小形成具有一定能量、一定束流强度和束斑直径的微细电子束,在扫描线圈驱动下,于试样表面按一定时间、空间顺序作栅网式扫描。聚焦电子束与试样相互作用,产生二次电子发射以及背散射电子等物理信号,二次电子发射量随试样表面形貌而变化。二次电子信号被探测器收集转换成电讯号,经视频放大后输入到显像管栅极,调制与入射电子束同步扫描的显像管亮度,得到反映试样表面形貌的二次电子像。 本次实验中主要通过观察背散射电子像及二次电子像对样品进行分析表征。 1)背散射电子 背散射电子是指被固体样品原子反射回来的一部分入射电子,其中包括弹性背反射电子和非弹性背反射电子。弹性背反射电子是指被样品中原子和反弹回来的,散射角大于90度的那些入射电子,其能量基本上没有变化(能量为数千到数万电子伏)。非弹性背反射电子是入射电子和核外电子撞击后产生非弹性散射,不仅能量变化,而且方向也发生变化。非弹性背反射电子的能量范围很宽,从数十电子伏到数千电子伏。背反射电子的产生范围在100nm-1mm深度。背反射电子产额和二次电子产额与原子序数的关系背反射电子束成像分辨率一般为50-200nm(与电子束斑直径相当)。背反射电子的产额随原子序数的增加而增加,所以,利用背反射电子作为成像信号不仅能分析形貌特征,也可以用来显示原子序数衬

(完整word版)教案-材料现代分析测试方法

西南科技大学 材料科学与工程学院 教师教案 教师姓名:张宝述 课程名称:材料现代分析测试方法 课程代码:11319074 授课对象:本科专业:材料物理 授课总学时:64 其中理论:64 实验:16(单独开课) 教材:左演声等. 材料现代分析方法. 北京工业大 学出版社,2000 材料学院教学科研办公室制

2、简述X射线与固体相互作用产生的主要信息及据此建立的主要分析方法。 章节名称第三章粒子(束)与材料的相互作用 教学 时数 2 教学目的及要求1.理解概念:(电子的)最大穿入深度、连续X射线、特征X射线、溅射;掌握概念:散射角(2 )、电子吸收、二次电子、俄歇电子、背散射电子、吸收电流(电子)、透射电子、二次离子。 2.了解物质对电子散射的基元、种类及其特征。 3.掌握电子与物质相互作用产生的主要信号及据此建立的主要分析方法。 4.掌握二次电子的产额与入射角的关系。 5.掌握入射电子产生的各种信息的深度和广度范围。 6.了解离子束与材料的相互作用及据此建立的主要分析方法。 重点难点重点:电子的散射,电子与固体作用产生的信号。难点:电子与固体的相互作用,离子散射,溅射。 教学内容提要 第一节电子束与材料的相互作用 一、散射 二、电子与固体作用产生的信号 三、电子激发产生的其它现象第二节离子束与材料的相互作用 一、散射 二、二次离子 作业一、教材习题 3-1电子与固体作用产生多种粒子信号(教材图3-3),哪些对应入射电子?哪些是由电子激发产生的? 图3-3入射电子束与固体作用产生的发射现象 3-2电子“吸收”与光子吸收有何不同? 3-3入射X射线比同样能量的入射电子在固体中穿入深度大得多,而俄歇电子与X光电子的逸出深度相当,这是为什么? 3-8配合表面分析方法用离子溅射实行纵深剖析是确定样品表面层成分和化学状态的重要方法。试分析纵深剖析应注意哪些问题。 二、补充习题 1、简述电子与固体作用产生的信号及据此建立的主要分析方法。 章节第四章材料现代分析测试方法概述教学 4

TEST语言 -语法分析,词法分析实验报告

编译原理实验报告 实验名称:分析调试语义分析程序 TEST抽象机模拟器完整程序 保证能用!!!!! 一、实验目的 通过分析调试TEST语言的语义分析和中间代码生成程序,加深对语法制导翻译思想的理解,掌握将语法分析所识别的语法范畴变换为中间代码的语义翻译方法。 二、实验设计 程序流程图

extern int TESTScan(FILE *fin,FILE *fout); FILE *fin,*fout; //用于指定输入输出文件的指针 int main() { char szFinName[300]; char szFoutName[300]; printf("请输入源程序文件名(包括路径):"); scanf("%s",szFinName); printf("请输入词法分析输出文件名(包括路径):"); scanf("%s",szFoutName); if( (fin = fopen(szFinName,"r")) == NULL) { printf("\n打开词法分析输入文件出错!\n"); return 0; } if( (fout = fopen(szFoutName,"w")) == NULL) { printf("\n创建词法分析输出文件出错!\n"); return 0; } int es = TESTScan(fin,fout); fclose(fin); fclose(fout); if(es > 0) printf("词法分析有错,编译停止!共有%d个错误!\n",es); else if(es == 0) { printf("词法分析成功!\n"); int es = 0;

词法分析器实验报告

词法分析器实验报告 词法分析器设计 一、实验目的: 对C语言的一个子集设计并实现一个简单的词法分析器,掌握利用状 态转换图设计词法分析器的基本方法。利用该词法分析器完成对源程 序字符串的词法分析。输出形式是源程序的单词符号二元式的代码, 并保存到文件中。 二、实验内容: 1. 设计原理 词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。 理论基础:有限自动机、正规文法、正规式 词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序 2. 词法分析器的功能和输出形式 功能:输入源程序、输出单词符号 程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符,界符 3. 输出的单词符号的表示形式: 单词种别用整数编码,关键字一字一种,标识符统归为一种,常数一种,各种符号各一种。 4. 词法分析器的结构 单词符号 5. 状态转换图实现

三、程序设计 1.总体模块设计 /*用来存储目标文件名*/ string file_name; /*提取文本文件中的信息。*/ string GetText(); /*获得一个单词符号,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。*/ string GetWord(string str,int i,int& j); /*这个函数用来除去字符串中连续的空格和换行 int DeleteNull(string str,int i); /*判断i当前所指的字符是否为一个分界符,是的话返回真,反之假*/ bool IsBoundary(string str,int i); /*判断i当前所指的字符是否为一个运算符,是的话返回真,反之假*/ bool IsOperation(string str,int i);

编译原理实验报告材料(预测分析报告表方法)

预测分析表方法 一、实验目的 理解预测分析表方法的实现原理。 二、实验内容: 编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。 三、实验步骤 1.算法数据构造: 构造终结符数组:char Vt[10][5]={“id”,”+”……}; 构造非终结符数组:char Vn[10]={ }; 构造follow集数组:char *follow[10][10]={ } (可将follow集与预测分析表合并存放) 数据构造示例(使用的预测分析表构造方法1): /*data1.h简单算术表达式数据*/ char VN[10][5]={"E","E'","T","T'","F"}; //非终结符表 int length_vn=5; //非终结符的个数 char VT[15][5]={"id","+","*","(",")","#"}; //终结符表 int length_vt=6; //终结符的个数 char Fa[15][10]={"TE'","+TE'","","FT'","*FT'","","(E)","id"}; //产生式表:0:E->TE' 1:E'->+TE' 2:E'->空 // 3:T->FT' 4:T'->*FT' 5:T'->空 6:F->(E) 7:F->id int analysis_table[10][11]={0,-1,-1,0,-2,-2,0,0,0,0,0, -1,1,-1,-1,2,2,0,0,0,0,0, 3,-2,-1,3,-2,-2,0,0,0,0,0, -1,5, 4,-1,5, 5,0,0,0,0,0, 7,-2,-2,6,-2,-2,0,0,0,0,0}; //预测分析表,-1表示出错,-2表示该行终结符的follow集合,用于错误处理,正数表示产生式在数组Fa 中的编号,0表示多余的列。 (1)预测分析表的构造方法1 给文法的正规式编号:存放在字符数组中,从0开始编号,正规式的编号即为该正规式在数组中对应的下标。如上述Fa数组表示存储产生式。 构造正规式数组:char P[10][10]={“E->TE’”,”E’->+TE’”,……..}; (正规式可只存储右半部分,如E->TE’可存储为TE’,正规式中的符号可替换,如可将E’改为M ) 构造预测分析表:int analyze_table[10][10]={ } //数组元素值存放正规式的编号,-1表示出错 (2)预测分析表的构造方法2 可使用三维数组 Char analyze_table[10][10][10]={ }

材料现代分析方法北京工业大学

材料现代分析方法北京工业大学 篇一:13103105-材料现代分析方法 《材料现代分析方法》课程教学大纲 一、课程基本信息 课程编号:13103105 课程类别:专业核心课程 适应专业:材料物理 总学时:54学时 总学分:3 课程简介: 本课程介绍材料微观形貌、结构及成分的分析与表面分析技术主要方法及基本技术,简单介绍光谱分析方法。包括晶体X射线衍射、电子显微分析、X射线光电子谱仪、原子光谱、分子光谱等分析方法及基本技术。 授课教材:《材料分析测试方法》,黄新民解挺编,国防工业出版社,20XX年。 参考书目: [1]《现代物理测试技术》,梁志德、王福编,冶金工业出版社,20XX 年。 [2]《X射线衍射分析原理与应用》,刘粤惠、刘平安编,化学工业出

版社,20XX年。 [3]《X射线衍射技术及设备》,丘利、胡玉和编,冶金工业出版社,20XX年。 [4]《材料现代分析方法》,左演声、陈文哲、梁伟编,北京工业大学出版社,20XX年。 [5]《材料分析测试技术》,周玉、武高辉编,哈尔滨工业大学出版社,2000年。 [6]《材料结构表征及应用》,吴刚编,化学工业出版社,20XX年。 [7]《材料结构分析基础》,余鲲编,科学出版社,20XX年。 二、课程教育目标 通过学习,了解X射线衍射仪及电子显微镜的结构,掌握X-射线衍射及电子显微镜的基本原理和操作方法,了解试样制备的基本要求及方法,了解材料成分的分析与表面分析技术的主要方法及基本技术,了解光谱分析方法,能够利用上述相关仪器进行材料的物相组成、显微结构、表面分析研究。学会运用以上技术的基本方法,对材料进行测试、计算和分析,得到有关微观组织结构、形貌及成分等方面的信息。 三、教学内容与要求 第一章X射线的物理基础 教学重点:X射线的产生及其与物质作用原理 教学难点:X射线的吸收和衰减、激发限 教学时数:2学时

编译原理LL(1)语法分析实验报告

学号20102798 专业软件工程姓名薛建东 实验日期2013.04.08 教师签字成绩实验报告 【实验名称】LL(1)语法分析 【实验目的】 通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练掌握开发应用程序的基本方法。 【实验内容】 ◆根据某一文法编制调试LL ( 1)分析程序,以便对任意输入的符号串进行分析。 ◆构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。 ◆分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号以及LL(1) 分析表,对输入符号串自上而下的分析过程。 【设计思想】 (1)、LL(1)文法的定义 LL(1)分析法属于确定的自顶向下分析方法。LL(1)的含义是:第一个L表明自顶向下分析是从左向右扫描输入串,第2个L表明分析过程中将使用最左推导,1表明只需向右看一个符号便可决定如何推导,即选择哪个产生式(规则)进行推导。 LL(1)文法的判别需要依次计算FIRST集、FOLLOW集和SELLECT集,然后判断是否为LL(1)文法,最后再进行句子分析。 需要预测分析器对所给句型进行识别。即在LL(1)分析法中,每当在符号栈的栈顶出现非终极符时,要预测用哪个产生式的右部去替换该非终极符;当出现终结符时,判断其与剩余输入串的第一个字符是否匹配,如果匹配,则继续分析,否则报错。LL(1)分析方法要求文法满足如下条件:对于任一非终极符A的两个不同产生式A→α,A→β,都要满足下面条件:SELECT(A→α)∩SELECT(A→β)=? (2)、预测分析表构造 LL(1)分析表的作用是对当前非终极符和输入符号确定应该选择用哪个产生式进行推

材料现代分析方法实验报告

力学与材料学院 材料现代分析方法实验报告二 XRD图谱分析 专业年级:1 姓名:1 指导老师:1 学号:1 2016年12月 中国南京 目录 实验名称:XRD图谱分析…………………………………………… 一、实验目的……………………………………………………

二、实验要求…………………………………………………… 三、操作过程…………………………………………………… 四、结果分析与讨论……………………………………………… 实验名称:XRD图谱分析 一、实验目的 了解XRD基本原理及其应用,不同物相晶体结构XRD图谱的区别,熟练掌握如何来分析利用X射线测试得到的XRD图谱。 二、实验要求

1、熟练掌握如何来利用软件打开、分析XRD图谱,以及输出分析结果。 2、明确不同物质的XRD图谱,掌握XRD图谱包含的晶体结构的关系,通过自己分析、数据查找和鉴别的全过程,了解如何利用软件正确分析和确定不同物相的XRD图谱,并输出分析结果。 3、实验报告的编写,要求报告能准确的反映实验目的、方法、过程及结论。 三、操作过程 1、启动Jade 6.0,并打开实验数据。 2、点击图标使图谱平滑后,再连续两次点击图标扣除背景影响。 3、右击工具栏中的图标,全选左侧的项目,取消选择右侧中的Use Chemistry Filter,最后在下方选择S/M Focus on Major Phases(如图一),并点击OK。 图一

4、得到物相分析,根据FOM值(越小,匹配性越高)可推断出该物相为以ZnO为主,可能含有CaF2、Al2O3、Mg(OH)2混合组成的物质(如图二),双击第一种物质可以得到主晶相的PDF卡片(如图三),点击图三版面中的Lines可以观察到不同角度处的衍射强度(如图四)。 图二

词法分析器实验报告

词法分析器实验报告 一、实验目的及要求 本次实验通过用C语言设计、编制、调试一个词法分析子程序,识别单词,实现一个C语言词法分析器,经过此过程可以加深对编译器解析单词流的过程的了解。 运行环境: 硬件:windows xp 软件:visual c++6.0 二、实验步骤 1.查询资料,了解词法分析器的工作过程与原理。 2.分析题目,整理出基本设计思路。 3.实践编码,将设计思想转换用c语言编码实现,编译运行。 4.测试功能,多次设置包含不同字符,关键字的待解析文件,仔细察看运行结果,检测该分析器的分析结果是否正确。通过最终的测试发现问题,逐渐完善代码中设置的分析对象与关键字表,拓宽分析范围提高分析能力。 三、实验内容 本实验中将c语言单词符号分成了四类:关键字key(特别的将main说明为主函数)、普通标示符、常数和界符。将关键字初始化在一个字符型指针数组*key[]中,将界符分别由程序中的case列出。在词法分析过程中,关键字表和case列出的界符的内容是固定不变的(由程序中的初始化确定),因此,从源文件字符串中识别出现的关键字,界符只能从其中选取。标识符、常数是在分析过程中不断形成的。 对于一个具体源程序而言,在扫描字符串时识别出一个单词,若这个单词的类型是关键字、普通标示符、常数或界符中之一,那么就将此单词以文字说明的形式输出.每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直到整个源程序全部扫描完毕,从而形成相应的单词串。 输出形式例如:void $关键字

流程图、程序流程图:

程序: #include #include #include #include //定义关键字 char *Key[10]={"main","void","int","char","printf","scanf","else","if","return"}; char Word[20],ch; // 存储识别出的单词流 int IsAlpha(char c) { //判断是否为字母 if(((c<='z')&&(c>='a'))||((c<='Z')&&(c>='A'))) return 1; else return 0; } int IsNum(char c){ //判断是否为数字 if(c>='0'&&c<='9') return 1; else return 0; } int IsKey(char *Word){ //识别关键字函数 int m,i; for(i=0;i<9;i++){ if((m=strcmp(Word,Key[i]))==0) { if(i==0) return 2; return 1; } } return 0; } void scanner(FILE *fp){ //扫描函数 char Word[20]={'\0'}; char ch; int i,c; ch=fgetc(fp); //获取字符,指针fp并自动指向下一个字符 if(IsAlpha(ch)){ //判断该字符是否是字母 Word[0]=ch; ch=fgetc(fp);

材料分析与表征方法实验报告

材料分析与表征方法实验报告 热重分析实验报告 一、实验目的 1.了解热重分析法的基本原理和差热分析仪的基本构造。 2.掌握热重分析仪的使用方法。 二、实验原理 热重分析指温度在程序控制时,测量物质质量与温度之间的关系的技术。热重分析所用的仪器是热天平,它的基本原理是,样品重量变化所引起的天平位移量转化成电磁量,这个微小的电量经过放大器放大后,送入记录仪记录;而电量的大小正比于样品的重量变化量。当被测物质在加热过程中有升华、汽化、分解出气体或失去结晶水时,被测的物质质量就会发生变化。 三、实验原料 一水草酸钙CaC2O4·H2O 四、实验仪器 美国TA公司TGA55 升温与降温速率(K/min)0.1-100℃/min 天平灵敏度(μg)0.1μg 温度范围(°C)室温-1000℃ 五、操作条件

第一组:10℃/min空气条件下和20℃/min空气条件下,对TG和DTG 曲线进行对比。 第二组:10℃/min空气条件下和10℃/min氮气条件下,对DSC进行对比。 第三组:10℃/min氮气条件下,得到TG、DTG、DSC曲线。 六、结果与讨论 含有一个结晶水的草酸钙(242CaC.OHO)在100℃以前没有失重现象,其热重曲线呈水平状,为TG曲线的第一个平台。DTG曲线在0刻度。 在100℃和200℃之间失重并出现第二个平台。DTG曲线先升后降,在108.4℃达到最大值,即失重速率的最大值。DSC曲线先降后升,在188.4℃达到最小值,即热功率的最小值。这一步的失重量占试样总质量的12.47%,相当于每mo CaC2O4·H2O失掉1mol H2O,其热分解反应为: CaC2O4·H2O CaC2O4 + H2O 在400℃和500℃之间失重并开始呈现第三个平台,DTG曲线先升后降,在

材料现代分析方法试题9(参考答案)

材料现代分析方法试题9(参考答案) 一、基本概念题(共10题,每题5分) 1.为什么特征X射线的产生存在一个临界激发电压?X射线管的工作电压与其靶材的临界激发电压有什么关系?为什么? 答:要使内层电子受激发,必须给予施加大于或等于其结合能的能量,才能使其脱离 轨道,从而产生特征X射线,而要施加的最低能量,就存在一个临界激发电压。X射线 管的工作电压一般是其靶材的临界激发电压的3-5倍,这时特征X射线对连续X射线比 例最大,背底较低。 2.布拉格方程2dsinθ=λ中的d、θ、λ分别表示什么?布拉格方程式有何用途?答:d HKL表示HKL晶面的面网间距,θ角表示掠过角或布拉格角,即入射X射线或衍射线与面网间的夹角,λ表示入射X射线的波长。该公式有二个方面用途: (1)已知晶体的d值。通过测量θ,求特征X射线的λ,并通过λ判断产生特征X射线的元素。这主要应用于X射线荧光光谱仪和电子探针中。(2)已知入射X射线的波 长,通过测量θ,求晶面间距。并通过晶面间距,测定晶体结构或进行物相分析。3.多重性因子的物理意义是什么?某立方晶系晶体,其{100}的多重性因子是多少?如该晶体转变为四方晶系,这个晶面族的多重性因子会发生什么变化? 答:多重性因子的物理意义是等同晶面个数对衍射强度的影响因数叫作多重性因子。某立方晶系晶体,其{100}的多重性因子是6?如该晶体转变为四方晶系多重性因子是4;这个晶面族的多重性因子会随对称性不同而改变。 4.什么是丝织构,它的极图有何特点? 答:丝织构是一种晶粒取向轴对称分布的织构,存在于拉、轧或挤压成形的丝、棒材 及各种表面镀层中。其特点是多晶体中各种晶粒的某晶向[uvw]与丝轴或镀层表面法线 平行。 丝织构的极图呈轴对称分布 5.电磁透镜的像差是怎样产生的? 如何来消除和减少像差? 答:电磁透镜的像差包括球差、像散和色差。 球差即球面像差,是磁透镜中心区和边沿区对电子的折射能力不同引起的,其中离

语法分析(自上而下分析)实验报告

实习二语法分析-自上而下分析 一、实验目的 使用预测分析方法对输入的表达式进行分析,掌握其具体的使用并且学会去分析一个文法。 二、实验内容 1.设计表达式的语法分析器算法(使用预测分析) 2.编写一段代码并上机调试查看其运行结果 三、实验要求 使用LL(1)分析算法设计表达式的语法分析器 LL(1)文法是一个自上而下的语法分析方法,它是从文法的开始符号出发,生成句子的最左推导,从左到右扫描源程序,每次向前查看一个字符,确定当前应该选择的产生式。 实现LL(1)分析的另一种有效方法是使用一张分析表和一个栈进行联合控制。 预测分析程序的总控程序在任何时候都是按STACK栈顶符号X和当前a的输入符号行事的。对于任何(X,a),总控程序每次都执行三种可能的动作之一。 1.若X=a=“#”,则宣布分析成功,停止分析过程 2.若X=a≠“#”,则把X从STACK栈顶逐出,让a指向下一 个输入符号。 3.若X是一个非终结符,则查看分析表。 四、运行结果

(本程序只能对由'i','+','*','(',')'构成的以'#'结束的字符串进行分析) 五、源程序实现 /*LL(1)分析法源程序,只能在VC++中运行*/ #include #include #include #include char A[20]; char B[20]; char v1[20]={'i','+','*','(',')','#'};/*终结符*/ char v2[20]={'E','G','T','S','F'};/*非终结符*/ int j=0,b=0,top=0,l;/*L为输入串长度*/

编译原理语法分析器实验报告

编译原理语法分析器实验报告 班级: 学号: 姓名:

实验名称语法分析器 一、实验目的 1、根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。 2、本次实验的目的主要是加深对自上而下分析法的理解。 二、实验内容 [问题描述] 递归下降分析法: 0.定义部分:定义常量、变量、数据结构。 1.初始化:从文件将输入符号串输入到字符缓冲区中。 2.利用递归下降分析法分析,对每个非终结符编写函数,在主函数中调用文法开始符号的函数。 LL(1)分析法: 模块结构: 1、定义部分:定义常量、变量、数据结构。 2、初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体等); 3、运行程序:让程序分析一个text文件,判断输入的字符串是否符合文法定义的规则; 4、利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式 符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示简 单的错误提示。 [基本要求] 1. 对数据输入读取 2. 格式化输出分析结果 2.简单的程序实现词法分析 public static void main(String args[]) { LL l = new LL(); l.setP(); String input = ""; boolean flag = true;

while (flag) { try { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.println(); System.out.print("请输入字符串(输入exit退出):"); input = br.readLine(); } catch (Exception e) { e.printStackTrace(); } if(input.equals("exit")){ flag = false; }else{ l.setInputString(input); l.setCount(1, 1, 0, 0); l.setFenxi(); System.out.println(); System.out.println("分析过程"); System.out.println("----------------------------------------------------------------------"); System.out.println(" 步骤| 分析栈 | 剩余输入串| 所用产生式"); System.out.println("----------------------------------------------------------------------"); boolean b = l.judge(); System.out.println("----------------------------------------------------------------------"); if(b){ System.out.println("您输入的字符串"+input+"是该文法的一个句子"); }else{ System.out.println("您输入的字符串"+input+"有词法错误!");

相关主题
文本预览
相关文档 最新文档