1、第第5章章 表面粗糙度及其检测表面粗糙度及其检测 学习目的及要求:学习目的及要求:1、理解表面粗糙度的概念及其对机械零件使用性能的影响。2、理解表面粗糙度的评定参数。3、掌握表面粗糙度的标注方法和选用原则。4、知道表面粗糙度的检测方法。Wang chenggang1 1、表面粗糙度形成的原因:、表面粗糙度形成的原因: 1)加工过程中的)加工过程中的刀痕;刀痕; 2)切屑分离时的)切屑分离时的塑性塑性变形;变形; 3)刀具与已加工表面间的)刀具与已加工表面间的摩擦;摩擦; 4)工艺系统的)工艺系统的高频高频振动;振动;5.1.1 表面粗糙度的概念表面粗糙度的概念 Wang chenggang 图
2、5.1 零件表面的几何形状误差Wang chenggang5.1.2 表面粗糙度对零件使用表面粗糙度对零件使用性能的影响性能的影响 表面粗糙度对机械零件的表面粗糙度对机械零件的使用性能使用性能和和寿寿命命都有很大的影响,尤其是对在都有很大的影响,尤其是对在高温高温、高压高压和和高速高速条件下工作的机械零件影响条件下工作的机械零件影响更大更大,其,其影响主要表现在以下几个方面。影响主要表现在以下几个方面。 1) 影响耐磨性影响耐磨性 具有微观几何形状误差的两个表面只能在轮具有微观几何形状误差的两个表面只能在轮廓的廓的峰顶峰顶发生接触,如图所示发生接触,如图所示 。Wang chenggang5.
3、1.2 表面粗糙度对零件使用表面粗糙度对零件使用性能的影响性能的影响 2) 影响配合性质的稳定性影响配合性质的稳定性 对于间隙配合,相对运动的表面因其粗糙不对于间隙配合,相对运动的表面因其粗糙不平而迅速磨损,平而迅速磨损,致使间隙增大致使间隙增大;对于过盈配;对于过盈配合,表面轮廓峰顶在装配时容易被挤平,使合,表面轮廓峰顶在装配时容易被挤平,使实际实际有效过盈量减小有效过盈量减小,致使联接强度降低。,致使联接强度降低。Wang chenggang5.1.2 5.1.2 表面粗糙度对零件使用表面粗糙度对零件使用性能的影响性能的影响 3) 影响疲劳强度影响疲劳强度 零件表面越粗糙,凹痕就越深,当零
4、件承受零件表面越粗糙,凹痕就越深,当零件承受交变荷载时,对应力集中很敏感。使疲劳强交变荷载时,对应力集中很敏感。使疲劳强度降低,导致零件表面产生裂纹而损坏。度降低,导致零件表面产生裂纹而损坏。Wang chenggang5.1.2 表面粗糙度对零件使用表面粗糙度对零件使用性能的影响性能的影响 4) 影响耐腐蚀性影响耐腐蚀性 粗糙的表面,易使腐蚀性物质粗糙的表面,易使腐蚀性物质存积存积在表面的在表面的微观凹谷处,并渗入到金属内部,如图微观凹谷处,并渗入到金属内部,如图5.4所所示,示,致使腐蚀加剧致使腐蚀加剧。 Wang chenggang5.1.2 5.1.2 表面粗糙度对零件使用表面粗糙度对
5、零件使用性能的影响性能的影响 5) 影响接触刚度影响接触刚度 接触刚度影响零件的接触刚度影响零件的工作精度工作精度和和抗振性抗振性。这。这是由于表面粗糙度使表面间只有一部分面积是由于表面粗糙度使表面间只有一部分面积接触。一般情况下,实际接触面积只有公称接触。一般情况下,实际接触面积只有公称接触面积的百分之几。因此,表面越粗糙受接触面积的百分之几。因此,表面越粗糙受力后局部变形越大,接触刚度也越低。力后局部变形越大,接触刚度也越低。Wang chenggang5.1.2 5.1.2 表面粗糙度对零件使用表面粗糙度对零件使用性能的影响性能的影响 6) 影响结合面的密封性影响结合面的密封性 粗糙的表
6、面结合时,两表面只在局部点上接粗糙的表面结合时,两表面只在局部点上接触,中间有缝隙,影响密封性。因此,降低触,中间有缝隙,影响密封性。因此,降低表面粗糙度,可提高其密封性。表面粗糙度,可提高其密封性。 7) 对零件其他性能的影响对零件其他性能的影响 表面粗糙度对零件其他性能,如对表面粗糙度对零件其他性能,如对测量精度测量精度、流体流动的阻力流体流动的阻力及零件外形的及零件外形的美观美观等都有很等都有很大的影响。大的影响。Wang chenggang5.2.1 5.2.1 基本术语和定义基本术语和定义 4. 4. 取样长度取样长度lrlr 取样长度是用于判别被评定轮廓的不规则特征的取样长度是用于
7、判别被评定轮廓的不规则特征的X X轴轴方向上方向上的长度,是测量和评定表面粗糙度时所规定的一段的长度,是测量和评定表面粗糙度时所规定的一段基准线长基准线长度度,它至少包含,它至少包含5 5个个以上轮廓峰和谷,如图以上轮廓峰和谷,如图5353所示,取样所示,取样长度长度lrlr的方向与轮廓走向一致。的方向与轮廓走向一致。 规定取样长度是为了限制和减弱其他几何形状误差,规定取样长度是为了限制和减弱其他几何形状误差,特别是表面波纹度对测量和评定表面粗糙度的影响。表面特别是表面波纹度对测量和评定表面粗糙度的影响。表面越粗糙,取样长度就越大。越粗糙,取样长度就越大。Wang chenggang5.2.1
8、 5.2.1 基本术语和定义基本术语和定义 5. 5. 评定长度评定长度lnln 评定长度是用于评定长度是用于判别判别被评定轮廓的被评定轮廓的X X轴方向上的长度。轴方向上的长度。 由于零件表面粗糙度不一定均匀,在一个取样长度上往往不能由于零件表面粗糙度不一定均匀,在一个取样长度上往往不能合理地反映整个表面粗糙度特征,因此,在测量和评定时,需合理地反映整个表面粗糙度特征,因此,在测量和评定时,需规定一段最小长度作为评定长度。规定一段最小长度作为评定长度。Wang chenggang5.2.1 5.2.1 基本术语和定义基本术语和定义 5. 5. 评定长度评定长度lnln 评定长度评定长度包含包
9、含一个或几个取样长度,如图一个或几个取样长度,如图5353所示。所示。 一般情况下,取一般情况下,取lnln5 5lrlr; 若被测表面比较均匀,可选若被测表面比较均匀,可选lnln5 5lrlr; 若均匀性差,可选若均匀性差,可选lnln5 5lrlr。Wang chenggang5.2.1 5.2.1 基本术语和定义基本术语和定义 5. 5. 评定长度评定长度lnln 目的目的:克服加工表面的不均匀性, 充分合理 地反映表面粗糙度的真实情况。Wang chenggang 6. 6. 中线中线 中线是具有几何轮廓形状并划分轮廓的基准中线是具有几何轮廓形状并划分轮廓的基准线,也就是用以评定表面
10、粗糙度参数值的给线,也就是用以评定表面粗糙度参数值的给定线。中线有下列两种:定线。中线有下列两种: 1)1) 轮廓的最小二乘中线轮廓的最小二乘中线( (唯一的唯一的, ,但费事但费事) ) 轮廓最小二乘中线是指在取样长度内,使轮轮廓最小二乘中线是指在取样长度内,使轮廓上各点至该线的距离廓上各点至该线的距离Z Zi i的平方和为最小的线,的平方和为最小的线,即即 为最小。为最小。rl02imindxZ5.2.1 5.2.1 基本术语和定义基本术语和定义 Wang chenggang5.2.1 5.2.1 基本术语和定义基本术语和定义 (2)轮廓算术平均中线(近似的图解法) 轮廓算术平均中线是指在
11、取样长度内,划分轮廓为上、下两部分,且使上下两部分面积相等的线,即F1+F2+Fn=S1+S2+Sm,见图54。 m1iin1iiSF 在轮廓图形上确定最小二乘中线的位置比较困难,可用轮廓算术平均中线,通常用目测估计确定算术平均中线。 Wang chenggang5.2.2 5.2.2 表面粗糙度的评定参数表面粗糙度的评定参数 为了满足零件表面不同的功能要求,国标为了满足零件表面不同的功能要求,国标GB/T 35052009GB/T 35052009从表面粗糙度特征的幅度、间距和形状等方面,规定了相应从表面粗糙度特征的幅度、间距和形状等方面,规定了相应的评定参数。下面介绍其中的几个主要参数:的
12、评定参数。下面介绍其中的几个主要参数:1.1. 评定轮廓的算术平均偏差评定轮廓的算术平均偏差RaRa 评定轮廓的算术平均偏差是指在评定轮廓的算术平均偏差是指在一个一个取样长度内纵坐标取样长度内纵坐标值值Z(x)Z(x)绝对值的算术平均值,如图绝对值的算术平均值,如图5 55 5所示,用所示,用RaRa表示。即:表示。即:lrxxZlrRa0d)(1Wang chenggang或近似为或近似为niiZnRa11 所谓纵坐标值所谓纵坐标值Z(x)Z(x),是指被评定轮廓在任一位置距,是指被评定轮廓在任一位置距X X轴的高轴的高度。若纵坐标位于度。若纵坐标位于X X轴下方,该高度被视作负值,反之则为
13、正值。轴下方,该高度被视作负值,反之则为正值。 测得的测得的RaRa值越大,则表面越粗糙。值越大,则表面越粗糙。RaRa能能客观地反映客观地反映表面微表面微观几何形状误差,但因受到计量器具功能限制,不宜用作过于观几何形状误差,但因受到计量器具功能限制,不宜用作过于粗糙或太光滑表面的评定参数。粗糙或太光滑表面的评定参数。Wang chenggang2. 2. 轮廓的最大高度轮廓的最大高度RzRz 轮廓的最大高度是指在一个取样长度内,最大轮廓峰高轮廓的最大高度是指在一个取样长度内,最大轮廓峰高ZpZp和最大轮廓谷深和最大轮廓谷深ZvZv之和的高度,如图之和的高度,如图5 56 6所示,用所示,用R
14、zRz表示。即:表示。即: 轮廓峰是指连接(轮廓轮廓峰是指连接(轮廓和和X X轴)两相邻交点向外(从轴)两相邻交点向外(从材料到周围介质)的轮廓部分;材料到周围介质)的轮廓部分;式中,式中,ZpZp和和ZvZv都取绝对值。都取绝对值。ZvZpRz 轮廓谷是指连接两相邻交点向内(从周围介质到材料)轮廓谷是指连接两相邻交点向内(从周围介质到材料)的轮廓部分。的轮廓部分。 Wang chenggang51515151iviipiZyyR注意:在注意:在GB/T 35051983GB/T 35051983中,中,RzRz符号曾用于表示符号曾用于表示“不平度的十不平度的十点高度点高度”。 在一个取样长度
15、内在一个取样长度内,实际轮廓上,实际轮廓上五个最大轮廓峰高平均五个最大轮廓峰高平均值值与与五个最大轮廓谷深五个最大轮廓谷深的的平均值平均值之之和和。特点:特点:反映表面微观几何形状特征方面不如反映表面微观几何形状特征方面不如a a全面,但测量方全面,但测量方便。便。Wang chenggang 轮廓单元的平均宽度是指在一个取样长度内轮廓单元宽轮廓单元的平均宽度是指在一个取样长度内轮廓单元宽度度XsXs的平均值,如图的平均值,如图5 57 7所示,用所示,用RSmRSm表示。即:表示。即: 3. 3. 轮廓单元的平均宽度轮廓单元的平均宽度RSmRSmmiiXsmRSm11 所谓轮廓单元,是指某个
16、轮廓峰与相邻轮廓谷的组合。所谓轮廓单元,是指某个轮廓峰与相邻轮廓谷的组合。所谓轮廓单元宽度,是指所谓轮廓单元宽度,是指X X轴与轮廓单元相交线段的长度。轴与轮廓单元相交线段的长度。Wang chenggang4. 4. 轮廓的支承长度率轮廓的支承长度率RmrRmr( (c c) ) 轮廓的支承长度率是指在给定水平位置轮廓的支承长度率是指在给定水平位置c c上轮廓的实体材料上轮廓的实体材料长度长度MlMl( (c c) )与评定长度的比率,如图与评定长度的比率,如图5 58 8所示,用所示,用RmrRmr( (c c) )表示,即:表示,即: lncMlcRmr)()( 所谓轮廓的实体材料长度所
17、谓轮廓的实体材料长度MlMl( (c c) ),是指在评定长度内,一平,是指在评定长度内,一平行于行于X X轴的直线从峰顶线向下移一水平截距轴的直线从峰顶线向下移一水平截距c c时,与轮廓相截所得的时,与轮廓相截所得的各段截线长度之和,如图各段截线长度之和,如图5 58(a)8(a)所示。即:所示。即:niinibbbbbl(c)M121Wang chenggang4. 4. 轮廓的支承长度率轮廓的支承长度率RmrRmr( (c c) ) 轮廓的水平截距轮廓的水平截距c c可用微米或用它占轮廓的最大高度可用微米或用它占轮廓的最大高度RzRz的的百分比表示。由图百分比表示。由图5 58(a)8(
18、a)可以看出,支承长度率是随着水平截距可以看出,支承长度率是随着水平截距的大小而变化的,其关系曲线称支承长度率曲线,如图的大小而变化的,其关系曲线称支承长度率曲线,如图5 58(b)8(b)所所示。示。 轮廓的支承长度率轮廓的支承长度率RmrRmr( (c c) )依据评定长度而不是在取样长度上依据评定长度而不是在取样长度上来定义,因为这样可以提供更稳定的参数。来定义,因为这样可以提供更稳定的参数。Wang chenggang 以上四个参数中,评定轮廓的算术平均偏差以上四个参数中,评定轮廓的算术平均偏差RaRa和轮廓的最大高度和轮廓的最大高度RzRz是表征表面粗糙度高度特性的是表征表面粗糙度高
19、度特性的幅幅度参数度参数,是标准规定,是标准规定必须标注的参数必须标注的参数(二者只需取其(二者只需取其一),故又称为一),故又称为基本参数基本参数。 轮廓单元的平均宽度轮廓单元的平均宽度RSmRSm和轮廓的支承长度率和轮廓的支承长度率RmrRmr( (c c) )称为称为附加参数附加参数。其中,。其中,RSmRSm是表征表面粗糙度是表征表面粗糙度间距特性的间距参数,间距特性的间距参数,RmrRmr( (c c) )是表征表面粗糙度形状是表征表面粗糙度形状特性的形状参数,它们是只有少数零件的重要表面有特性的形状参数,它们是只有少数零件的重要表面有特殊使用要求时,才作为幅度参数的辅助参数在图样特
20、殊使用要求时,才作为幅度参数的辅助参数在图样上注出。上注出。 Wang chenggang5.3.1 5.3.1 评定参数的选用评定参数的选用 1. 幅度参数的选用幅度参数的选用 幅度参数是标准规定的基本参数,可以单独选用。对幅度参数是标准规定的基本参数,可以单独选用。对于有表面粗糙度要求的表面,必须选用一个幅度参数。于有表面粗糙度要求的表面,必须选用一个幅度参数。一般情况下可以从一般情况下可以从Ra和和Rz中任选一个。中任选一个。 在常用值范围内在常用值范围内(Ra为为0.025 m6.3 m),),优先选优先选用用Ra,因为它能够比较全面地反映被测表面的微小峰,因为它能够比较全面地反映被测
21、表面的微小峰谷特征,同时上述范围内被测表面谷特征,同时上述范围内被测表面Ra的实际值能够用的实际值能够用轮廓仪轮廓仪方便地测出。方便地测出。 粗糙度要求特别高或特别低粗糙度要求特别高或特别低(Ra 6.3 m)时,)时,选用选用Rz。Rz用于用于测量部位小、峰谷小或有测量部位小、峰谷小或有疲劳强度要求的零件表面的评定。疲劳强度要求的零件表面的评定。 Wang chenggang 如图如图59中,五种表面的轮廓的中,五种表面的轮廓的最大高度参数最大高度参数相同相同,而使用质量显然不同,由此可见,而使用质量显然不同,由此可见,只用只用幅度参数不能全面反映幅度参数不能全面反映零件表面微观几何形状零件
22、表面微观几何形状误差,对于有特殊要求的少数零件的重要表面,误差,对于有特殊要求的少数零件的重要表面,需要加选附加参数需要加选附加参数RSm或或Rmr(c)。Wang chenggang 2.2. 附加评定参数的选用附加评定参数的选用 RSm和和Rmr(c)一般一般不能不能作为独立参数选用作为独立参数选用,只只能能作为幅度参数的附加参数作为幅度参数的附加参数来进一步控制表面质量来进一步控制表面质量时选用。时选用。 RSm主要在对主要在对涂漆性能、冲压成形时抗裂纹、抗振、涂漆性能、冲压成形时抗裂纹、抗振、抗腐蚀、减小流体流动摩擦阻力抗腐蚀、减小流体流动摩擦阻力等有要求时附加选等有要求时附加选用,如
23、汽车外形薄钢板表面、电机定子硅钢片表面用,如汽车外形薄钢板表面、电机定子硅钢片表面等。等。 Rmr(c)主要对主要对耐磨性、接触刚度耐磨性、接触刚度要求较高等表面附要求较高等表面附加选用。加选用。Wang chenggang5.3.2 5.3.2 评定参数值的选用评定参数值的选用 1. 1. 表面粗糙度的参数值表面粗糙度的参数值在国标在国标GB/T 1031GB/T 103119951995中,已经将表面粗糙中,已经将表面粗糙度的参数值标准化,表度的参数值标准化,表5 51 1表表5 54 4分别是参数、分别是参数、RzRz、RSmRSm和和RmrRmr( (c c) )的规定数值。的规定数值
24、。 表表5 51 1 Ra Ra 的数值的数值 (m) (m) (摘自摘自GB/T 1031GB/T 10312009)2009)0.0120.23.2500.0250.46.31000.050.812.50.11.625Wang chenggang表表5 52 2 Rz Rz 的数值的数值 (m) (m) (摘自摘自GB/T 1031GB/T 10312009) 2009) 0.0250.46.310016000.050.812.52000.11.6254000.23.250800 注:这里的Rz对应GB/T 35051983的Ry。Wang chenggang表表5 53 3 RSm RS
25、m 的数值的数值 (m) (m) (摘自摘自GB/T 1031GB/T 10312009)2009)0.0060.11.60.01250.23.20.0250.46.30.050.812.5 注:这里的RSm对应GB/T 35051983的Sm。表表5 54 4 RmrRmr( (c c) )(% %)的数值)的数值 ( (摘自摘自GB/T 1031GB/T 10312009)2009)1015202530405060708090注:选用支承长度率Rmr(c)时,必须同时给出轮廓水平截距c的数值。c值多用Rz的百分数表示,其系列如下:5,10,15,20,25,30,40,50,60,70,8
26、0,90。Wang chenggang 在一般情况下,测量在一般情况下,测量RaRa和和RzRz时,推荐按表时,推荐按表5 55 5选用对应的取样长度及评定长度值,此时在选用对应的取样长度及评定长度值,此时在图样上可省略标注取样长度值。当有特殊要求时图样上可省略标注取样长度值。当有特殊要求时应给出相应的取样长度值,并在图样上或技术文应给出相应的取样长度值,并在图样上或技术文件中注出。件中注出。表表5 55 5 lr lr 和和ln ln 的数值的数值 ( (摘自摘自GB/T 1031GB/T 10312009)2009)Ra (m)Rz (m)lr (mm)ln (mm) (ln =5lr)0
27、.0080.020.0250.100.080.40.020.10.100.500.251.250.12.00.5010.00.84.02.010.010.050.02.512.510.080.050.0320.08.040.0Wang chenggang2. 2. 表面粗糙度参数值的选用表面粗糙度参数值的选用 设计时设计时应应在国标规定在国标规定的参数值系列(表的参数值系列(表5 51 1表表5 54 4)中选取中选取各项参数的数值。选用时各项参数的数值。选用时首先要满足功能要求首先要满足功能要求,其次考虑经济性及工艺的,其次考虑经济性及工艺的可能性。选用原则是可能性。选用原则是在满足功能要求
28、在满足功能要求的前提下,的前提下,参数的参数的允许值应尽可能大些允许值应尽可能大些(RmrRmr( (c c) )尽可能小尽可能小些些)。)。 目前多采用目前多采用经验统计资料经验统计资料,用,用类比法类比法初步确初步确定表面粗糙度参数的允许值,然后再对比工作条定表面粗糙度参数的允许值,然后再对比工作条件,结合下述一些注意事项,做适当调整。件,结合下述一些注意事项,做适当调整。 Wang chenggang(1 1)同一零件上,工作表面比非工作表面的)同一零件上,工作表面比非工作表面的RaRa或或RzRz值小。值小。(2 2)摩擦表面比非摩擦表面、滚动摩擦表面比)摩擦表面比非摩擦表面、滚动摩擦
29、表面比滑动摩擦表面的滑动摩擦表面的RaRa或或RzRz值小。值小。(3 3)运动速度高,单位面积压力大,以及受交)运动速度高,单位面积压力大,以及受交变应力作用的重要零件的圆角沟槽处,应有较小变应力作用的重要零件的圆角沟槽处,应有较小的表面粗糙度值。的表面粗糙度值。(4 4)配合性质要求高的配合表面(如小间隙配)配合性质要求高的配合表面(如小间隙配合的配合表面)、受重载荷作用的过盈配合表面,合的配合表面)、受重载荷作用的过盈配合表面,都应有较小的表面粗糙度值。都应有较小的表面粗糙度值。Wang chenggang(5 5)在确定表面粗糙度参数值时,应注意它与)在确定表面粗糙度参数值时,应注意它
30、与尺寸公差和形位公差协调。尺寸公差和形位公差协调。 通常,尺寸、形位公差值越小,表面粗糙度通常,尺寸、形位公差值越小,表面粗糙度RaRa或或RzRz值应越小;尺寸公差等级相同时,轴比孔值应越小;尺寸公差等级相同时,轴比孔的表面粗糙度值要小;对于同一公差等级的不同的表面粗糙度值要小;对于同一公差等级的不同尺寸的孔或轴,小尺寸的孔或轴比大尺寸的孔或尺寸的孔或轴,小尺寸的孔或轴比大尺寸的孔或轴表面粗糙度值要小。轴表面粗糙度值要小。(6 6)防腐蚀性、密封性要求高,或外形要求美)防腐蚀性、密封性要求高,或外形要求美观的表面应选用较小的表面粗糙度值。观的表面应选用较小的表面粗糙度值。Wang cheng
31、gang(7 7)凡有关标准已对表面粗糙度作出规定的标)凡有关标准已对表面粗糙度作出规定的标准件或常用典型零件的表面(如与滚动轴承配合准件或常用典型零件的表面(如与滚动轴承配合的轴颈和外壳孔、与键配合的轴槽和轮毂槽的工的轴颈和外壳孔、与键配合的轴槽和轮毂槽的工作面),应按相应的标准确定表面粗糙度参数值。作面),应按相应的标准确定表面粗糙度参数值。Wang chenggangWang chenggang 1) E E + T2) E T3) T (E)4) T idWang chenggang id + (id)Wang chenggangLR分析算法置ip指向输入串w的第一个符号令S为栈顶状态
32、 a是ip指向的符号重复 beginif ACTIONS,a=Sj then begin PUSH j(进栈) ip 前进(指向下一输入符号) endelse if ACTIONS,a=rj (第j条产生式为A)Wang chenggang分析分析算法(continue)then beginpop | 项令当前栈顶状态为Spush GOTOS,Aendelse if ACTIONs,a=accthen return (成功)else errorend.重复Wang chenggang 分析特征分析特征 栈顶状态为栈顶状态为S, 当前输入符号是当前输入符号是a时做什时做什麽麽-?有穷狀态自动机有
33、穷狀态自动机 规范推导规范推导Wang chenggang进一步讨论分析特征进一步讨论分析特征 GS: (1)S a A c B e (2)A b (3)A Ab (4)B d w=abbcde#Wang chenggang ( (带符号栈的)分析带符号栈的)分析器模型总控程序总控程序outputInput#S1XmS1X1S0 #栈栈状态状态文法符号文法符号ACTION GOTOLR分析表分析表产产生生式式表表Wang chenggang Step states. Syms. The rest of inputaction goto 1 0 # abbcde# s2 2 02 #a bbcd
34、e# s4 3 024 #ab bcde# r2 4 023 #aA s6 5 0236 #aAb cde# r3 6 023 #aA s5 7 0235 #aAc de# s8 8 02358 #aAcd e# r4 9 02357 #aAcB s9 10 023579 #aAcBe # r1 11 01 #S accWang chenggang分析分析 特征特征: 规范的规范的 符号栈中的符号是规范句型的前缀,且不含句符号栈中的符号是规范句型的前缀,且不含句柄以后的任何符号柄以后的任何符号 分析决策依据分析决策依据栈顶状态和现行输入符号栈顶状态和现行输入符号?识别规范句型特定前缀?识别规范
35、句型特定前缀(就到句柄为止就到句柄为止)的的 DFA. 四种技术 LR(0) SLR(1) LR(1) LALR(1)Wang chenggang文法文法GS:(1) S aAcBe(2) A b(3) A Ab(4) B da b b c de步骤步骤符号栈符号栈输入符号串输入符号串动作动作 1) # abbcde# 移进移进 2) #a bbcde# 移进移进A 3) #ab bcde# 归约归约(Ab) 4) #aA bcde# 移进移进A 5) #aAb cde# 归约归约(AAb) 6) #aA cde# 移进移进 7) #aAc de# 移进移进B 8) # aAcd e# 归约归
36、约(Bd) 9) #aAcB e# 移进移进11) #S # 接受接受S10) #aAcBe # 归约归约符号串符号串abbcdeabbcde是否是是否是GSGS的子的子对输入串对输入串abbcde#的移进的移进-规规约分析过程约分析过程SaAcBe aAcde aAbcde abbcdeWang chenggang步骤步骤 符号栈符号栈 输入符号串输入符号串动作动作 1) # abbcde# 移进移进 0 S2 2) #a bbcde# 移进移进 02 S4 4) #aA bcde# 移进移进 023 S6 6) #aA cde# 移进移进 023 S5 7) #aAc de# 移进移进 0
37、235 S8 9) #aAcB e# 移进移进 02357 S911) #S # 接受接受 01 acc对输入串对输入串abbcde#的的LR分析过程分析过程 3) #ab bcde# 归约归约(Ab) 024 r2 3 5) #aAb cde# 归约归约(AAb) 0236 r3 3 8) # aAcd e# 归约归约(Bd) 02358 r4 710) #aAcBe # 归约归约(SaAcBe) 023579 r1 1ACTIONGOTOacebd#SAB0S211acc2S433S5S64r2r2r2r2r2r25S876r3r3r3r3r3r37S98r4r4r4r4r4r49r1r1
38、r1r1r1r1状态栈状态栈ACTIONGOTO文法文法GS:(1) S aAcBe(2) A b(3) A Ab(4) B dSi:移进,将状态移进,将状态i和和输入符输入符进栈进栈ri:归约,用第归约,用第i个产生式归约,同个产生式归约,同时状态栈与符号栈退出相应个符时状态栈与符号栈退出相应个符号,并把号,并把GOTO表相应状态和第表相应状态和第i个产生式的个产生式的左部左部非终结非终结符入栈。符入栈。Wang chenggang6.2 LR(0) 分析分析 LR(0)文法文法 能力最弱,理论上最重要能力最弱,理论上最重要存在存在DFA识别规范句型特定前缀识别规范句型特定前缀(就到句柄为止
39、就到句柄为止).该该DFA如何构造如何构造(LR(0)项目集规范族的构造)项目集规范族的构造)LR(0)分析表的构造分析表的构造Wang chenggangGS: (0) SS (1) S a A c B e (2)A b (3) A Ab (4)B d每个非终结符的左文方程组 LC(S)= LC(S)=LC(S). LC(A)=LC(S).a LC(A) LC(B)=LC(S).aAc简写为: S= S=S A=Sa+A B=SaAc用代入法求解得:S= S= A=a+A B=aAc令 =S,S,A, B,a,A,c则方程两边都是上的正规式而A=a+A 即为 A=a | A 由正规式所表示的
40、正规集得: A=a Wang chenggang GS: (0) SS (1) S a A c B e (2)A b (3) A Ab (4)B d定义(产生式的LR(0)左文)LR(0)LC(A)=| =且SA , Vt*有推论:LR(0)LC(A )=LC(A). S= S= A=a B=aAc则有:LR(0)LC(SS)=SLR(0)(LC(SaAcBe)=aAcBeLR(0)LC(Ab)=abLR(0)LC(AAb)=aAbLR(0)LC(Bd)=aAcd (=VnVt)上的正规式R*RWang chenggangx59214306710111216151718SaaaaAAAbccb
41、deB B Wang chenggangDFAx235789641AbaSbcBedWang chenggang活前缀与句柄的关系:活前缀与句柄的关系:GS: 若若S = AA = r是是的前缀,则的前缀,则称称r是是G的一个活前缀的一个活前缀1.活前缀已含有句柄的全部符号,表明产生式活前缀已含有句柄的全部符号,表明产生式A的的 右部右部已出现在栈顶已出现在栈顶2.2.活前缀只含句柄的一部分符号表明活前缀只含句柄的一部分符号表明A1 12 2的右部子串的右部子串1 1已出现在栈顶,期待从输入串中看到已出现在栈顶,期待从输入串中看到2 2推出的推出的符号符号3. 活前缀不含有句柄的任何符号,此时
42、期望活前缀不含有句柄的任何符号,此时期望A的右部所的右部所推出的符号串推出的符号串R*RWang chenggang活前缀活前缀,与句柄与句柄 为为刻划刻划这种分析过程中的文法这种分析过程中的文法G的每一个产生式的右部符号的每一个产生式的右部符号已有多大一部分被识别(出现在栈顶)的情况,分别用已有多大一部分被识别(出现在栈顶)的情况,分别用标有标有圆点的产生式圆点的产生式来指示位置。来指示位置。 A刻划产生式刻划产生式A的的 右部右部已出现在栈顶已出现在栈顶 A1 12 2 刻划刻划A1 12 2的右部子串的右部子串1 1已出现在栈顶,已出现在栈顶,期待从输入串中看到期待从输入串中看到2 2推
43、出的推出的符号符号 A 刻划没有句柄的任何符号刻划没有句柄的任何符号在栈顶在栈顶,此时期望,此时期望A的右部所推出的符号串的右部所推出的符号串Wang chenggang LR(0)LR(0)项目项目LR(0)项目或配置(项目或配置( item or configuration).-在右端某一位置有圆点的在右端某一位置有圆点的G的产生式的产生式 对对A xyz 则有则有 A.xyz Ax.yz Axy.z Axyz. 如:如:SaAdSaAd S.aAdS.aAd Sa .Ad Sa .Ad SaASaA .d .d SaAdSaAd . .对于对于 A LR(0)LR(0)项目只有项目只有A
44、 Wang chenggangLR(0) 项目集项目集 若当前处于A XYZ刻划的情况,期望移进 First(Y)中的某些符号,假如有产生式 Y u | w . 那么Y u和Y w这两个项目便是刻划期望移进 First(Y)中的某些符号的情况. A XYZ Y u Y w 这三个项目对应移进归约分析的同一个状态,这三个项目构成一个配置集, 对应每个配置集,分析表将有一个状态.Wang chenggang构造构造LR(0)项目集规范族项目集规范族(构成识别一个文法的构成识别一个文法的活前缀的活前缀的DFA的状态的全体的状态的全体) LR(0) 项目集的闭包项目集的闭包LOSURE, GO 函数,
45、函数,CLOSURE (I); /* I 是项目集是项目集*/ J:= I;repeat for J 中的每个项目中的每个项目A .B 和产生式和产生式 B ,若若B . 不在不在J中中 do 将将 B . 加到加到J中中 until 再没有项目加到再没有项目加到J中中return J; GO (I,x) = CLOSURE(J) ; 其中,其中, I:项目集,项目集,x: 文法符号,文法符号, J=任何形如任何形如A x. 的项目的项目|A .x IWang chenggangLR(0)项目集规范族项目集规范族 计算计算LR(0)项目集规范族项目集规范族 C=I0 ,I1 , . In Pr
46、ocedure itemsets(G); Begin C := CLOSURE (S.S) Repeat For C 中每一项目集中每一项目集I和每一文法符号和每一文法符号x Do if GO(I,x) 非空且不属于非空且不属于C Then 把把 GO(I,x) 放入放入C中中 Until C 不再增大不再增大 End;Wang chenggang例例 文法文法G G: : (0 0)SE (1) SE (1) EaAEaA (2) (2) EbBEbB (3) (3) AcAAcA (4) Ad (5) (4) Ad (5) BcBBcB (7) Bd (7) Bd LR(0) LR(0)
47、项目集规范族(项目集规范族(识别识别G G的活前缀的的活前缀的DFA)DFA): I I0:0: S SE IE I1 1: SE: SE I I2 2: Ea: EaA A EEaAaA A.cAA.cA EEbBbB A Ad d Wang chenggang I I3 3: Eb: EbB IB I4 4: : Ac.A Ac.A I5: BBcBcB AAcAcA Bc BcB B B Bd A .d d A .d BBcBcB B Bd d I6: I7: I I8 8: : EaAaA EbBbB AcAcA I9: BcBcB I I1010: Ad: Ad I I1111: :
48、 BcBBcB Wang chenggangLR(0)分析表的构造 假定假定C=I0, I1,,In,令每个项目集令每个项目集Ik的下标的下标k 为为分析器的一个状态,因此,分析器的一个状态,因此,G 的的LR(0)分析表含有分析表含有状态状态0,1,n。令那个含有项目令那个含有项目SS的的Ik的下标的下标k为初态。为初态。ACTION和和GOTO可按如下方法构可按如下方法构造:造: 若项目若项目Aaa属于属于Ik且且GO (Ik, a)= Ij, a为终结符,为终结符,则置则置ACTIONk, a为为“把状态把状态j和符号和符号a移进栈移进栈”,简,简记为记为“sj”; 若项目若项目A属于属
49、于Ik, 那么,对任何终结符那么,对任何终结符a, 置置ACTIONk, a为为“用产生式用产生式A进行规约进行规约”,简记,简记为为“rj”;其中,假定其中,假定A为文法为文法GG的第的第j j个产生式;个产生式; 若项目若项目SSS属于属于Ik, 则置则置ACTIONk, #为为“接受接受”,简记为简记为“acc”; 若若GO (Ik, A)= Ij, A为非终结符,则置为非终结符,则置GOTO(k, A)=j; 分析表中凡不能用规则分析表中凡不能用规则1至至4填入信息的空白格均置上填入信息的空白格均置上“出错标志出错标志”。Wang chenggangLR(0)文法文法 按上述算法构造的
50、含有按上述算法构造的含有ACTION和和GOTO两部分的分析表,两部分的分析表,如果每个入口不含多重定义,则称它为文法如果每个入口不含多重定义,则称它为文法G的一张的一张LR(0)表。具有表。具有LR(0)表的文法表的文法G称为一个称为一个LR(0)文法。文法。 LR(0)文法是无二义的。文法是无二义的。Wang chenggang例例 文法文法G G: :(0 0)SE (1) SE (1) EaAEaA (2) (2) EbBEbB (3) (3) AcAAcA (4) Ad (5) (4) Ad (5) BcBBcB (6) Bd (6) Bd ACTION GOTOa c b d #