CP实验二LL(1)分析法

CP实验二LL(1)分析法
CP实验二LL(1)分析法

河南工业大学实验报告

课程编译原理实验名称实验二 LL(1)分析法

院系____信息科学与工程学院 ___ 专业班级__ _

姓名_______ xxx ________ 学号__ ______

指导老师: xxx 日期 2016/4/29 一.实验目的

1.掌握LL(1)分析法的基本原理;

2.掌握LL(1)分析表的构造方法;

3.掌握LL(1)驱动程序的构造方法。

二.实验内容及要求

根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对预测分析LL(1)分析法的理解。

对下列文法,用LL(1)分析法对任意输入的符号串进行分析:

(1)E->TG

(2)G->+TG

(3)G->ε

(4)T->FS

(5)S->*FS

(6)S->ε

(7)F->(E)

(8)F->i

程序输入一以#结束的符号串(包括+*()i#),如:i+i*i#。输出过程如下:

步骤分析栈剩余输入串所用产生式

1 E i+i*i# E->TG

... ... ... ...

三.实验环境

PC机一台

Windows操作系统

实验语言: C语言

Code::Blocks 集成开发环境

四.实验过程及结果

过程一:编写实验源代码

#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 输入串长度

typedef struct type // 产生式类型定义

{

char uppercase; // 大写字符

char array[5]; // 产生式右边字符

int length; // 字符个数

} type;

type e,t,g,g1,s,s1,f,f1; // 结构体变量

type C[10][10]; // 预测分析表

void print() // 打印输出分析栈

{

int a;

for(a=0; a<=top+1; a++)

printf("%c",A[a]);

printf("\t\t");

}

void printleft() // 输出剩余串

{

int j;

for(j=0; j

printf(" ");

for(j=b; j<=l; j++)

printf("%c",B[j]);

printf("\t\t\t");

}

int main()

{ int m,n,k=0,flag=0,finish=0,count=0; char ch,x;

type cha; // 用来接受C[m][n],把文法产生式赋值结构体 e.uppercase='E'; strcpy(e.array,"TG"); e.length=2; t.uppercase='T'; strcpy(t.array,"FS"); t.length=2;

g.uppercase='G'; strcpy(g.array,"+TG"); g.length=3; g1.uppercase='G'; g1.array[0]='^'; g1.length=1;

s.uppercase='S'; strcpy(s.array,"*FS"); s.length=3; s1.uppercase='S'; s1.array[0]='^'; s1.length=1;

f.uppercase='F'; strcpy(f.array,"(E)"); f.length=3; f1.uppercase='F'; f1.array[0]='i'; f1.length=1;

for(m=0; m<=4; m++) // 初始化分析表

for(n=0; n<=5; n++)

C[m][n].uppercase='N';

// 填充分析表

C[0][0]=e; C[0][3]=e; C[1][1]=g;

C[1][4]=g1; C[1][5]=g1; C[2][0]=t;

C[2][3]=t; C[3][1]=s1; C[3][2]=s;

C[3][4]=C[3][5]=s1; C[4][0]=f1; C[4][3]=f;

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

printf("Author:司如言 \nIDCard: 201316010508 \nClass:计科F1301\n"); printf("--------------------------------\n");

printf("提示:程序只能解析由'+','-','*','/','i','(',')'构成的以'#'结束的字符串\n");

printf("字符串:");

do/*读入分析串*/

{ scanf("%c",&ch);

if((ch!='i')&&(ch!='+')&&(ch!='*')&&(ch!='(')&&(ch!=')')&&(ch!='-')&&(ch!=' /')&&(ch!='#'))

{

printf("位置:%d 存在非法字符!\n",count++);

exit(1);

}

B[j]=ch; j++; count++;

} while(ch!='#');

l=j; // 分析串长度

ch=B[0]; // 当前分析字符

A[top]='#'; A[++top]='E'; // '#','E'进栈

printf("步骤\t\t分析栈\t\t剩余字符\t\t所用产生式\n");

do

{ x=A[top--]; // x为当前栈顶字符

printf("%d",k++); printf("\t\t");

for(j=0; j<=5; j++) // 判断是否为终结符

if(x==v1[j])

{ flag=1; break; }

if(flag==1) // 如果是终结符

{ if(x=='#')

{

finish=1; // 结束标记

printf("acc!\n");// 接受

getchar(); getchar(); exit(1);

}

if(x==ch)

{

print(); printleft(); printf("%c匹配\n",ch);

ch=B[++b]; // 下一个输入字符

flag=0; // 恢复标记

}

else // 出错处理

{

print(); printleft();

printf("%c出错\n",ch); // 输出出错终结符

exit(1);

}

}

else // 非终结符处理

{

for(j=0; j<=4; j++)

if(x==v2[j])

{

m=j; // 行号

break;

}

for(j=0; j<=5; j++)

if(ch==v1[j])

{

n=j; // 列号

break;

}

cha=C[m][n];

if(cha.uppercase!='N') // 判断是否为空

{ print(); printleft();

printf("%c->",cha.uppercase); // 输出产生式

for(j=0; j

printf("%c",cha.array[j]);

printf("\n");

for(j=(cha.length-1); j>=0; j--) // 产生式逆序入栈 A[++top]=cha.array[j];

if(A[top]=='^') // 为空则不进栈

top--;

}

else // 出错处理

{

print(); printleft();

printf("%c出错\n",x); // 输出出错非终结符

exit(1);

}

}

}

while(finish==0); return 0;

}

过程二:运行结果截图

2.1 编写的方法出现Bug,红色警告如截图示:

2.2 修改后出现的Bug,如红色警告截图所示:

2.3修改调试成功后,错误的运行结果如图所示:

2.4 修改调试成功后,正确的运行结果如图所示:

五.实验中的问题及心得

LL(1)分析使用显式栈而不是递归调用来完成分析。以标准方式表示这个栈非常有用,这样LL(1)分析程序的动作就可以快捷地显现出来。输入符号由左列向右。美元符号标出了输入的结束(它与由扫描程序生成的 EOF 记号相对应)。

第二次实验的主要内容是根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。由于课堂上对LL(1)分析程序理解的不是很很透彻。根本不知道从何下手,当然更不用说编写代码。

开始自己摸索的很慢,后来通过和同学的讨论以及上网查阅相关资料,对LL(1)文法有了较深的理解,对实验内容有了进一步的认识。通过讨论和不断地调试、摸索,最后解决了一些细节上的难题。如果对LL(1)文法理论知识不是太熟悉,完成实验真的是难上加难。

通过这次实验,让我理解到小组合作的必要性。有时候一种思想会导致进度很慢,小组讨论后解决问题的方式就多了很多,并且问题可以很快的得到解决。互相交流加深了对实验的理解以及对理论知识的巩固。自己对预测分析LL(1)分析法的理解和掌握LL(1)分析法的基本原理、LL(1)分析表的构造方法和LL(1)驱动程序的构造方法等方面有了明显的提高。实验下来还是很有收获的,更加锻炼了自己的动手能力。

通过对实验二程序的分析,让我进一步了解LL(1)算法的思想以及它的进一步程序实现,让我对它的了解从简单的理论上升到程序实现的级别,有理论上升到实际,让我更清楚它的用途。

实验一 词法分析

实验一词法分析 有如下算术运算文法: 1) E->E+T 2) E->E-T 3) E->T 4) T->T*F 5) T->T/F 6) T->F 7) F->(E) 8) F->I 9) I->十进制实数|十进制整数|十六进制实数| 十六进制整数|八进制实数|八进制整数 10) 十进制实数-> (0|(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9) *).(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9) * 11) 八进制实数-> 0(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* .(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7) * 12) 十六进制实数-> 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* .(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3| 4|5|6|7|8|9|a|b|c|d|e|f) * 13) 十进制整数-> 0 | (1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9) * 14) 八进制整数-> 0(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7) * 15)十六进制整数-> 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f) (0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f) * 单词分类: 运算符:+ - * / () 常数: 十进制实数 十进制整数 十六进制实数 十六进制整数 八进制实数 八进制整数 1. 实验目的 实现一个词法分析程序,将输入字符串流分解成 单词流供语法分析使用。 2. 实验要求 输入算术运算式,输出分解后的单词流,例如: 输入(0124.3+0x35a.4f)*12 输出:

实验一词法分析实验报告

实验一词法分析 一、实验目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示) 二、实验要求 使用一符一种的分法 关键字、运算符和分界符可以每一个均为一种 标识符和常数仍然一类一种 三、实验内容 功能描述: 1、待分析的简单语言的词法 (1)关键字: begin if then while do end (2)运算符和界符: := + –* / < <= <> > >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义: ID=letter(letter| digit)* NUM=digit digit * (4)空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。 2、各种单词符号对应的种别码 图 1

程序结构描述: 图 2 四、实验结果 输入begin x:=9: if x>9 then x:=2*x+1/3; end # 后经词法分析输出如下序列:(begin 1)(x 10)(:17)(= 18)(9 11)(;26)(if 2)……如图3所示:

图3 输入private x:=9;if x>0 then x:=2*x+1/3; end#后经词法分析输出如下序列:(private 10)(x 10)(:17)(= 18)(9 11)(;26)(if 2)……如图4所示: 图4 显然,private是关键字,却被识别成了标示符,这是因为图1中没有定义private关键字的种别码,所以把private当成了标示符。 输入private x:=9;if x>0 then x:=2*x+1/3; @ end#后经词法分析输出如下序列:(private 10)(x 10)(:17)(= 18)(9 11)(;26)(if 2)……如图5所示

实验报告总结报告的优秀范文

实验报告总结报告的优秀范文 总结报告是会议领导同志对会议召开的情况和会议所取得的成果进行总结的陈述性文件。写总结报告时应注意明确目的,突出重点,切不可面面俱到;要鼓舞人心,富有号召力。小编精选了一些关于总结报告的优秀范文,让我们一起来看看吧。 实验报告总结(一): 学校实验室是完成教学任务的重要场地,是根据实验教学大纲中要求培养学生初步的科学实验能力和开展科技活动的场所,并对开展实验教学,提高教学质量具有十分重要的作用。对于一个拥有各类实验室且实验仪器基本配套齐全的学校来讲,管理是关键,因为只有管理跟上去了,才能更合理、有效地使用好各类仪器设备。对此,作为一所中学的实验室人员,我们在长期的工作实践中做了如下几个方面的工作: 一、努力提高自身素质 实验人员是科学管理实验室的基本队伍,在整个实验室的管理和运作中起着决定性的作用。一个好的实验员,可以改变整个实验室的面貌,推动实验教学的发展;而一个差的实验员,可导致整个实验室变成脏、乱、差的劣境,从而使实验教学无法正常进行。因此,我们每一个实验员,一方面在平时加强政治学习,提高自身素质,使大家在平凡的点滴工作中认识到这项工作的重要性,从而更加热爱本职工作。另一方面,我们还不断去兄弟学校和单位进行学习交流,参加实验设备和成果展览。这不仅使我们开阔了视野,了解了实验仪器发展的新情况,更看到了兄弟单位的先进管理经验,有利于我们在今后的工作中加以借鉴和改进。

同时学校还鼓励我们总结自己的经验,撰写论文,或进行业余进修,以增强我们在各方面的修养。由于平时有着严格的要求和业务考核,现有的每一位理、化、生实验员都能很好地胜任自己的工作,做到实验室整洁有序,实验准备快捷无误,从而保证了各项教学实验的顺利完成。 二、健全各项规章制度 俗话说没有规矩,不成方圆。我们学校根据上级的规定和本校的具体情况,制定了比较健全的规章制度:如《实验室管理守则》、《学生实验守则》、《实验室工作人员职责》、《实验室安全防护制度》等,进而做到使每项工作都有章可循,有据可查。除此以外,我们还对危险品的使用实行了领用登记手续,从而保证了对危险品的安全管理。由于各位实验员的同心协力,齐抓共管,保证了各项制度的顺利贯彻和实验室工作的正常开展。 三、科学管理仪器设备 仪器设备的规范管理是合理使用仪器的保证,为此我们做了以下的工作: 首先,我们根据建帐要求,设立了总帐、分类明细帐、低值易耗帐,并建立了橱卡,注明仪器的编号、名称、数量。平时对购进或调拨来的仪器设备物品都按统一编号顺序进行登记入帐,且对消耗掉的物品及时记入各分类记录薄上。每学期末都进行一次帐、物、卡核实,并把报废报损的仪器遣报损单,经领导批审后销帐,ZUI后把核查的数目转入总帐、分类帐上,这样就能做到巾长物卡三统一了。

实验1 词法分析器

青岛理工大学 实 验 报 告 实验课程: 编译原理 实验日期: 2014 年 5月28 日 交报告日期:2014 年6月4日 成绩: 实验地点:现代教育技术中心101(计算机实验室) 计算机工程 学院,计算机科学与技术 专业, 班级:计算113 实验指导教师: 批阅教师: 一、实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、实验要求 1. 待分析的简单语言的词法 1) 关键字: begin if then while do end 所有关键字都是小写。 2) 运算符和界符: : = + – * / < <= <> > >= = ; ( ) # 3) 其他单词是标识符(ID )和整型常数(NUM ),通过以下正规式定义: ID=letter (letter| digit )* NUM=digit digit * 4) 空格由空白、制表符和换行符组成。空格一般用来分隔ID 、NUM,运算符、界符和关 键字,词法分析阶段通常被忽略。

2.各种单词符号对应的种别码 3.词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码;token为存放的单词自身字符串;sum为常数。 例如:对源程序 begin x:=9; if x>0 then x:=2*x+1/3; end# 经词法分析后输出如下序列:(1,beigin) (10,x) (18,:=) (11,9) (26,;) (2,if)......

三、算法思想 1.主程序示意图 主程序示意图如下所示: 其中初值包括如下两个方面。 1)关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在关键字表,当扫描程序识别出标识符时,查关键字表。若查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表作为一个字符串数组,其描述如下: char *rwtab[22] = {"begin","if","else","then","while","do","for","switch","case", "until","break","goto","constant","return", "int","float","double","string","char","short","long","end"}; 2)程序中的主要变量为syn,token和sum。 2.扫描子程序的算法思想 首先设置3个变量: ①token用于存放构成单词符号的字符串; ②sum用于存放整型单词; ③syn用于存放单词符号的种别码。

实验一词法分析实验报告

实验一词法分析实验报告

实验一词法分析 一、实验目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示) 二、实验要求 使用一符一种的分法 关键字、运算符和分界符可以每一个均为一种标识符和常数仍然一类一种 三、实验内容 功能描述: 1、待分析的简单语言的词法 (1)关键字:

begin if then while do end (2)运算符和界符: := + –* / < <= <> > > = = ; ( ) # (3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义: ID=letter(letter| digit)* NUM=digit digit * (4)空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。 2、各种单词符号对应的种别码 图 1

程序结构描述: 是 否 是 调用scanner() 字母 数 其他 运算符、 符号 界符等符号 否 是 图 2 四、实验结果 输入begin x:=9: if x>9 then x:=2*x+1/3; end # 后经词法分析输出如 变量忽略 是否输入返 拼数 syn=11返 对不同报拼字是否关syn 为对syn=10

课题实验前测后测数据对比分析

《小学数学小组合作学习的有效性研究》 前后测统计与对比分析 实验人员:但丽娟 后测类别:问卷 后测时间:2018.1.5 调查目的:通过这一阶段的研究,教师能否通过课堂游戏,提高课堂效率,英语游戏教学模式是否真的有效。 调查对象:实验班——三(一)30人非实验班——三(二)30人问卷题目: 1、你在学习英语的过程中,你觉得英语难吗? A、难 B、一般 C、容易 2、在英语课中你喜欢课堂游戏吗? A、喜欢 B、不喜欢 C、无所谓 3、在游戏活动中游戏能激发学习英语的兴趣吗? A、能 B、偶尔 C、不能 4、你的老师在英语课上是否开展过“课堂游戏”?() A、经常开展 B、偶尔开展几次 C、从来没有开展过 5、开展课堂游戏时,有没有体验到游戏带来的乐趣?() A、很有乐趣 B、一般般 C、不喜欢 6、游戏活动后,老师对同学们作了()评价 A、没有评价,继续上课 B、对个别表现较好的同学给予表 扬奖励 C、综合评价每个小组的表现

7、在游戏活动中,老师所讲的游戏规则都听懂了吗? A、完全听懂 B、基本懂 C、不太懂 8、你觉得游戏教学给你们带来什么作用? A、提高兴趣 B、培养学习英语习惯 C、爱好英语 9、在玩游戏的同时,你学到了英语知识吗? A、学到了,兴趣也提高了 B、学到了一些 C、没有学到 10、你认为老师应该以游戏教学为主还是以传统的为主?() A、游戏教学 B、传统教学 C、游戏教学为主,传统教学为辅问卷统计(实验前) 问卷统计(实验后)

简要对比分析 通过调查发现,实验因子实验前后发生了巨大的变化。实验前只有百分之三十的学生老师课堂提问时,喜欢举手发言,参与课堂的人数占百分之五十左右,不是很高,试验后有百分之百的学生喜欢课堂游戏教学,说明学生认识到这种学习方式有助于提高学生的学习兴趣。从英语课堂是否学到知识的百分比提高很多可以看出,学生乐于接受游戏教学,说明课堂游戏教学模式起到了一定的实效。 93.3%的同学明确表示肯定课堂游戏教学,表现出极大的学习热情和积极性,在以后的学习中我们要给这些同学充分的机会和展示自己的舞台,希望在这些同学的带领下,每个同学都能体会到英语学习的乐趣,在获取知识的同时培养自己的学习习惯。试验后,学生在小组合作中从不敢说,不愿说到每位都愿意积极讨论、交流,这都是实验的积极效果。而非实验因子,实验前后变化不明显。从以上问卷的调查统计及分析情况看,《运用游戏提高小学英语课堂效率的行动研究》的实验研究取得了预期的成效。

山东建筑大学系统工程系统动力学实验报告层次分析法

系统工程实验报告 实验项目名称:层次分析法应用实验班级: 学号: 姓名: 日期: 日

一、实验目的 熟悉层次分析法的基本原理及其基本步骤,掌握层次单排序和总排序的计算过程。在EXCEL软件中,应用层次分析法解决实际中遇到的系统评价问题。 二、实验任务 交通工具的选择是多目标决策问题,结合自己的具体情况,根据层次分析法的基本原理,对具体的问题进行分析。所有的运算过程需要在EXCEL软件中完成。 三、实验原理 1.层次分析法简介 层次分析法(Analytic Hierarchy Process,简称 AHP)是美国运筹学家 T. L. Saaty 教授于上世纪 70 年代初期提出的系统评价方法,这种方法将定性分析和定量分析结合起来,利用较少的定量信息使决策的思维过程数学化,是对难于完全定量的复杂系统作出决策的模型和方法。 AHP法首先把问题层次化,按问题性质和总目标将此问题分解成不同的层次,构成一个多层次的分析结构模型。将每一层次的各要素相对于其上一层次某要素进行两两比较判断,得到其相对重要程度的比较尺度,建立判断矩阵。通过计算判断矩阵的最大特征根及其相对应的特征向量,得到各层要素对上层某要素的重要性次序,建立相对权重向量。最后自上而下地用上一层次各要素的组合权重为权数,对本层次各要素的相对权重向量进行加权求和,得出各层次要素关于系统总体目标的组合权重,从而根据最终权重的大小进行方案排序,为选择最佳方案提供依据。 层次分析法的特点: (1)分析思路清楚,可将系统分析人员的思维过程系统化、数学化和模型化; (2)分析时需要的定量数据不多,但要求对问题所包含的因素及其关系具体而明确;(3)这种方法适用于多准则、多目标的复杂问题的决策分析,广泛用于地区经济发展方案比较、科学技术成果评比、资源规划和分析以及企业人员素质测评。 2.层次分析法基本步骤 第一步:明确问题,建立系统的递阶层次结构。 弄清问题的范围,了解问题所包含的因素,确定出因素之间的关联关系和隶属关系,并且建立递阶层次结构。

实验1-3-《编译原理》词法分析程序设计方案

实验1-3 《编译原理》S语言词法分析程序设计方案 一、实验目的 了解词法分析程序的两种设计方法之一:根据状态转换图直接编程的方式; 二、实验内容 1.根据状态转换图直接编程 编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号)流文件输出。在此,词法分析程序作为单独的一遍,如下图所示。 具体任务有: (1)组织源程序的输入 (2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文件 (3)删除注释、空格和无用符号 (4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误信息输出到屏幕上。 (5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储),当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否则返回0并且填写符号表或常量表。 标识符表结构:变量名,类型(整型、实型、字符型),分配的数据区地址 注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入。 常量表结构:常量名,常量值 三、实验要求 1.能对任何S语言源程序进行分析 在运行词法分析程序时,应该用问答形式输入要被分析的S源语言程序的文件名,然后对该程序完成词法分析任务。 2.能检查并处理某些词法分析错误 词法分析程序能给出的错误信息包括:总的出错个数,每个错误所在的行号,错误的编号及错误信息。 本实验要求处理以下两种错误(编号分别为1,2): 1:非法字符:单词表中不存在的字符处理为非法字符,处理方式是删除该字符,给出错误信息,“某某字符非法”。 2:源程序文件结束而注释未结束。注释格式为:/* …… */ 四、保留字和特殊符号表

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;

实验数据和结果的分析

专题四:实验数据和结果的分析 【例题】2007广东高考22. “碘钟”实验中,3I- + S2O82- = I3- + 2SO42-的反应速率可以用I3-与加入的淀粉溶液显蓝色的时间t来度量,t越小,反应速率越大。某探究性学习小组在20℃进行实验,得到的数据如下表: 实验编号①②③④⑤ c(I-)/mol·L- 0.040 0.080 0.080 0.160 0.120 c (S2O82-)/mol·L-0.040 0.040 0.080 0.020 0.040 t /s 88.0 44.0 22.0 44.0 t1 回答下列问题: (1)该实验的目的是。 (2)显色时间t1= 。 (3)温度对该反应的反应速率的影响符合一般规律,若在40℃下进行编号③对应浓度的实验,显色时间t2的范围为(填字母) A、<22.0s B、22.0~44.0s C、>44.0s D、数据不足,无法判断 (4)通过分析比较上表数据,得到的结论是 _________________________________ 。【分析】 1、命题意图分析 该高考题以“碘钟”实验为背景,考查了学生对影响化学反应速率的外界因素,如浓度、温度及其规律的认识和理解,学生对图表的观察、分析以及处理实验数据归纳得出合理结论 的能力,学生对实验数据的分析、整理、归纳等方面的思维能力。体现出考纲对学生根据实 ... 验试题要求,分析或处理实验数据,得出合理结论......................的要求。 2、审题要点 该类题目的审题要点主要在于数据图表的解读以及如何将图标数据中的信息与实验目的紧密联系。本题的实验目的是测定反应速率,给出的实验数据是反应物的浓度和反应时间, 则该实验应该主要探讨的是反应物浓度与反应速率 ..........的关系,只有明确了实验目的,才能找准要分析的目标,有的放矢。 3、解题思路分析 本题探讨的是反应物浓度对化学反应速率的影响,但是题目给出的反应物浓度有两种,如何综合考虑两种反应物浓度对反应速率的影响呢?我们可以将其作为两个变量,分析当其中一个变量(即一种反应物浓度)保持不变时,反应速率的变化,然后分析当两个变量同时变化一定的倍数时,反应速率的变化,就可以看到其中的规律。

大数据实验报告

学生实验报告册 (理工类) 课程名称:大型数据库技术专业班级:12计算机科学与技术(1)学生学号:学生姓名: 所属院部:计算机工程学院指导教师:陈爱萍

2014——20 15学年第2 学期 金陵科技学院教务处制

实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:Oracle数据库安装与配置实验学时: 1 同组学生姓名:实验地点:1316 实验日期:2015/3/27 实验成绩: 批改教师:陈爱萍批改时间:

实验1:Oracle数据库安装与配置 一、实验目的和要求 (1)掌握Oracle数据库服务器的安装与配置。 (2)了解如何检查安装后的数据库服务器产品,验证安装是否成功。 (3)掌握Oracle数据库服务器安装过程中出现的问题的解决方法。 (4)完成Oracle 11g数据库客户端网路服务名的配置。 (5)检查安装后的数据库服务器产品可用性。 (6)解决Oracle数据库服务器安装过程中出现的问题。 二、实验设备、环境 设备:奔腾Ⅳ或奔腾Ⅳ以上计算机 环境:WINDOWS 7、ORACLE 11g中文版 三、实验步骤 (1)从Oracle官方网站下载与操作系统匹配的Oracle 11g数据库服务器和客户机安装程序。 (2)解压Oracle 11g数据库服务器安装程序,进行数据库服务器软件的安装。

前后测统计与对比分析合集

《联系实际取材、巧创数学教学情境,培养小 学高年级学生分析、解决问题的能力》 前后测统计与对比分析 实验教师——陈海 后测类别:问卷 后测时间:2010、4、1 调查目的: 了解通过子课题的实验研究学生对数学的热爱程度,关注数学情境创设的状况,及学生分析、解决问题的能力是否有提高。根据实验因子及非实验因子实验前后的变化,验证子课题的研究是否取得了预期的成效。 调查对象:实验因子――五年二班30名学生;非实验因子――五年一班35名 学生 主持人:陈海 问卷题目: ()1、你现在喜欢上数学课吗?A、喜欢B、一般C、不喜欢 ()2、你喜欢上什么样的数学课? A、数学课上,在生动、形象的生活情景中,能够提出具有思考性的数学问题,并通过自主探究、小组合作的方式,在教师的指导下解决问题 B、数学课上教师讲,我听 C、教师直接提出问题,我自己研究,在解决不了的情况下,听教师讲()3、你不喜欢上什么样的数学课? A、教师讲,我们听,不用动脑想的数学课 B、数学问题脱离了我们的实际生活,理解起来很吃力的数学课。或是课上热热闹闹,但课后解决问题我感觉仍然无从下手 C、以上两种数学课我都不喜欢 ()4、数学课上你愿意并能够做做到主动参与数学问题的探究吗? A、自己主动参与数学问题的探究 B、在教师的要求下参与问题的探究 C、以旁观者的态度面对问题的探究 ()5、数学课上,教师提出的问题,你怎样才能够解决? A、经过思考、探究才能解决 B、不需要思考,结论随口而出 C、问题很难,摸不着边际,无法回答 ()6、你喜欢怎样的教学情境 A、联系我们的实际具实践性、趣味性的情境 B、联系我们的生活实际蕴含有思考空间的问题的情境 C、不喜欢任何情境,只要教师把所要学习的内容讲清楚就可以了 ()7、现在的数学课,有情境的创设吗? A、经常有 B、有时有 C、没有 ()8、如果有,多是哪种情境? A、书上的情境 B、联系我们的生活实际蕴含有思考空间的问题情境 C、联系我们

层次分析法(20210228082427)

湖南科技学院实验报告

实验内容: 问题描述:某企业由于生产效益好,年底取得一笔利润,领导决定拿出一部分资金分别用于: (1)为企业员工发年终奖金。(2)扩建集体福利设施;(3)引进高薪技术人才和设备;为了促进企业的进一步发展,在制定分配方案时,主要考虑的因素有:调动员工的积极性,提高企业质量,改善企业员工的生活条件。 当然上述三个方面都要考虑到,但困难在于,年终奖发多少?扩建集体福利设施支出多 少?拿多少资金用于引进高薪技术人才和设备。 试建立层次分析法模型,提出一个较好的资金分配方案。 层次分析法(Analytic Hierarchy Process )简称AHP法,是美国著名的运筹学家 T. L. Satty于1973年提出的,是一种定性与定量分析相结合的多目标决策分析方法。AHP 吸收利用行为科学的特点,将决策者的经验判断给予量化,在目标(因素)结构复杂而且缺乏必要的数据情况下,采用此方法较为实用,是系统科学中常用的一种系统分析方法。从处理问题的类型看,主要是决策、评价、分析、预测等。 AHP g求的递阶层次结构一般由以下三个层次组成: * 目标层(最高层):指问题的预定目标; * 准则层(中间层):指影响目标实现的准则; * 方案层(最低层):指促使目标实现的措施; 合理分配

模型的假设: (1) 假设这笔资金不会因为发生紧急情况 而被调用。 (2) 假设这笔资金都以供选择方案的形式用于企业的发展。 目标层为乙准则层为C,调动职工积极性、提高企业技术水平、改善职工生活条件分别用 C1、C2、C3来表示,措施层为P ,发奖金、扩建福利事业、引进新设备分别用 P1、P2、P3来 表示。 运用层次分析法建立数学模型,目标层,准则层,方案层分别如下: 合理分配利润 求解过程: 1.构造判断矩阵Z-C 判断矩阵表示在层次结构模型中,针对上一层次某元素来说,本层次有关元素之间相对重要 性的比较。如果A 层因素中Ak 与下一层次C 中的G ,C 2厂,C n 相关,则判断矩阵可用表示为: 缶 C 12 Gn C 21 C 22 C 2n C n2 Gn J q >0,q "/C jjg i,j “,2…n ); C j 表示对Ak 而言,C i 对C j 相对重要性的数值表 示。此时称A 为正互反矩阵。当判断矩阵中元素满足 C ij = Ck C kj (i,j,k 二1,2, ,, ,n )时, 则称判断具有一致性 由于指标的确定和分值的给定带有主观臆断性,为减小主观因素的影响,我们采用 T ?L ? Satty 提出的“ 1~9比率标度法”表进行定量评价,其标度含义如表 2所示: 目标层z : 准则层C : 调动积极性cl 提高企业质量C2 改善生活条件c3 方案层p : 发奖金pl 扩建福利设施p2 引进人才和设备p3 其中,

词法分析器实验报告

词法分析器实验报告 词法分析器设计 一、实验目的: 对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.数据收集不真实 如《摆的研究》一课教学中,由于测量的次数多,时间紧,而测同一摆重或同一摆长前后时间又几近相同,于是有小组就根据前面的实验数据,推测了后面的数据。又如教学《热是怎样传递的》一课时,有一小组的火柴掉下来的顺序明明不是有规律地从左往右,但听到其他小组火柴都是从左往右有顺序地掉下来,于是他们也修改了自己的数据。 2.数据收集不准确 如教学《水和食用油的比较》一课时,教师引导学生把水和食用油分别装入相同的试管中来比较,结果教学中却出现了相反的现象——装油的试管比装水的试管还要重,原来是装水的试管壁薄,装油的试管壁厚,实验准备时教师并没有发现这个现象,结果出现了上述问题。 3.数据收集不全面 教师在收集数据过程中,各小组虽然都做了同一个实验,但教师只挑选1-2个组的实验表进行展示汇报,而其他组的实验数据一概不论,就草草作结论,这样的实验过程和结果很难说服所有人,也很容易出错。 (二)数据整理存在的问题 1.整理方式简单 课堂上教师比较重视设计小组或个人填写的实验数据表格,但对全班汇总的实验数据形式容易忽视,呈现方式比较简单。在数据呈现时,要么逐一呈现小组原始记录单,要么按小组顺序呈现数据,平时更少使用统计图来整理。黑板上数据显得杂乱无章,不易发现其中的规律。 2.数据取舍不清

3层结构实验报告

专业技能训练报告 学院:计算机学院 课程名称:网络应用开发专业技能训练 专业班级: 学生:学号: 学生:学号: 学生:学号: 指导教师:黄涛 完成时间:2015年6月27日

目录 1网络应用开发实验 (3) 1.1问题描述 (3) 1.2需求分析 (3) 1.3概要设计 (4) 1.4流程图 (4) 1.5详细设计 (5) 1.6调试分析 (20) 1.7运行结果及分析 (20) 《网络应用开发》评分表 (22)

1网络应用开发实验 1.1问题描述 一个数据库中,有两个数据表。其中custom,department表如下结构。 Custom与department的关系如下图所示。 设计一个基于Web的应用程序,采用3层结构的方式实现对custom,department 表中的记录进行:插入、修改、删除、查询的操作。 使用语言:C#语言 编译环境:visual studio 2013 1.2需求分析

使用三层架构来开发系统和,开发人员可以只关注整个结构中的其中某一层;可以很容易的用新的实现来替换原有层次的实现;可以降低层与层之间的依赖;有利于标准化;利于各层逻辑的复用;结构更加的明确;在后期维护的时候,极降低了维护成本和维护时间。 1.3概要设计 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。 我们先设计一个model,用于传递和记录相应表的一行数据值,简化传参的过程。然后设计数据访问层(DAL),用于对数据表的数据处理;同时设计一个相应的SQLhelper 类,用于对数据库的操作(增加、删除、修改、查询)进行封装。接着再设计业务逻辑层(BLL),用于操作数据访问层,解决具体业务问题,最后设计表现层,可用web页面或者winform页面,主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问 1.4流程图

词法分析的实验报告

《词法分析》实验报告

目录 目录错误!未定义书签。 1 实验目的错误!未定义书签。 2 实验内容错误!未定义书签。 TINY计算机语言描述错误!未定义书签。 实验要求错误!未定义书签。 3 此法分析器的程序实现错误!未定义书签。状态转换图错误!未定义书签。 程序源码错误!未定义书签。 实验运行效果截图错误!未定义书签。 4 实验体会错误!未定义书签。

实验目的 1、学会针对DFA转换图实现相应的高级语言源程序。 2、深刻领会状态转换图的含义,逐步理解有限自动机。 3、掌握手工生成词法分析器的方法,了解词法分析器的内部工作原理。 实验内容 TINY计算机语言描述 TINY计算机语言的编译程序的词法分析部分实现。 从左到右扫描每行该语言源程序的符号,拼成单词,换成统一的内部表示(token)送给语法分析程序。 为了简化程序的编写,有具体的要求如下: 1、数仅仅是整数。 2、空白符仅仅是空格、回车符、制表符。 3、代码是自由格式。 4、注释应放在花括号之内,并且不允许嵌套 TINY语言的单词 要求实现编译器的以下功能 1、按规则拼单词,并转换成二元式形式 2、删除注释行 3、删除空白符(空格、回车符、制表符) 4、列表打印源程序,按照源程序的行打印,在每行的前面加上行号,并且打印出每行包含的记号的二元形式 5、发现并定位错误 词法分析进行具体的要求 1、记号的二元式形式中种类采用枚举方法定义;其中保留字和特殊字符是每个都一个种类,标示符自己是一类,数字是一类;单词的属性就是表示的字符串值。 2、词法分析的具体功能实现是一个函数GetToken(),每次调用都对剩余的字符串分析得到一个单词或记号识别其种类,收集该记号的符号串属性,当识别一个单词完毕,采用返回值的形式返回符号的种类,同时采用程序变量的形式提供当前识别出记号的属性值。这样配合语法分析程序的分析需要的记号及其属性,生成一个语法树。

比对试验数据处理的3种方法

比对试验数据处理的3种方法 摘要引入比对试验的定义,结合两个实验室进行的一组比对试验数据实例,介绍比对试验数据处理的3种基本方法,即(:rubbs检验、F检验、t检验,并阐述三者关系。 在实验室工作中,经常遇到比对试验,即按照预先规定的条件,由两个或多个实验室或实验室内部 对相同或类似的被测物品进行检测的组织、实施和评价。实验室间的比对试验是确定实验室的检测能 力,保证实验室数据准确,检测结果持续可靠而进行的一项重要的试验活动,比对试验方法简单实用,广 泛应用于企事业、专业质检、校准机构的实验室。国家实验室认可准则明确提出,实验室必须定期开展 比对试验。虽然比对试验的形式较多,如:人员比对、设备比对、方法比对、实验室间比对等等,但如何 将比对试验数据归纳、处理、分析,正确地得出比对试验结果是比对试验成败的关键。 以下笔者结合实验室A和B两个实验室200年进行的比对试验中的拉力试验数据实例,介绍比对试验数据处理的3种最基本的方法,即格鲁布斯(Grubbs)检验、F检验、t检验。 1 数据来源情况 试样 在实验室的半成品仓库采取正交方法取样,样品为01. 15 mm制绳用钢丝。在同一盘上截取20 段长度为lm试样,按顺序编号,单号在实验室A测试,双号在实验室B测试。 试验方法及设备 试验方法见 GB/T 228-1987,实验室A : LJ-500(编号450);实验室B : LJ-1 000(编号2)。 测试条件 两实验室选择有经验的试验员,严格按照标准方法进行测试,技术人员现场监督复核,确认无误后 记录。对断钳口的试样进行重试。试验时两实验室环境温度(28 T )、拉伸速度(50 mm/min )、钳口距 离(150 mm)相同。 试验数据 测试得出的两组原始试验数据见表to 表1 实验室A,B试验数据 2 数据处理的方法步骤 基本统计处理 对两组原始试验数据进行基本的统计计算,求出最大值、最小值、平均值、极差、标准偏差等,结果 见表2。 表2 基本统计结果 格鲁布斯(Grubbs)检验 格鲁布斯检验是离散值检验的一种,主要目的是剔除异常数据,这种异常数据不是系统误差,也不 是随机误差,而是由过失误差引起的,这种数据应一律舍去。对任何一组数据进行处理,首先要检验其 是否存在有过失误差带来的异常数据,即进行离散值检验。格鲁布斯检验是离散值检验中最好的方 法,其具体步骤是:将一组数据从小到大按顺序排列:x1、x2、x3、……x n,其中x1可能为离散值,先求 出这组数据的平均值x及标准偏差S,然后求统计量T,若x1,为离散值,由T= (x-x1)/s;若x n为离散 值,则T= (x n-x)/s;所得结果T与格鲁布斯检验值表所得临界值T a, n值比较(注:a为显著性水平,即把正常值判为异常值之类错误的概率,n为样本量)。如果T≥T a, n,说明是离散值,必须舍去;反之,予以保留。 结合A,B实验室数据,我们分别求出各自最大、最小值的 T值(共4个),T Amin=(2 227. 8-2 195) /=;T Amax=(2 255一2 227. 8)/=;T Bmin=一2 190)/=2. 82; T Bmin=(2 240一2 220. 85)/10. 942=;查表(取σ= 0. 05 ) I T0. 05 ,100 = 3. 21,比较可知,T AminI T Amax x T Bmin x T Bmax:均小于T o. 05,100,不属于离散值,应予保留、 如果通过格鲁布斯检验出离散值,应剔除,然后重新进行统计计算,以更进行下一步的统计分析。 2. 3 F检验

实验报告总结(精选8篇)

《实验报告总结》 实验报告总结(一): 一个长学期的电路原理,让我学到了很多东西,从最开始的什么都不懂,到此刻的略懂一二。 在学习知识上面,开始的时候完全是老师讲什么就做什么,感觉速度还是比较快的,跟理论也没什么差距。但是之后就觉得越来越麻烦了。从最开始的误差分析,实验报告写了很多,但是真正掌握的确不多,到最后的回转器,负阻,感觉都是理论没有很好的跟上实践,很多状况下是在实验出现象以后在去想理论。在实验这门课中给我最大的感受就是,必须要先弄清楚原理,在做实验,这样又快又好。 在养成习惯方面,最开始的时候我做实验都是没有什么条理,想到哪里就做到哪里。比如说测量三相电,有很多种状况,有中线,无中线,三角形接线法还是Y形接线法,在这个实验中,如果选取恰当的顺序就能够减少很多接线,做实验就应要有良好的习惯,就应在做实验之前想好这个实验要求什么,有几个步骤,就应怎样安排才最合理,其实这也映射到做事情,不管做什么事情,就应都要想想目的和过程,这样才能高效的完成。电原实验开始的几周上课时间不是很固定,实验报告也累计了很多,第一次感觉有那么多实验报告要写,在交实验报告的前一天很多同学都通宵了的,这说明我们都没有合理的安排好自己的时间,我就应从这件事情中吸取教训,合理安排自己的时间,完成就应完成的学习任务。这学期做的一些实验都需要严谨的态度。在负阻的实验中,我和同组的同学连了两三次才把负阻链接好,又浪费时间,又没有效果,在这个实验中,有很多线,很容易插错,所以要个性仔细。 在最后的综合实验中,我更是受益匪浅。完整的做出了一个红外测量角度的仪器,虽然不是个性准确。我和我组员分工合作,各自完成自己的模块。我负责的是单片机,和数码显示电路。这两块都是比较简单的,但是数码显示个性需要细致,由于我自己是一个粗心的人,所以数码管我检查了很多遍,做了很多无用功。 总结:电路原理实验最后给我留下的是:严谨的学习态度。做什么事情都要认真,争取一次性做好,人生没有太多时间去浪费。 实验报告总结(二): 在分子生物学实验室为期两个月的实习使我受益匪浅,我不仅仅学习到了专业知识,更重要的是收获了经验与体会,这些使我一生受用不尽,记下来与大家共勉: 1.手脚勤快,热心帮忙他人。初来匝道,不管是不是自己的份内之事,都就应用心去完成,也许自己累点,但你会收获很多,无论是知识与经验还是别人的称赞与认可。 2.多学多问,学会他人技能。学问学问,无问不成学。知识和经验的收获能够说与勤学好问是成正比的,要记住知识总是垂青那些善于提问的人。 3.善于思考,真正消化知识。有知到识,永远不是那么简单的事,当你真正学会去思考时,他人的知识才能变成你自己的东西。 4.前人铺路,后人修路。墨守陈规永远不会有新的建树,前人的道路固然重要,但是学会另辟蹊径更为重要。

相关文档
最新文档