文档库 最新最全的文档下载
当前位置:文档库 › 编译原理实验报告材料(预测分析报告表方法)

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

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

预测分析表方法

一、实验目的

理解预测分析表方法的实现原理。

二、实验内容:

编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。

三、实验步骤

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]={ }

Char *analyze_table[10][10]={ }

2.针对预测分析表构造方法1的查预测分析表的方法提示:

(1)查非终结符表得到非终结符的序号no1

(2)查终结符表得到终结符的序号no2

(3)根据no1和no2查预测分析表得到对应正规式的序号no3=analyze_table[no1][no2] ,如果no3=-1 表示出错。

(4)根据no3查找对应的正规式Fa[no3]

(5)对正规式进行处理

3.错误处理机制

紧急方式的错误恢复方法(抛弃某些符号,继续向下分析)

(1)栈顶为非终结符A,串中当前单词属于FOLLOW(A),则从栈中弹出A(此时可认为输入串中缺少A表示的结构),继续分析。 ---------错误编号为1

(2)栈顶为非终结符A,串中当前单词不属于FOLLOW(A),则可使串指针下移一个位置(认为输入串中当前单词多余),继续分析。----------错误编号为2(3)栈顶为终结符,且不等于串中当前单词,则从栈中弹出此终结符(认为输入串中缺少当前单词)或者将串指针下移一个位置(认为串中当前单词多余)。在程序中可选择上述两种观点中的一种进行处理。-------------错误编号3

因此error()函数的编写方式可按如下方式处理

Error(int errornum)

{

If(errornum==1)………………

Else if(errornum==2)……………

Else ………………..

//或者可用choose case语句处理

}

4.增加了错误处理的预测分析程序预测分析程序的算法:

将“#”和文法开始符依次压入栈中;

把第一个输入符号读入a;

do{

把栈顶符号弹出并放入x中;

if(x∈VT)

{

if(x==a) 将下一输入符号读入a;

else error(3);

}

else

if(M[x,a]=“x→y1y2…yk”)

{

按逆序依次把yk、yk?1、…、y1压入栈中;

输出“x→y1y2…yk”;

}

else if a∈follow(x)error(1); else error(2);

//在前述的数据定义中查表为-2表示a∈follow(x)

}while(x!=“#”)

给定算术表达式文法,编写程序。

测试数据:

1.算术表达式文法

E→TE’

E’→ +TE’|- TE’|ε

T→FT’

T’→*FT’ |/ FT’ |%FT’|ε

F→(E) |id|num

给定一符合该文法的句子,如id+id*id$,运行预测分析程序,给出分析过程和每一步的分析结果。

输出形式参考下图($为结束符):

#include

#include

#include

#define TT 0

char aa[20]=" ";

int pp=0;

# if TT

char VN[5]={'E','e','T','t','F'}; //非终结符表

int length_vn=5; //非终结符的个数

char VT[10]={'*','l','m','+','-','(',')','i','n','#'}; //终结符表l->/ m->% i->id n->num

int length_vt=10; //终结符的个数

char

Fa[12][6]={"Te","+Te","-Te","NULL","Ft","*Ft","nFt","mFt","NULL","(E)","i", "n"};

//产生式表:0:E->Te 1:e->+Te 2:e->-Te 3:e->空

char

F[12][6]={"E->","e->","e->","e->","T->","t->","t->","t->","t->","F->","F->" ,"F->"};

int analysis_table[5][10]={-2,-2,-2,-2,-2,0,-1,0,0,-1,

-2,-2,-2,1,2,-2,3,-2,-2,3,

-2,-2,-2,-1,-1,4,-1,4,4,-1,

5,6,7,8,8,-2,8,-2,-2,8,

-1,-1,-1,-1,-1,9,-1,10,11,-1};

# else

char VN[4]={'A','Z','B','Y'}; //非终结符表

int length_vn=4; //非终结符的个数

char VT[5]={'a','l','d','b','#'}; //终结符表

int length_vt=5; //终结符的个数

char Fa[6][6]={"aZ","ABl","NULL","dY","bY","NULL"};

char F[6][6]={"A->","Z->","B->","Y->"};

int analysis_table[4][5]={0,-2,-1,-2,-1,

1,-2,2,-2,2,

-2,-1,3,-2,-2,

-2,5,-2,4,-2};

# endif

char stack[50];

int top=-1;

void initscanner() //程序初始化:输入并打开源程序文件{

int i=0;

FILE *fp;

if((fp=fopen("a.txt","r"))==NULL)

{

printf("Open error!");

exit(0);

}

char ch=fgetc(fp);

while(ch!=EOF)

{

aa[i]=ch;

i++;

ch=fgetc(fp);

}

fclose(fp);

}

void push(char a)

{

top++;

stack[top]=a;

}

char pop()

{

return stack[top--];

}

int includevt(char x)

{

for(int i=0;i

{

if(VT[i]==x) return 1;

}

return 0;

}

int includean(char x,char a)

{

int i,j;

for(i=0;i

if(VN[i]==x) break;

for(j=0;j

if(VT[j]==a) break;

return analysis_table[i][j];

}

void destory()

{

int flag=0;

int flagg=0;

push('#'); //将"#"和文法开始符依次压入栈中

push(VN[0]);

char a=aa[pp]; //把第一个输入符号读入a

char x;

do{

if(flag==0)

x=pop(); //把栈顶符号弹出并放入x中

flag=0;

printf("%c\t\t\t%c\t",x,a);

if(includevt(a)==1)

{

if(includevt(x)==1)

{

if(x==a)

{

if(a=='#')

{

flagg=1;

printf("结束\n");

}

else printf("匹配终结符%c\n",x);

pp++;

a=aa[pp]; //将下一输入符号读入a;

}

else

{

flag=1;

printf("出错,跳过%c\n",a);

pp++;

a=aa[pp];

}

}

else if(includean(x,a)>=0)

{

int h=includean(x,a);

printf("展开非终结符%s%s\n",F[h],Fa[h]);

int k;

for(k=0;k<10;k++)

if(Fa[h][k]=='\0') break;

if(k==4)

{

//printf("+++++++++++pop %c \n",x);

}

else

{

while(k!=0) //按逆序依次把yk、yk?1、…、y1压入栈中

{

k--;

push(Fa[h][k]);

}

}

}

else if(includean(x,a)==-1)

{

flag=1;

printf("出错,从栈顶弹出%c\n",x);

x=pop();

}

else

{

flag=1;

printf("出错,跳过%c\n",a);

pp++;

a=aa[pp];

}

}

else

{

flag=1;

printf("出错,跳过%c\n",a);

pp++;

a=aa[pp];

}

}while(x!='#');

if(flagg==0)

{

printf("%c\t\t\t%c\t",x,a);

printf("结束\n");

}

}

int main()

{

printf("请输入1 or 0:\n");

//scanf("%d",TT);

printf("语法分析工程如下:\n");

initscanner();

printf("要分析的语句是:%s\n",aa);

printf("语法分析工程如下:\n");

printf("栈顶元素\t\t当前单词记号\t\t\t动作\n");

printf("--------------------------------------------------------------------\n");

destory();

return 0;

}

四、实验小结

我成功的完成了实验基本要求和选做内容。这次实验对我做编译的课程设计有很大指导作用,我觉得学好编译原理可以使我们更加容易去编译,这次实验使我获益良多和我相信我会在编译道路上会走得更远。

材料分析方法实验报告

篇一:材料分析方法实验报告 篇二:材料分析方法课程设计报告 材料分析测试方法 课程设计(论文) 题目:磁控溅射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样品的制备方法 .............................................................................

材料分析方法课后答案(更新至第十章)

材料分析方法课后练习题参考答案 2015-1-4 BY:二专业の学渣 材料科学与工程学院

3.讨论下列各组概念的关系 答案之一 (1)同一物质的吸收谱和发射谱; 答:λk吸收〈λkβ发射〈λkα发射 (2)X射线管靶材的发射谱与其配用的滤波片的吸收谱。 答:λkβ发射(靶)〈λk吸收(滤波片)〈λkα发射(靶)。任何材料对X射线的吸收都有一个Kα线和Kβ线。如Ni 的吸收限为0.14869 nm。也就是说它对0.14869nm波长及稍短波长的X射线有强烈的吸收。而对比0.14869稍长的X射线吸收很小。Cu靶X射线:Kα=0.15418nm Kβ=0.13922nm。 (3)X射线管靶材的发射谱与被照射试样的吸收谱。 答:Z靶≤Z样品+1 或Z靶>>Z样品 X射线管靶材的发射谱稍大于被照射试样的吸收谱,或X射线管靶材的发射谱大大小于被照射试样的吸收谱。在进行衍射分析时,总希望试样对X射线应尽可能少被吸收,获得高的衍射强度和低的背底。 答案之二 1)同一物质的吸收谱和发射谱; 答:当构成物质的分子或原子受到激发而发光,产生的光谱称为发射光谱,发射光谱的谱线与组成物质的元素及其外围电子的结构有关。吸收光谱是指光通过物质被吸收后的光谱,吸收光谱则决定于物质的化学结构,与分子中的双键有关。 2)X射线管靶材的发射谱与其配用的滤波片的吸收谱。 答:可以选择λK刚好位于辐射源的Kα和Kβ之间的金属薄片作为滤光片,放在X射线源和试样之间。这时滤光片对Kβ射线强烈吸收,而对Kα吸收却少。 6、欲用Mo 靶X 射线管激发Cu 的荧光X 射线辐射,所需施加的最低管电压是多少?激发出的荧光辐射的波长是多少? 答:eVk=hc/λ Vk=6.626×10-34×2.998×108/(1.602×10-19×0.71×10-10)=17.46(kv) λ0=1.24/v(nm)=1.24/17.46(nm)=0.071(nm) 其中h为普郎克常数,其值等于6.626×10-34 e为电子电荷,等于1.602×10-19c 故需加的最低管电压应≥17.46(kv),所发射的荧光辐射波长是0.071纳米。 7、名词解释:相干散射、非相干散射、荧光辐射、吸收限、俄歇效应 答:⑴当χ射线通过物质时,物质原子的电子在电磁场的作用下将产生受迫振动,受迫振动产生交变电磁场,其频率与入射线的频率相同,这种由于散射线与入射线的波长和频率一致,位相固定,在相同方向上各散射波符合相干条件,故称为相干散射。 ⑵当χ射线经束缚力不大的电子或自由电子散射后,可以得到波长比入射χ射线长的χ射线,且波长随散射方向不同而改变,这种散射现象称为非相干散射。

(完整版)材料分析测试技术部分课后答案

材料分析测试技术部分课后答案 太原理工大学材料物理0901 除夕月 1-1 计算0.071nm(MoKα)和0.154nm(CuKα)的X-射线的振动频率和能量。 ν=c/λ=3*108/(0.071*10-9)=4.23*1018S-1 E=hν=6.63*10-34*4.23*1018=2.8*10-15 J ν=c/λ=3*108/(0. 154*10-9)=1.95*1018S-1 E=hν=6.63*10-34*2.8*1018=1.29*10-15 J 1-2 计算当管电压为50kV时,电子在与靶碰撞时的速度与动能以及所发射的连续谱的短波限和光子的最大动能. E=eV=1.602*10-19*50*103=8.01*10-15 J λ=1.24/50=0.0248 nm E=8.01*10-15 J(全部转化为光子的能量) V=(2eV/m)1/2=(2*8.01*10-15/9.1*10-31)1/2=1.32*108m/s 1-3分析下列荧光辐射产生的可能性,为什么? (1)用CuKαX射线激发CuKα荧光辐射; (2)用CuKβX射线激发CuKα荧光辐射;

(3)用CuKαX射线激发CuLα荧光辐射。 答:根据经典原子模型,原子内的电子分布在一系列量子化的壳层上,在稳定状态下,每个壳层有一定数量的电子,他们有一定的能量。最内层能量最低,向外能量依次增加。 根据能量关系,M、K层之间的能量差大于L、K成之间的能量差,K、L层之间的能量差大于M、L层能量差。由于释放的特征谱线的能量等于壳层间的能量差,所以K?的能量大于Ka 的能量,Ka能量大于La的能量。 因此在不考虑能量损失的情况下: CuKa能激发CuKa荧光辐射;(能量相同) CuK?能激发CuKa荧光辐射;(K?>Ka) CuKa能激发CuLa荧光辐射;(Ka>la) 1-4 以铅为吸收体,利用MoKα、RhKα、AgKαX射线画图,用图解法证明式(1-16)的正确性。(铅对于上述Ⅹ射线的质量吸收系数分别为122.8,84.13,66.14 cm2/g)。再由曲线求出铅对应于管电压为30 kv条件下所发出的最短波长时质量吸收系数。 解:查表得 以铅为吸收体即Z=82 Kαλ3 λ3Z3 μm Mo 0.714 0.364 200698 122.8 Rh 0.615 0.233 128469 84.13 Ag 0.567 0.182 100349 66.14 画以μm为纵坐标,以λ3Z3为横坐标曲线得K≈8.49×10-4,可见下图 铅发射最短波长λ0=1.24×103/V=0.0413nm λ3Z3=38.844×103 μm = 33 cm3/g 1-5. 计算空气对CrKα的质量吸收系数和线吸收系数(假设空气中只有质量分数80%的氮和质量分数20%的氧,空气的密度为1.29×10-3g/cm3)。 解:μm=0.8×27.7+0.2×40.1=22.16+8.02=30.18(cm2/g) μ=μm×ρ=30.18×1.29×10-3=3.89×10-2 cm-1 1-6. 为使CuKα线的强度衰减1/2,需要多厚的Ni滤波片?(Ni的密度为8.90g/cm3)。1-7. CuKα1和CuKα2的强度比在入射时为2:1,利用算得的Ni滤波片之后其比值会有什么变化? 解:设滤波片的厚度为t 根据公式I/ I0=e-Umρt;查表得铁对CuKα的μm=49.3(cm2/g),有:1/2=exp(-μmρt) 即t=-(ln0.5)/ μmρ=0.00158cm 根据公式:μm=Kλ3Z3,CuKα1和CuKα2的波长分别为:0.154051和0.154433nm ,所以μm=K

广东工业大学编译原理实验报告

实验报告 课程名称____ 编译原理__________ 题目名称_ PL/0编译程序的修改扩充_ 学生学院______计算机学院__ 专业班级_______ ________ 学号 学生姓名______ ________ 指导教师____ _________ __ 20 年月日

一、课内实验要求 对PL/0作以下修改扩充: 增加单词:保留字ELSE,FOR,TO,DOWNTO,RETURN 运算符*=,/=,++,--,&,||,! 修改单词:不等号# 改为<> 增加条件语句的ELSE子句,要求:写出相关文法,语法图,语义规则。 二、实验环境与工具 计算机及操作系统:PC机,Windows2000,WindowsXP 程序设计语言:C 教学型编译程序:PL/0 设计方案 概述:源、目标语言,实现工具(平台),运行平台 源语言:PASCAL 目标语言:假想栈式计算机的汇编语言,可称为类PCODE指令代码 实现工具:Visual C++ 6.0 运行平台:Windows 7 三、设计方案 1.结构设计说明 (1)PL/0 语言编译器 PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。

(2)PL/0编译程序的语法分析过程BLOCK是整个编译过程的核心。这里根据编译程序的总体流程图,来弄清BLOCK过程在整个编译程序中的作用。总流程图如下图所示: PL/0语法调用关系图

PL/0 的编译程序采用一趟扫描方式,以语法分析程序为核心,词法分析程序和代码生 成程序都作为一个独立的过程,当语法分析需要读单词时就用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序。此外,用表格管理程序建立变量,常量和过程标识符的说明与引用之间的信息联系。用出错处理程序对词法和语法分析遇到的错误给出在源程序中出错的位置和错误性质。 (3)各功能模块描述

材料分析(SEM)实验报告

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

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

编译原理实验报告

编译原理实验报告 班级 姓名: 学号: 自我评定:

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 根据教学要求并结合学生自己的兴趣和具体情况,从具有代表性的高级程序设计语言的各类典型单词中,选取一个适当大小的子集。例如,可以完成无符号常数这一类典型单词的识别后,再完成一个尽可能兼顾到各种常数、关键字、标识符和各种运算符的扫描器的设计和实现。 输入:由符合或不符合所规定的单词类别结构的各类单词组成的源程序。 输出:把单词的字符形式的表示翻译成编译器的内部表示,即确定单词串的输出形式。例如,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS字段为相应的类别码;VALUE字段则是该标识符、常数的具体值或在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则存放该常数的二进制形式)。对于关键字和运算符,采用一词一类的编码形式;由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。另外,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上放置单词类别的助记符。 三、实现方法与环境 词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵同控制程序便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。如美国BELL实验室研制的LEX就是一个被广泛使用的词法分析程序的自动生成工具。 总的来说,开发一种新语言时,由于它的单词符号在不停地修改,采用LEX等工具生成的词法分析程序比较易于修改和维护。一旦一种语言确定了,则采用手工编写词法分析程序效率更高。 四、实验设计 1)题目1:试用手工编码方式构造识别以下给定单词的某一语言的词法分析程序。 语言中具有的单词包括五个有代表性的关键字begin、end、if、then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。 单词的分类:构造上述语言中的各类单词符号及其分类码表。 表I 语言中的各类单词符号及其分类码表 单词符号类别编码类别码的助记符单词值

材料分析方法考试复习题

一、名词解释(30分,每题3分) 1)短波限: 连续X 射线谱的X 射线波长从一最小值向长波方向伸展,该波长最小值称为短波限。P7。 2)质量吸收系数 指X 射线通过单位面积上单位质量物质后强度的相对衰减量,这样就摆脱了密度的影响,成为反映物质本身对X 射线吸收性质的物质量。P12。 3)吸收限 吸收限是指对一定的吸收体,X 射线的波长越短,穿透能力越强,表现为质量吸收系数的下降,但随着波长的降低,质量吸收系数并非呈连续的变化,而是在某些波长位置上突然升高,出现了吸收限。每种物质都有它本身确定的一系列吸收限。P12。 4)X 射线标识谱 当加于X 射线管两端的电压增高到与阳极靶材相应的某一特定值k U 时,在连续谱的某些特定的波长位置上,会出现一系列强度很高、波长范围很窄的线状光谱,它们的波长对一定材料的阳极靶有严格恒定的数值,此波长可作为阳极靶材的标志或特征,故称为X 射线标识谱。P9。 5)连续X 射线谱线 强度随波长连续变化的X 射线谱线称连续X 射线谱线。P7。 6)相干散射 当入射线与原子内受核束缚较紧的电子相遇,光量子不足以使原子电离,但电子可在X 射线交变电场作用下发生受迫振动,这样的电子就成为一个电磁波的发射源,向周围辐射与入射X 射线波长相同的辐射,因为各电子所散射的射线波长相同,有可能相互干涉,故称相干散射。P14。 7)闪烁计数器 闪烁计数器利用X 射线激发磷光体发射可见荧光,并通过光电管进行测量。P54。 8)标准投影图 对具有一定点阵结构的单晶体,选择某一个低指数的重要晶面作为投影面,将各晶面向此面所做的极射赤面投影图称为标准投影图。P99。 9)结构因数 在X 射线衍射工作中可测量到的衍射强度HKL I 与结构振幅2 HKL F 的平方成正比,结构振幅

编 译 原 理 实 验 报 告

编译原理实验报告 课程:编译原理 系别:计算机系 班级:11网络 姓名:王佳明 学号:110912049 教师:刘老师 实验小组:第二组 1

实验一熟悉C程序开发环境、进行简单程序的调试 实验目的: 1、初步了解vc++6.0环境; 2、熟悉掌握调试c程序的步骤: 实验内容: 1、输入下列程序,练习Turbo C 程序的编辑、编译、运行。 #include main() { printf(“Programming is fun.\n”); } 2、分析程序,预测其运行结果,并上机检测你的预测。 #include main() { printf(“*\n”); printf(“* * *\n”); printf(“* * * * *\n”); printf(“* * * * * * *\n”); } 3、下面是一个加法程序,程序运行时等待用户从键盘输入两个整数,然后求出它们的和并输出。观察运行结果(程序输出),上机验证该程序。 #include main() { int a,b,c; printf(“Please input a,b:”); scanf(“%d,%d”,&a,&b); c=a+b; printf(“%d+%d=%d\n”,a,b,c); } 2

实验二词法分析器 一、实验目的: 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验要求: 1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 2.本程序自行规定: (1)关键字"begin","end","if","then","else","while","write","read", "do", "call","const","char","until","procedure","repeat" (2)运算符:"+","-","*","/","=" (3)界符:"{","}","[","]",";",",",".","(",")",":" (4)其他标记如字符串,表示以字母开头的标识符。 (5)空格、回车、换行符跳过。 在屏幕上显示如下: ( 1 , 无符号整数) ( begin , 关键字) ( if , 关键字) ( +, 运算符) ( ;, 界符) ( a , 普通标识符) 三、使用环境: Windows下的visual c++6.0; 四、调试程序: 1.举例说明文件位置:f:、、11.txt目标程序如下: begin x:=9 if x>0 then x:=x+1; while a:=0 do 3

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

预测分析表方法 一、实验目的 理解预测分析表方法的实现原理。 二、实验内容: 编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。 三、实验步骤 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]={ }

材料分析方法课后习题答案

第十四章 1、波谱仪和能谱仪各有什么优缺点 优点:1)能谱仪探测X射线的效率高。 2)在同一时间对分析点内所有元素X射线光子的能量进行测定和计数,在几分钟内可得到定性分析结果,而波谱仪只能逐个测量每种元素特征波长。 3)结构简单,稳定性和重现性都很好 4)不必聚焦,对样品表面无特殊要求,适于粗糙表面分析。 缺点:1)分辨率低。 2)能谱仪只能分析原子序数大于11的元素;而波谱仪可测定原子序数从4到92间的所有元素。 3)能谱仪的Si(Li)探头必须保持在低温态,因此必须时时用液氮冷却。 分析钢中碳化物成分可用能谱仪;分析基体中碳含量可用波谱仪。 2、举例说明电子探针的三种工作方式(点、线、面)在显微成分分析中的应用。 答:(1)、定点分析:将电子束固定在要分析的微区上用波谱仪分析时,改变分光晶体和探测器的位置,即可得到分析点的X射线谱线;

用能谱仪分析时,几分钟内即可直接从荧光屏(或计算机)上得到微区内全部元素的谱线。 (2)、线分析:将谱仪(波、能)固定在所要测量的某一元素特征X射线信号(波长或能量)的位置把电子束沿着指定的方向作直线轨迹扫描,便可得到这一元素沿直线的浓度分布情况。改变位置可得到另一元素的浓度分布情况。 (3)、面分析:电子束在样品表面作光栅扫描,将谱仪(波、能)固定在所要测量的某一元素特征X射线信号(波长或能量)的位置,此时,在荧光屏上得到该元素的面分布图像。改变位置可得到另一元素的浓度分布情况。也是用X射线调制图像的方法。 3、要在观察断口形貌的同时,分析断口上粒状夹杂物的化学成分,选用什么仪器用怎样的操作方式进行具体分析 答:(1)若观察断口形貌,用扫描电子显微镜来观察:而要分析夹杂物的化学成分,得选用能谱仪来分析其化学成分。 (2)A、用扫描电镜的断口分析观察其断口形貌:

编译原理实验报告一

实验一词法分析程序实现 一、实验目得与要求 通过编写与调试一个词法分析程序,掌握在对程序设计语言得源程序进行扫描得过程中,将字符流形式得源程序转化为一个由各类单词符号组成得流得词法分析方法 二、实验内容 基本实验题目:若某一程序设计语言中得单词包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符与四个算术运算符,试构造能识别这些单词得词法分析程序(各类单词得分类码参见表I)。 表I语言中得各类单词符号及其分类码表 输入:由符合与不符合所规定得单词类别结构得各类单词组成得源程序文件。 输出:把所识别出得每一单词均按形如(CLASS,VALUE)得二元式形式输出,并将结果放到某个文件中。对于标识符与无符号常数,CLASS字段为相应得类别码得助记符;V AL UE字段则就是该标识符、常数得具体值;对于关键字与运算符,采用一词一类得编码形式,仅需在二元式得CLASS字段上放置相应单词得类别码得助记符,V ALUE字段则为“空". 三、实现方法与环境 词法分析就是编译程序得第一个处理阶段,可以通过两种途径来构造词法分析程序.其一就是根据对语言中各类单词得某种描述或定义(如BNF),用手工得方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应得状态矩阵,该状态矩阵连同控制程序一起便组成了编译器得词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序得另外一种途径就是所谓得词法分析程序得自动生成,即首先用正规式对语言中得各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程

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

力学与材料学院 材料现代分析方法实验报告二 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可以观察到不同角度处的衍射强度(如图四)。 图二

编译原理实验报告总结

学年第学期《编译原理》实验报告 学院(系):计算机科学与工程学院 班级:11303070A 学号:11303070*** 姓名:无名氏 指导教师:保密式 时间:2016 年7 月

目录 1.实验目的 (1) 2.实验内容及要求 (1) 3.实验方案设计 (1) 3.1 编译系统原理介绍 (1) 3.1.1 编译程序介绍 (2) 3.1.2 对所写编译程序的源语言的描述 (2) 3.2 词法分析程序的设计 (3) 3.3 语法分析程序设计 (4) 3.4 语义分析和中间代码生成程序的设计 (4) 4. 结果及测试分析 (4) 4.1软件运行环境及限制 (4) 4.2测试数据说明 (5) 4.3运行结果及功能说明 (5) 5.总结及心得体会 (7)

1.实验目的 根据Sample语言或者自定义的某种语言,设计该语言的编译前端。包括词法分析,语法分析、语义分析及中间代码生成部分。 2.实验内容及要求 (1)词法分析器 输入源程序,输出对应的token表,符号表和词法错误信息。按规则拼单词,并转换成二元形式;滤掉空白符,跳过注释、换行符及一些无用的符号;进行行列计数,用于指出出错的行列号,并复制出错部分;列表打印源程序;发现并定位词法错误; (2)语法分析器 输入token串,通过语法分析,寻找其中的语法错误。要求能实现Sample 语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while语句、do while语句等。 (3)语义分析和中间代码生成 输入token串,进行语义分析,修改符号表,寻找其中的语义错误,并生 成中间代码。要求能实现Sample语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while 语句、do while语句等。 实验要求:功能相对完善,有输入、输出描述,有测试数据,并介绍不足。3.实验方案设计 3.1 编译系统原理介绍 编译器逐行扫描高级语言程序源程序,编译的过程如下: (1).词法分析 识别关键字、字面量、标识符(变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。 (2).语法分析 一个语句看作一串记号(Token)流,由语法分析器进行处理。按照语言的文法检查判定是否是合乎语法的句子。如果是合法句子就以内部格式保存,否则报错。直至检查完整个程序。 (3).语义分析 语义分析器对各句子的语法做检查:运算符两边类型是否相兼容;该做哪些类型转换(例如,实数向整数赋值要"取整");控制转移是否到不该去的地方;是

编译原理标准实验报告

电子科技大学 实验报告 学生姓名:学号:指导教师: 实验地点:实验时间: 一、实验室名称:计算机学院软件工程实验室 二、实验项目名称:词法分析器的设计与实现 三、实验学时:4学时 四、实验原理 1.编译程序要求对高级语言编写的源程序进行分析和合成,生成目标程序。词法分析是对源程序进行的首次分析,实现词法分析的程序为词法分析程序。 2.词法分析的功能是从左到右逐个地扫描源程序字符串,按照词法规则识别出单词符号作为输出,对识别过程中发现的词法错误,输出相关信息。 3.状态转换图是有限有向图,是设计词法分析器的有效工具。 五、实验目的 通过设计词法分析器的实验,使同学们了解和掌握词法分析程序设计的原理及相应的程序设计方法,同时提高编程能力。 六、实验内容 实现求n!的极小语言的词法分析程序,返回二元式作为输出。 七、实验器材(设备、元器件) 1.操作系统:Windows XP

2.开发工具:VC6.0 3.普通PC即可 八、实验步骤 (1)启动VC6.0,创建空白工程项目。选择菜单中的“文件”->“新建”->“项目”,在弹出的对话框中,左边的“项目类型”框中,选择“Visual C++ 项目”,在右边框中,选择“空项目(.Net)”,在对话框下边,选择工程文件存放目录及输入名称,如Example1,单击“确定”。 (2)建立相应的单词符号与种别对照表; (3)根据状态转换图编写相应的处理函数; (4)完成词法分析器; (5)编译与调试以上程序; (6)生成相应的*.dyd文件,作为后面语法分析的输入文件。 九、实验数据及结果分析

可以对源程序进行词法分析,如果有错给出出错信息和所在行数,如果无错则生成二元式文件。 十、实验结论 本实验程序较好地完成了词法分析程序的设计与实现,能够对所给文法的程序进行词法分析,在没有词法错误的时候生成相应的二元式文件。该实验程序可一次性给出源程序中的词法错误。 十一、总结及心得体会 通过该实验,对词法分析程序的设计,以及运用C语言进行编程有了更深刻的理解,同时加深了自己对词法分析程序的原理的理解与掌握,提高了自己的动手能力。 十二、对本实验过程及方法、手段的改进建议 程序设计合理,代码可进一步优化。 报告评分: 指导教师签字:

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

材料分析与表征方法实验报告 热重分析实验报告 一、实验目的 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曲线先升后降,在

材料分析方法之课后习题答案

材料结构显微分析 内部资料 姓名: 版权所有 翻版必究 编号: 绝密文件

目录 第一章材料X射线衍射分析----------------------------------------------------------------------------1 第二章X射线衍射方向----------------------------------------------------------------------------------1 第三章X射线衍射强度----------------------------------------------------------------------------------2 第四章多晶体分析方法----------------------------------------------------------------------------------3 第八章电子光学基础-------------------------------------------------------------------------------------4 第九章透射电子显微镜----------------------------------------------------------------------------------5 第十章电子衍射-------------------------------------------------------------------------------------------7 第十一章晶体薄膜衍衬成像分析----------------------------------------------------------------------8 第十三章扫描电子显微镜-------------------------------------------------------------------------------10 第十五章电子探针显微分析----------------------------------------------------------------------------10

编译原理实验报告

学生学号实验课成绩 武汉理工大学 学生实验报告书 实验课程名称编译原理 开课学院计算机科学与技术学院 指导老师姓名饶文碧 学生姓名 学生专业班级 —学年第学期

实验课程名称:编译原理 实验项目名称单词的词法分析实验成绩 实验者专业班级组别 同组者实验日期 第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 完成对某一种常用高级语言(如Pascal、C语言、PL/0语言)的各类单词进行词法分析,即对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词;并把其转换成属性字输出。 实验要求: (1)选择常用高级程序设计语言(如 Pascal、C语言、PL/0语言)的源程序作为词法分析对象。 (2)根据教学要求和学生具体情况,从上列语言之一中选取它的一个适当大小的子集,可以选取一类典型单词,也可以尽可能使各种类型的单词都能兼顾到。其基本要求是:对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词,并把其转换成属性字输出。 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) #include #include #include #include char *table[7]={" ","main","int","if","then","else","return"},TOKEN[20],ch; //定义关键字 int lookup(char *TOKEN){ //关键字匹配函数 int m,i; for(i=1;i<6;i++){ if((m=strcmp(TOKEN,table[i]))==0) return(i); } return(0); } void out(int c,char *TOKEN){ //输出函数 printf("(%d,%s)\n",c,TOKEN); } void scanner(FILE *fp){ //扫描函数 char TOKEN[20]={'\0'}; char ch; int i,c; ch=fgetc(fp); //获取字符 指针fp并自动指向下一个字符 if(isalpha(ch)){ //判断该字符是否是字母

河北工业大学编译原理实验报告

编译原理实验报告 组员:韦廷廷(112455)、熊敏(112456)、马昊(113042) 任课老师:吴清

一、任务概述 本次实验我们要完成的任务主要是实现一个简单语言集的词法、语法和语义分析程序,验证实际编译系统的实现方法。我们组的分工并不是词法分析、语法分析、语义分析每人负责一个,而是先确定每种分析按照哪一种方法实现,然后每个人写出自己的想法,按照自己的想法实验,最后总结到一起,有问题大家一起讨论,共同商量解决的办法。 二、系统设计 实验采用的实现方法和依据: 语言中的各类单词符号及其分类码表

实验采用的实现方法和依据: 文法:E → T | E+T | E-T T → F | T*F | T/F F → i | (E) 三、系统实现(包括必要的框图,各.h和.c文件说明,所有函数功能的说明,数据结构、各种表格、变量等的说明,以及函数调用关系图等) (1)各.h和.c文件说明 Cifa.cpp的功能:字符串扫描识别。 Table.cpp的功能:存放SLR分析法需要用到的ACTION和GOTO表。 Yufa.cpp的功能:引用Cifa.cpp、Table.cpp两个文件进行语法、语义的分析。 (2)函数功能说明 词法分析部分函数说明: int lookup (char *token) //比较是否是关键字 int GetChar(char ch) //每调用一次,就把扫描指示器当前所指示的源程序字符送入字符变量ch,然后把扫描指示器前推一个字符位置。 int HandleError (void)//报错函数 int EXCUTE (int state, int symbol)//状态转换 int lookup (char *token) //比较是否是关键字

材料研究方法与分析测试实验

本科生实验报告 实验课程材料研究方法与分析测试实验 学院名称材料与化学化工学院 专业名称材料科学与工程(无机非金属方向) 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一四年12月15日——二〇一五年12月19日

填写说明 1、适用于本科生所有的实验报告(印制实验报告册除外); 2、专业填写为专业全称,有专业方向的用小括号标明; 3、格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水 笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形 式(上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

实验一扫描电镜实验(SEM) 一、实验目的 1、了解扫描电子显微镜的原理、结构; 2、运用扫描电子显微镜进行样品微观形貌观察。 二、实验原理 扫描电镜(SEM)是用聚焦电子束在试样表面逐点扫描成像。试样为块状或粉末颗粒,成像信号可以是二次电子、背散射电子或吸收电子。其中二次电子是最主要的成像信号。由电子枪发射的电子,以其交叉斑作为电子源,经二级聚光镜及物镜的缩小形成具有一定能量、一定束流强度和束斑直径的微细电子束,在扫描线圈驱动下,于试样表面按一定时间、空间顺序作栅网式扫描。聚焦电子束与试样相互作用,产生二次电子发射以及背散射电子等物理信号,二次电子发射量随试样表面形貌而变化。二次电子信号被探测器收集转换成电讯号,经视频放大后输入到显像管栅极,调制与入射电子束同步扫描的显像管亮度,得到反映试样表面形貌的二次电子像。扫描电镜由下列五部分组成,如图1(a)所示。各部分主要作用简介如下:

相关文档
相关文档 最新文档