当前位置:文档之家› 算符优先实验报告

算符优先实验报告

算符优先实验报告
算符优先实验报告

算符优先分析实验报告

一、程序功能

实现算符优先分析算法,完成以下描述算术表达式的算符优先文法的算符优先分析过程。

G[S]:S->#E#

E->E+T|T

T->T*F|F

F->P^F | P

P->(E)|i

二、主要数据结构

char VT[]定义符号表;struct type{char origin; char array[5]; int length;}定义产生式类型;table[][]定义优先关系矩阵。

三、程序结构

int locate(char s[],char c) 辅助函数,在一个字符串中查找某特定字符;int Find(type G[],char s[],int m,int n) 查找与已搜索出的短语对应的产生式,返回该产生式的序号;void doScan()对输入串进行分析的主控函数;void print(char s[],int k,int tag,char str[],int i,char action[])输出分析过程的函数。在find()和doScan()中调用locate()函数,在doScan()中调用find()和print()函数,在main()中调用doScan()函数。

流程图:

四、程序测试

测试句子:i+i*i

结果:

测试句子:(i+i)*i

结果:

五、实验总结

本实验重点解决算符优先矩阵的构造和算符优先算法的实现,我认为难点是构造优先矩阵,这个就需要掌握方法多练习,优先算法只需将PPT上的流程图一步一步地转化为代码就可以了。总体来说,本实验比较简单。

算符优先分析器设计实验报告--宁剑

编译原理实验报告 题目: 算符优先分析法分析器 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 宁剑 指导教师 xxxx 2015年xx 月xx 日 算符优先分析法分析器 装 订 线

一、实验目的 1.理解自底向上优先分析,比较和自顶向下优先分析的不同。 2.理解算符优先分析的特点,体会其和简单优先分析方法的不同。 3.加深对编译器语法分析的理解。 二、实验原理 1.自底向上优先分析方法,也称移进-归约分析,粗略地说它的思想是对输入符号串自左向右进行扫描,并将输入符号逐个移入一个后进先出栈,边移入边分析,一旦栈顶符号串形成某个句型的句柄或可归约串时,就将该产生式的左部非终极符代替相应的右边文法符号串。 2.算符优先分析法的基本思想 首先确定算符(确切地说是终结符)之间的优先关系和结合性质,然后借助这种关系,比较相邻算符之间的优先级来确定句型的可归约串,并进行归约。 注意:算符优先分析过程是自下而上的归约过程,但它的可归约串未必是句柄,也就是说,算符优先分析过程不是一种规归约。 3.终结符号间优先关系的确定,用FIRSTVT和LASTVT计算。 4.最左素短语 所谓素短语是指这样一个短语,它至少含有一个终结符,并且除它自身之外不再含有其它素短语。最左素短语是指处于句型最左边的那个素短语。最左素短语是算符优先分析算法的可归约串。 5.计算得到所给文法的算符优先矩阵

6.算符优先分析的基本过程 三、实验要求 使用算符优先分析算法分析下面的文法: E’→#E# E→E+T|T T→T*F|F F→P^F|P

注意广度与空间位置记忆广度实验报告

沈阳体育学院 研究生实验报告 实验课程:运动心理理论与应用 实验名称:注意广度与空间位置记忆广度 实验地点:科技楼210 学生姓名:贾月娥 学号:201504520200221 指导教师:冯琰 实验时间:2015年10月29日

1 实验目的 学习测量注意广度的方法,测定对随机分布的圆点的注意广度。 学习空间位置记忆广度的测量方法,测定空间位置记忆能力。 2 实验对象与方法 2.1实验对象 沈阳体育学院2015级研究生7班运动训练专业学生1名,性别女,身体健康,无严重视觉疾病。 2.2实验方法 仪器:计算机及PsyTech心理实验系统 注意广度实验的材料为:随机呈现的红色圆点,数目从5个到12个,每种10张,共80张。每张呈现时间为0.25秒,让被试按相应数字键键入答案(或用鼠标点击输入框后通过选择菜单进行输入)。统计被试对不同圆点数的正确反应的百分数。从5个点开始算起,采用直线内插法求出第一个50%次正确反应的圆点数作为被试的注意广度。 空间位置记忆广度实验的材料为:在计算机屏幕上呈现一个5×3的绿色表格,然后在这15个格中的某几个格中随机呈现粉色亮点(从一次连续呈现3个格开始),要求被试尽量记住圆点出现的位置及顺序。在圆点出现完之后,要求被试按照刚才圆点呈现的位置顺序点击表格,并用鼠标点击“确定”按钮输入。在某个广度做了3次之后,如果不是全错,则广度加1后继续,直到某个广度连续3次都错或完成数目为12的任务为止。主试要指导被试认真阅读指示语,强

调在每次输入答案时,如果有错误可以点击最后点过的表格进行修改,被试明白实验的要求后,开始正式实验。 3实验过程 1)被试进入实验室选择一台电脑坐下,打开实验操作系统,选择注意广度与空间位置记忆广度,然后开始实验。仔细阅读操作说明。 2)在老师的指导下先后打开注意广度实验,认真阅读实验指导语,并点击开始进行实验; 3)按操作提示进行试验,实验结束,数据被自动保存,实验者可直接查看结果,也可换被试继续实验,以后在主界面“数据”菜单中查看。 4 实验结果 4.1注意广度 =====结果图片=====

实验4 算符优先分析法.

实验名称: 实验任务: 对下述描述算符表达式的算符优先文法G[E],给出算符优先分析的实验结果。 实验容: 有上下无关文法如下: E->E+T|E-T|T T->T*F|T/F|F F->(E)|i 说明:优先关系矩阵的构造过程: (1) = 关系由产生式 F->(E) 知‘(’=‘)’ FIRSTVT集及LASTVT集 FIRSTVT(E)={ +,-,*,/,(,i } FIRSTVT(F)={ (,i } FIRSTVT(T)={ *,/,(,i } LASTVT(E)={ +,-,*,/,),i } LASTVT(F)={ ),i } LASTVT(T)={ *,/,),i } (2) < 关系 +T 则有:+ < FIRSTVT(T) -T 则有:- < FIRSTVT(T) *F 则有:* < FIRSTVT(F)

/F 则有:/ < FIRSTVT(F) (E 则有:( < FIRSTVT(E) (3) > 关系 E+ 则有: LASTVT(E) > + E- 则有: LASTVT(E) > - T* 则有: LASTVT(T) > * T/ 则有: LASTVT(T) > / E) 则有: LASTVT(E) > ) (4)请大家画出优先关系矩阵 终结符之间的优先关系是唯一的,所以该文法是算符优先文法。程序的功能描述:程序由文件读入字符串(以#结束),然后进行算符优先分析,分析过程中如有错误,则终止程序并报告错误位置,最终向屏幕输出移近——规约过程。

(5)依据文法和求出的相应FirstVT和 LastVT 集生成算符优先分析表。算法描述如下: for 每个形如 P->X1X2…Xn的产生式 do for i =1 to n-1 do begin if Xi和Xi+1都是终结符 then Xi = Xi+1 if i<= n-2, Xi和Xi+2 是终结符, 但Xi+1 为非终结符 then Xi = Xi+2 if Xi为终结符, Xi+1为非终结符 then for FirstVT 中的每个元素 a do Xi < a if Xi为非终结符, Xi+1为终结符 then for LastVT 中的每个元素 a do a > Xi+1 end (6)构造总控程序 算法描述如下: stack S; k = 1; //符号栈S的使用深度

记忆广度测试实验报告

记忆广度实验报告 摘要记忆分为瞬时记忆、短时记忆、长时记忆。短时记忆的容量成为记忆广度,是指在单位时间内能够记忆的材料的数量,这个数量是有一定限度的。本实验研究的是测试短时记忆广度。实验结果: 不同位数的刺激之间的记忆广度有显著性差异,随着位数的增加,记忆广度开始下降。 关键词记忆广度短时记忆数字 一、引言 记忆广度指的是按固定顺序逐一地呈现一系列刺激以后刚刚能够立刻正确再现的刺激系列的长度。其呈现的各刺激之间的时间间隔必须相等。再现的结果必须符合用来呈现的顺序才算正确。记忆广度是测定短时记忆能力的一种简单易行的方法。 人的记忆分为瞬时记忆、短时记忆、长时记忆。短时记忆有以下性质:第一,短时记忆保持的时间很短,约在15秒钟内会遗忘。心理学家对人的短时记忆保持时间做过实验。当人被传入一个信息后立即对其进行检查,其回忆是准确无误的。随着保持时间的处长,回忆成绩就急速下降。当延长到15秒钟时,信息的再现率约为10%。但是超过15秒钟以后,再现率便不再下降,一直维持在10%的接近值上。第二,短时记忆的容量约为7±2个信息组块。心理学家的实验结果表明,人的短时记忆的容量是以一种非常奇妙的形式被固定好了的,即无论哪一种形式的信息几乎都只能保持7个左右的项目即组块。如“5”,“577”,“华东师范大学”这些数字、数字的集合和词都可以作为一个信息组块,甚至一个谚语也可以作为一个组块,如“勤能补拙”。这个发现的意义是,如果把低层次信息组块适当地再编排为数量较少的高层次信息组块,则将使短时记忆的容量大幅度地增加。 短时记忆的容量成为记忆广度(memory span)是指在单位时间内按一定顺序逐一呈现一系列刺激之后,被试能够按刺激呈现顺序正确再现刺激系列的内容,一般是呈现后,要求立刻再现,被试所能记住的材料数量是有个限量的。记忆广度的研究最早是由贾克布斯(Jackobs,1887)根据艾宾浩斯发明的系列回忆加以改动后创造的。

编译原理 实验3 算符优先分析

编译原理实验3 算符优先分析 一、实验目的 通过设计编制调试构造FIRSTVT集、LASTVT集和构造算符优先表、对给定符号串进行分析的程序,了解构造算符优先分析表的步骤,对文法的要求,生成算符优先关系表的算法,对给定的符号串进行分析的方法。 二、实验内容 1. 给定一文法G,输出G的每个非终结符的FIRSTVT集和LASTVT集。 2. 构造算符优先表。 3. 对给定的符号串进行分析,包含符号栈,符号栈栈顶符号和输入串当前符号的优先级,最左素短语和使用的产生式和采取的动作。 三、程序思路 在文法框内输入待判断文法产生式,格式E->a|S,注意左部和右部之间是“->”,每个产生式一行,ENTER键换行。文法结束再输入一行G->#E# 1. 先做文法判断,即可判断文法情况。 2. 若是算符优先文法,则在优先表栏显示优先表。 3. 写入要分析的句子,按回车即可。 4. 在分析过程栏,可以看到整个归约过程情况 四、实验结果 FunctorFirst.h #include #include #include #include usingnamespace std;

#define rightlength 20 #define product_num 20 // 产生式最多个数 #define num_noterminal 26 // 非终结符最多个数 #define num_terminal 26 // 终结符最多个数 struct Production { char Left; char Right[rightlength]; int num; }; struct VT { bool vt[num_noterminal][num_terminal]; }; struct Stack { char P; char a; }; class CMyDlg { public:CMyDlg(); void InputRule(); CString showLastVT(); CString showFirstVT(); CString shownoTerminal(char G[]); CString showTerminal(char g[]); CString showLeftS(char S[], int j, int k); void InitAll(); CString showSentence(CString sen, int start); CString showStack(char S[], int n); void Initarry(char arry[], int n); CString ProdtoCStr(Production prod); int selectProd(int i, int j, char S[]); void preFunctor(CString sen); void insertFirstVT(Stack S[], int&sp, char P, char a); void insertLastVT(Stack S[], int&sp, char P, char a); void ShowPreTable(); void createPreTable();

算符优先分析程序

南华大学 实验名称:算符优先分析程序 学院:计算机学院 专业班级:本2010 电气信息类03班 学号:20104030342 姓名:谢志兴 指导教师:吴取劲 日期:2012 年 6 月12 日

实验二算符优先分析程序 一、实验目的 调试并完成一个算符优先分析程序,加深对算符优先分析原理的理解。 二、实验要求 算符优先分析程序的功能: 输入:所给文法的源程序字符串、待匹配字符串。 输出:转化后的文法、每个非终结符的FIRSTVT集和LASTVT集、算符优先分析表、规约过程。 三、源程序代码: #include "stdio.h" #include "stdlib.h" #include "iostream.h" char data[20][20]; //算符优先关系 char s[100]; //模拟符号栈s char lable[20]; //文法终极符集 char input[100]; //文法输入符号串 char string[20][10]; //用于输入串的分析 int k; char a; int j; char q; int r; //文法规则个数 int r1; //转化后文法规则个数 char st[10][30]; //用来存储文法规则 char first[10][10]; //文法非终结符FIRSTVT集 char last[10][10]; //文法非终结符LASTVT集 int fflag[10]={0}; //标志第i个非终结符的FIRSTVT集是否已求出

int lflag[10]={0}; //标志第i个非终结符的LASTVT集是否已求出 int deal(); //对输入串的分析 int zhongjie(char c); //判断字符c是否是终极符 int xiabiao(char c); //求字符c在算符优先关系表中的下标void out(int j,int k,char *s); //打印s栈 void firstvt(char c); //求非终结符c的FIRSTVT集 void lastvt(char c); //求非终结符c的LASTVT集 void table(); //创建文法优先关系表 void main() { int i,j,k=0; printf("请输入文法规则数:"); scanf("%d",&r); printf("请输入文法规则:\n"); for(i=0;i'Z') { printf("不是算符文法!\n"); exit(-1); } if(st[i][j]>='A'&&st[i][j]<='Z') {

注意广度实验报告123

注意广度实验报告 姓名:苏沴学号:32摘要实验通过计算机及psytech心理试验系统测定了人的注意广度。通过实验,我们得出影响注意广度的因素有:知觉对象(点子)的个数、环境、注意状态、疲劳效应等。同时实验探究了注意广度是否有性别差异。采用对相关数据进行独立样本的T检验,得出男性和女性的注意广度不存在显著性的差异。 关键词注意广度记忆广度影响因素 引言 1871年在《自然》杂志上发表一篇关于在白盘子里抛撒黑豆并估计黑豆数目的实验研究。后来心理学家把这种现象成为注意广度、知觉广度或者领会广度。注意广度实验用来测定对随机分布的目标点的注意广度。 注意广度也叫注意范围是指在同一时间内一个人能够清楚地觉察或认识客体的数量。注意广度也表明知觉的范围。在同一时间内注意广度越大,知觉的对象就越多,注意广度越小,知觉的对象也越少。研究注意广度,由于以很短的时间呈现刺激材料,被试的眼球来不及转动,因此他对这些刺激物的知觉几乎是同时进行的,被试所能知觉的数量就作为他的注意广度。 目前许多研究结果已证实了,在秒的时间内,成人一般能把握8~9个黑色圆点,及其它相关刺激材料。这证明注意广度是有一定限度的。 注意广度在生活实践中有很重要的意义,注意广度的扩大,有助于一个人在同样的时间内输入更多的信息,提高工作效率,使人能够更好地适应周围世界。 这次的实验目的是:通过测试视觉的注意广度,了解影响注意广度的因素我们即可改善、调节它,使注意广度扩大,并探究实验的缺陷。同时也验证了前人的研究结论。 2 方法 被试 被试来应用心理学专业的2位同学,身体正常,无色盲,色弱的人。 仪器和材料 注意广度:仪器,计算机及psytech心理试验系统 材料,个数从5~到12个大小相同的红点 实验设计 注意广度的实验设计:给被试呈现80组图片,图片上红点的个数分别为5~12个,呈现时间为250毫秒,间隔时间为1000毫秒,当呈现给被试一张图片后,就让被试做出选择,看到的红点个数,然后再继续呈现下张图片。 试验程序 登录并打开PsyTech心理实验软件主界面,选中实验列表中的“注意广度”。单击呈现实验简介。点击“进入实验”到“操作向导”窗口。实验者可进行参数设置(或使用默认值)。然后点击“开始实验”按钮进入指导语界面。

算符优先报告及代码

实验任务: 对下述描述算符表达式的算符优先文法G[E],给出算符优先分析的实验结果。 E->E+T|E-T|T T->T*F|T/F|F F->(E)|i 说明: 优先关系矩阵的构造过程: (1)= 关系 由产生式F->(E) 知‘(’=‘)’ FIRSTVT集 FIRSTVT(E)={ +,-,*,/,(,i } FIRSTVT(F)={ (,i } FIRSTVT(T)={ *,/,(,i } LASTVT(E)={ +,-,*,/,),i } LASTVT(F)={ ),i } LASTVT(T)={ *,/,),i } (2) < 关系 +T 则有:+ < FIRSTVT(T) -T 则有:- < FIRSTVT(T) *F 则有:* < FIRSTVT(F) /F 则有:/ < FIRSTVT(F) (E 则有:( < FIRSTVT(E)

(3) > 关系 E+ 则有:LASTVT(E) > + E- 则有:LASTVT(E) > - T* 则有:LASTVT(T) > * T/ 则有:LASTVT(T) > / E) 则有:LASTVT(E) > ) (4)优先关系矩阵 + - * / ( ) i # + > > < < < > < > - > > < < < > < > * > > > > < > < > / > > > > < > < > ( < < < < < = < ) > > > > > > i > > > > > > # < < < < < < = 终结符之间的优先关系是唯一的,所以该文法是算符优先文法。 程序的功能描述: 程序由文件读入字符串(以#结束),然后进行算符优先分析,

编译原理实验报告5-语法分析程序的设计(2)

实验5 语法分析程序的设计(2) 一、实验目的 通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析中算法优先分析方法。 二、实验内容 设计一个文法的算法优先分析程序,判断特定表达式的正确性。 三、实验要求 1、给出文法如下: G[E] E->T|E+T; T->F|T*F; F->i|(E); + * ( ) i + * ( ) i 2、计算机中表示上述优先关系,优先关系的机内存放方式有两种1)直接存放,2)为 优先关系建立优先函数,这里由学生自己选择一种方式; 1、给出算符优先分析算法如下: k:=1; S[k]:=‘#’; REPEAT 把下一个输入符号读进a中; IF S[k]∈V T THEN j:=k ELSE j:=k-1; WHILE S[j] a DO BEGIN REPEAT Q:=S[j]; IF S[j-1]∈V T THEN j:=j-1 ELSE j:=j-2 UNTIL S[j] Q 把S[j+1]…S[k]归约为某个N; k:=j+1;

S[k]:=N; END OF WHILE; IF S[j] a OR S[j] a THEN BEGIN k:=k+1;S[k]:=a END ELSE ERROR UNTIL a=‘#’ 1、 根据给出算法,利用适当的数据结构实现算符优先分析程序; 2、 利用算符优先分析程序完成下列功能: 1) 手工将测试的表达式写入文本文件,每个表达式写一行,用“;”表示结束; 2) 读入文本文件中的表达式; 3) 调用实验2中的词法分析程序搜索单词; 4) 把单词送入算法优先分析程序,判断表达式是否正确(是否是给出文法的语 言),若错误,应给出错误信息; 5) 完成上述功能,有余力的同学可以对正确的表达式计算出结果。 四、实验环境 PC 微机 DOS 操作系统或 Windows 操作系统 Turbo C 程序集成环境或 Visual C++ 程序集成环境 五、实验步骤 1、 分析文法中终结符号的优先关系; 2、 存放优先关系或构造优先函数; 3、利用算符优先分析的算法编写分析程序; 4、写测试程序,包括表达式的读入和结果的输出; 5、程序运行效果,测试数据可以参考下列给出的数据。 六、测试数据 输入数据: 编辑一个文本文文件expression.txt ,在文件中输入 如下内容: 正确 结果: (1)10; 输出:正确 (2)1+2; 输出:正确 (3)(1+2)*3+(5+6*7); 输出:正确 (4)((1+2)*3+4 10; 1+2; (1+2)*3+(5+6*7); ((1+2)*3+4; 1+2+3+(*4+5); (a+b)*(c+d); ((ab3+de4)**5)+1;

算符优先分析算法(c语言).(优选)

编译原理实验 一实验目的 设计、编制并调试一个算符优先分析算法,加深对此分析法的理解 二实验过程 先在算符栈置“$”,然后开始顺序扫描表达式,若读来的单词符号是操作数,这直接进操作数栈,然后继续读下一个单词符号。分析过程从头开始,并重复进行;若读来的是运算符θ2则将当前处于运算符栈顶的运算符θ1的入栈优先数f与θ2的比较优先函数g进行比较。 2.2 各种单词符号对应的种别码 2.3 算符优先程序的功能 完成一个交互式面向对象的算符优先分析程序,而一个交互式面向对象的算符优先分析程序基本功能是: (1)输入文法规则 (2)对文法进行转换 (3)生成每个非终结符的FirstVT和LastVT (4)生成算符优先分析表 (5)再输入文法符号 (6)生成移进规约步骤 三设计源码 算符优先分析器 #include "stdio.h"

#include "stdlib.h" #include "iostream.h" char data[20][20]; //算符优先关系 char s[100]; //模拟符号栈s char lable[20]; //文法终极符集 char input[100]; //文法输入符号串 char string[20][10]; //用于输入串的分析 int k; char a; int j; char q; int r; //文法规则个数 int r1; int m,n,N; //转化后文法规则个数 char st[10][30]; //用来存储文法规则 char first[10][10]; //文法非终结符FIRSTVT集 char last[10][10]; //文法非终结符LASTVT集 int fflag[10]={0}; //标志第i个非终结符的FIRSTVT集是否已求出int lflag[10]={0}; //标志第i个非终结符的LASTVT集是否已求出int deal(); //对输入串的分析 int zhongjie(char c); //判断字符c是否是终极符 int xiabiao(char c); //求字符c在算符优先关系表中的下标 void out(int j,int k,char *s); //打印s栈 void firstvt(char c); //求非终结符c的FIRSTVT集 void lastvt(char c); //求非终结符c的LASTVT集 void table(); //创建文法优先关系表 void main() { int i,j,k=0; printf("请输入文法规则数:"); scanf("%d",&r); printf("请输入文法规则:\n"); for(i=0;i

工作记忆广度实验报告

工作记忆广度实验报告 篇一:记忆广度实验 数字、字母、空间位置记忆广度实验报告 12级心理系师范班10120330131 李敏 摘要记忆分为瞬时记忆、短时记忆、长时记忆。短时记忆的容量称为记忆广度,是指在单位时间内能够记忆的材料的数量,这个数量是有一定限度的。本实验通过对华师大12级10名被试的数字与字母的短时记忆实验和空间位置记忆广度实验的数据进行分析讨论,测定了各个被试的不同材料记忆广度,比较个体差异、材料差异、性别差异等影响因素,了解短时记忆的特点,探索性别间的空间位置记忆广度差异。发现数字记----------------精选公文范文---------------- 1

忆广度大于字母记忆广度,数字记忆广度同样大于空间位置记忆广度,记忆广度存在被试间差异和性别差异。 关键字记忆广度短时记忆字母数字空间位置 1 引言 人的记忆分为瞬时记忆、短时记忆、长时记忆。其中,短时记忆有以下性质: 第一,短时记忆保持的时间很短,约在15秒钟内会遗忘。心理学家对人的短时记忆保持时间做过实验。当人被传入一个信息后立即对其进行检查,其回忆是准确无误的。随着保持时间的处长,回忆成绩就急速下降。当延长到15秒钟时,信息的再现率约为10%。但是超过15秒钟以后, ----------------精选公文范文---------------- 2

再现率便不再下降,一直维持在10%的接近值上。 第二,短时记忆的容量约为7±2个信息组块。心理学家的实验结果表明,人的短时记忆的容量是以一种非常奇妙的形式被固定好了的,即无论哪一种形式的信息几乎都只能保持7个左右的项目即组块。这个发现的意义是,如果把低层次信息组块适当地再编排为数量较少的高层次信息组块,则将使短时记忆的容量大幅度地增加。 短时记忆的容量成为记忆广度(memory span)是指在单位时间内按一定顺序逐一呈现一系列刺激之后,被试能够按刺激呈现顺序正确再现刺激系列的内容,一般是呈现后,要求立刻再现,被试所能记住的材料数量是有个限量的。 有研究表明,不同性质材料的短时记忆容量----------------精选公文范文---------------- 3

编译原理-语法分析-算符优先文法分析器

编译原理实验报告 实验名称:编写语法分析分析器实验类型: 指导教师: 专业班级: 学号: 电子邮件: 实验地点: 实验成绩:

一、实验目的 通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。 1、选择最有代表性的语法分析方法,如LL(1) 语法分析程序、算符优先分析程序和LR分析分析程序,至少选一题。 2、选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。 二、实验过程 编写算符优先分析器。要求: (a)根据算符优先分析算法,编写一个分析对象的语法分析程序。读者可根据自己的能力选择以下三项(由易到难)之一作为分析算法中的输入: Ⅰ:通过构造算符优先关系表,设计编制并调试一个算法优先分析程序Ⅱ:输入FIRSTVT,LASTVT集合,由程序自动生成该文法的算符优先关系矩阵。 Ⅲ:输入已知文法,由程序自动生成该文法的算符优先关系矩阵。(b)程序具有通用性,即所编制的语法分析程序能够使用于不同文法以及各种输入单词串,并能判断该文法是否为算符文法和算符优先文法。 (c)有运行实例。对于输入的一个文法和一个单词串,所编制的语法分析程序应能正确地判断,此单词串是否为该文法的句子,并要求输出分析过程。 三、实验结果 算符优先分析器: 测试数据:E->E+T|T T->T*F|F F->(E)|i 实验结果:(输入串为i+i*i+i)

四、讨论与分析 自下而上分析技术-算符优先分析法: 算符文法:一个上下无关文法G,如果没有且没有P→..QR...(P ,Q ,R属于非终结符),则G是一个算符文法。 FIRSTVT集构造 1、若有产生式P →a...或P →Qa...,则a∈FIRSTVT(P)。 2、若有产生式P→...,则FIRSTVT(R)包含在FIRSTVT(P)中。由优先性低于的定义和firstVT集合的定义可以得出:若存在某个产生式:…P…,则对所有:b∈firstVT(P)都有:a≦b。 构造优先关系表: 1、如果每个非终结符的FIRSTVT和LASTVT集均已知,则可构造优先关系表。 2、若产生式右部有...aP...的形式,则对于每个b∈FIRSTVT(P)都有

人因工程课程实验--记忆广度测试实验报告

人因工程课程 记忆广度测试实验报告 姓名: 学号: 指导教师: 2013年11月

记忆广度测试实验报告 摘要:记忆广度指的是按固定顺序逐测一地呈现一系列刺激以后,刚刚能够立刻正确再现的刺激系列的长度。本实验测试了短时记忆广度。不同被试者的记忆广度有一定的差异,这与不同被试者的记忆方式有关系。例如将较长的数字组块记忆比单独记忆效果要好。 关键词:记忆广度短时记忆记忆方式 1.引言 记忆广度是测定短时记忆能力的一种最简单易行的方法。记忆广度指的是按固定顺序逐一地呈现一系列刺激以后,刚刚能够立刻正确再现的刺激系列的长度。所呈现的各刺激之间的时间间隔必须相等。再现的结果必须符合原来呈现的顺序才算正确。刺激系列可以通过视觉呈现,也可以通过听觉呈现。呈现的刺激可以是字母,也可以是数字。记忆广度是测定短时记忆能力的一种简单易行的方法。 人的记忆分为瞬时记忆、短时记忆、长时记忆。短时记忆保持的时间很短,约在15秒钟内会遗忘。心理学家对人的短时记忆保持时间做过实验。当人被传入一个信息后立即对其进行检查,其回忆是准确无误的。随着保持时间的处长,回忆成绩就急速下降。当延长到15 秒钟时,信息的再现率

约为10%。但是超过15 秒钟以后,再现率便不再下降,一直维持在10%的接近值上。数字记忆能力的测试是目前心理学研究瞬时记忆中简单易行又最为典型的一种方法。这是由于它最能体现记忆广度的特点:是决定记忆材料的数目,而不是材料的意义。目前,公认的记忆广度的平均数为7+-2。 2.方案 2.1 实验仪器:BD-Ⅱ-407型记忆广度测试仪(Memory Span Tester)2.2 被试者:东南大学工业工程专业大二学生4名。 2.3实验步骤: ①将键盘的插头与仪器被试面板上的插座连接好,接通~220V电源。 ②按下复位键,由程序将码Ⅰ灯、计分灯、顺答方式灯置亮,数码管显示为0202.00 ③被试者按下回车开始测试。在见到回答亮〔绿灯〕,用键盘按顺序回答记忆的数字,回答正确,回答灯灭,加0.25 分,被试再按回车键,仪器接着提取下一组以供再次回答。 ④基础分为2.0分,答对一个数组记0.25分,答对4个数组(一个位组)计1分,答对14个位组计满分16分。计分公式:F=2.0+0.25X(F 是被试者的得分,X是被试者正确回答的次数)。 ⑤由仪器自动计分、计位、计时、计错。 ⑥主试者可以随时改变码Ⅰ和码Ⅱ。

编译原理_实验报告实验二__语法分析(算符优先) 2

华北水利水电学院编译原理实验报告 一、实验题目:语法分析(算符优先分析程序) (1)选择最有代表性的语法分析方法算符优先法; (2)选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。 二、实验内容 (1)根据给定文法,先求出FirstVt和LastVt集合,构造算符优先关系表(要求算符优先关系表输出到屏幕或者输出到文件); (2)根据算法和优先关系表分析给定表达式是否是该文法识别的正确的算术表达式(要求输出归约过程) (3)给定表达式文法为: G(E’): E’→#E# E→E+T | T T→T*F |F F→(E)|i (4) 分析的句子为: (i+i)*i和i+i)*i 三、程序源代 #include #include #include #include #define SIZE 128 char priority[6][6]; //算符优先关系表数组 char input[SIZE]; //存放输入的要进行分析的句子 char remain[SIZE]; //存放剩余串 char AnalyseStack[SIZE]; //分析栈 void analyse(); int testchar(char x); //判断字符X在算符优先关系表中的位置 void remainString(); //移进时处理剩余字符串,即去掉剩余字符串第一个字符 int k; void init()//构造算符优先关系表,并将其存入数组中 {

不同学习材料的记忆广度实验报告doc

不同学习材料的记忆广度实验报告 篇一:不同学习材料的记忆广度 不同学习材料的记忆广度实验研究报告 摘要 本实验采用棒框仪测量6名大二心理系学生的认知方式,并用excel与SPSS软件对数据进行处理,对性别差异的问题采用了配对T检验的统计方法。结果发现男性与女性的认知方式不存在显著的差异,男性和女性都明显倾向场独立性的认知方式。 一、引言 记忆广度是指按一定顺序逐一呈现一系列刺激之后,被试能够按刺激呈现顺序正确再现刺激系列的内容。一般是呈现后,要求立刻再现。该方法是测定短时记忆容量的常用方法之一。呈现的材料不同,短时记忆广度也会有所差异。记忆广度的研究最早是由贾克布斯(Jackobs,1887)根据艾宾浩斯发明的系列回忆加以改动后创造的。 关于记忆广度的计分方法有多种: 1.设每种刺激长度呈现3次,每通过一次得1/3分,以3次都能通过的长度数为基数,加上其后面未能完全通过

长度的通过比率。如:6位时3次都通过(作为基数),7位时通过2次,8位通过1次,而9位3次均未通过,则记忆广度为6+2/3+1/3=7。 2.如8位能够通过(只要有一次就可以),而9位时3次未能通过,则记忆广度为8.5。 3.采用奥伯利(Oberly 1982)的直线内样法。即以系列长度为横轴,以被试的正确回忆数目转换成正确百分率为纵轴,在 50%处向曲线作平行线,在交点处再作垂直线,与横轴的交点即为被试记忆广度数。 本实验使用的是第一种计分方法。 二、目的 1.通过测定数字和字母两种实验材料的记忆广度,了解短时记忆的特点。 2.探讨实验材料与记忆广度之间的关系。 三、仪器与材料 1.仪器:计算机及PsyTech心理实验系统。 2.材料: (1)字母:随机排列的大写英文字母,长度4~15。(2)数字:随机排列的0到9的数字,长度4~15。 3.被试:华东师范大学09级本科生生6名,年龄均在

c语言实现算符优先语法分析

#include char prog[100],zhongjian[100],shu[500]; char ch,zh; int syn,p,q,a,b,c,d; //p指向prog,q指向zhongjian int table[8][8]={ {1,1,-1,-1,-1,1,-1,1}, {1,1,-1,-1,-1,1,-1,1}, {1,1,1,1,-1,1,-1,1}, {1,1,1,1,-1,1,-1,1}, {-1,-1,-1,-1,-1,-1,-1,0}, {1,1,1,1,0,1,0,1}, {1,1,1,1,0,1,0,1}, {-1,-1,-1,-1,-1,0,-1,-1}}; //存储算符优先关系表,大于为1,小于或等于为-1,其它为0表示出错char zhan[100];//数组栈 int z,j;//z为栈顶指针,j为zhongjian数组指针 void push(char ch)//入栈 { zhan[z++]=ch; } void pop()//出栈 { z--; } void putzhan()//打印栈内字符 { for(int i=0;i

短时记忆再认实验报告

心理实验报告 实验名称:短时记忆再认实验 摘要:短时记忆是指保持十几秒至一分钟左右的记忆,一般把它看作是处于感觉记忆和长时记忆之间的一个记忆阶段。本次实验的目的学会记忆实验的再认方法,比较三种材料(具体图片、抽象图片、词)的短时记忆效果和思考该实验在广告效果研究的运用及意义。各个被试根据实验的指导语利用新旧两套图片再认是否看过,根据实验所得数据计算出各个被试的再认正确率。记忆是一个较为复杂的认识系统,再认被认为是评价记忆巩固水平的重要指标,此次实验结果根据不同被试对不同材料的反应,比较三种材料的不同效果,分析说明其差异的原因,并且分析被试的短时记忆能力。然后用本实验结果分析不同呈现方式的平面广告的短时记忆效果。 关键词:短时记忆记忆再认记忆差异 一、前言 短时记忆是瞬时记忆向长时记忆过渡的中间阶段,一般信息保持的时间为 5s~2min。20世纪50年代Perterson等人用无意义音节为材料对短时记忆的容量进行了研究。为了避免在刺激呈现与回忆中间的时间间隔内被试复习学过的实验材料,通常在呈现和回忆之间加入数学计算题或其他的干扰任务。结果发现,中间延迟的时间越长,被试回忆的刺激数目就越少。从Perterson等人的实验可以证明,短时记忆的内容只有经过不断学习才能够被保存下来,并转入长时记忆。 短时记忆的信息提取是将短时记忆中的项目回忆出来,或者当该项目再度呈现时能够正确再认。Sternberg最早对这个问题进行了研究,即著名的短时记忆信息提取实验。这个实验主要要验证关于短时记忆信息加工模式的问题,即短时记忆信息提取是系列扫描的,还是并行扫描的。虽然得出的结论还有一定的争论,但它的意义是开创性的,推动了短时记忆信息加工模式的研究。Sternberg根据这个实验发展出了一个新的反应时间实验法——加因素法。其假设是:如果两个因素是相互制约的,则它们是作用于信息加工的同一阶段;如果两个因素的效应是独立可加的,则它们是作用于信息加工的不同阶段。 米勒(https://www.doczj.com/doc/7217215282.html,ler)等人的研究发现,人的短时记忆的容量是十分有限的。一般短时记忆的容量为7±2个组块(chunking)。组块的单位可以是字母、数字、

实验3 算符优先分析算法的设计与实现

实验三算符优先分析算法的设计与实现 (8学时) 一、实验目的 根据算符优先分析法,对表达式进行语法分析,使其能够判断一个表达式是否正确。通过算符优先分析方法的实现,加深对自下而上语法分析方法的理解。 二、实验要求 1、输入文法。可以是如下算术表达式的文法(你可以根据需要适当改变): E→E+T|E-T|T T→T*F|T/F|F F→(E)|i 2、对给定表达式进行分析,输出表达式正确与否的判断。 程序输入/输出示例: 输入:1+2; 输出:正确 输入:(1+2)/3+4-(5+6/7); 输出:正确 输入:((1-2)/3+4 输出:错误 输入:1+2-3+(*4/5) 输出:错误 三、实验步骤 1、参考数据结构 char *VN=0,*VT=0;//非终结符和终结符数组 char firstvt[N][N],lastvt[N][N],table[N][N]; typedef struct //符号对(P,a) { char Vn; char Vt; } VN_VT; typedef struct //栈 { VN_VT *top; VN_VT *bollow; int size; }stack; 2、根据文法求FIRSTVT集和LASTVT集 给定一个上下文无关文法,根据算法设计一个程序,求文法中每个非终结符的FirstVT 集和LastVT 集。

算符描述如下: /*求 FirstVT 集的算法*/ PROCEDURE insert(P,a); IF not F[P,a] then begin F[P,a] = true; //(P,a)进栈 end; Procedure FirstVT; Begin for 对每个非终结符 P和终结符 a do F[P,a] = false for 对每个形如 P a…或 P→Qa…的产生式 do Insert(P,a) while stack 非空 begin 栈顶项出栈,记为(Q,a) for 对每条形如 P→Q…的产生式 do insert(P,a) end; end. 同理,可构造计算LASTVT的算法。 3、构造算符优先分析表 依据文法和求出的相应FirstVT和 LastVT 集生成算符优先分析表。 算法描述如下: for 每个形如 P->X1X2…X n的产生式 do for i =1 to n-1 do begin if X i和X i+1都是终结符 then X i = X i+1 if i<= n-2, X i和X i+2 是终结符, 但X i+1 为非终结符 then X i = X i+2 if X i为终结符, X i+1为非终结符 then for FirstVT 中的每个元素 a do X i < a ; if X i为非终结符, X i+1为终结符 then for LastVT 中的每个元素 a do a > X i+1 ; end 4、构造总控程序 算法描述如下: stack S; k = 1; //符号栈S的使用深度 S[k] = ‘#’ REPEAT

编译原理 六章 算符优先分析法

第六章算符优先分析法 课前索引 【课前思考】 ◇什么是自下而上语法分析的策略? ◇什么是移进-归约分析? ◇移进-归约过程和自顶向下最右推导有何关系? ◇自下而上语法分析成功的标志是什么? ◇什么是可归约串? ◇移进-归约过程的关键问题是什么? ◇如何确定可归约串? ◇如何决定什么时候移进,什么时候归约? ◇什么是算符文法?什么是算符优先文法? ◇算符优先分析是如何识别可归约串的? ◇算符优先分析法的优缺点和局限性有哪些? 【学习目标】 算符优先分析法是自下而上(自底向上)语法分析的一种,尤其适应于表达式的语法分析,由于它的算法简单直观易于理解,因此,也是学习其它自下而上语法分析的基础。通过本章学习学员应掌握: ◇对给定的文法能够判断该文法是否是算符文法 ◇对给定的算符文法能够判断该文法是否是算符优先文法 ◇对给定的算符文法能构造算符优先关系表,并能利用算符优先关系表判断该文法是否是算符优先文法。 ◇能应用算符优先分析算法对给定的输入串进行移进-归约分析,在分析的每一步能确定当前应移进还是归约,并能判断所给的输入串是否是该文法的句子。 ◇了解算符优先分析法的优缺点和实际应用中的局限性。 【学习指南】 算符优先分析法是自下而上语法分析的一种,它的算法简单、直观、易于理解,所以通常作为学习其它自下而上语法分析的基础。为学好本章内容,学员应复习有关语法分析的知识,如:什么是语言、文法、句子、句型、短语、简单短语、句柄、最右推导、规范归约基本概念。 【难重点】 ◇通过本章学习后,学员应该能知道算符文法的形式。 ◇对一个给定的算符文法能构造算符优先关系分析表,并能判别所给文法是否为算符优先文法。 ◇分清规范句型的句柄和最左素短语的区别,进而分清算符优先归约和规范归约的区别。 ◇算符优先分析的可归约串是句型的最左素短语,在分析过程中如何寻找可归约串是算符优先分析的关键问题。对一个给定的输入串能应用算符优先关系分析表给出分析(归约)步骤,并最终判断所给输入串是否为该文法的句子。 ◇深入理解算符优先分析法的优缺点和实际应用中的局限性。 【知识点】

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