编译原理ppt3_2.ppt

编译原理ppt3_2.ppt

ID:48806703

大小:175.50 KB

页数:32页

时间:2020-01-27

编译原理ppt3_2.ppt_第1页
编译原理ppt3_2.ppt_第2页
编译原理ppt3_2.ppt_第3页
编译原理ppt3_2.ppt_第4页
编译原理ppt3_2.ppt_第5页
资源描述:

《编译原理ppt3_2.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.2语言和文法文法为语言给出了精确的、易于理解的语法说明对于某些文法类,可以自动产生高效的分析器如果文法设计得恰当,则它赋予语言的结构对于源程序翻译成正确的目标代码和对于错误诊断都是有用的语言也是逐步完善的,增加新构造以完成新任务的情况时有发生。如果存在以文法为基础的语言的实现,语言新构造的加入就显得方便文法能够描述程序设计语言的大部分语法成分,但不能描述程序设计语言的全部语法成分3.2.1正规式和上下文无关文法的比较正规表达式所描述的每一种结构都可以用上下文无关文法来描述例如描述正规表达式(a

2、b)*abb的上下文无关文法A0→aA0

3、bA0

4、aA1A1→bA2A2→εNFA--->上下

5、文无关文法对NFA的每个状态i,创建一个非终结符Ai如果状态i遇到输入符号a转换到状态j,则引入产生式Ai→aAj如果状态i遇到输入符号ε转换到状态j,则引入产生式Ai→Aj如果状态i是接受状态,则引入产生式Ai→ε如果状态i是开始状态,则Ai是文法的开始符号对任何a及A,BS,若有(A,a)=B,则:(a)当BF时,令A→aB,(b)当BF时,令A→a

6、aB。例:设DFAM=<{A,B,C,D},{0,1},,A,{B}>。M的状态转换图如下图所示,求等价的上下文无关文法ABCD100,1110G=<{0,1},{A,B,C,D},A,P>,其中P由下列产生式组成:A→0B

7、

8、1DB→0D

9、1C

10、εC→0B

11、1DD→0D

12、1DA→0

13、0B

14、1DB→0D

15、1CC→0

16、0B

17、1DD→0D

18、1D3.2.2分离词法分析器的理由为什么用正规式定义语言的词法,而不用上下文无关文法语言的词法规则简单正规式给出的描述更简洁且易于理解从正规式自动构造出的词法分析器更有效3.2.3验证文法产生的语言文法G产生语言L:由G产生的每个字符串都在L中;反之,L中的每个字符串都能由G产生例,下面的文法G能而且仅能产生所有配对的括号串S→(S)S

19、ε文法示例例1:G1[S]:S→bAA→aA

20、aL(G1)={ban

21、n≥1}例2:G2[S]:S→aSb

22、abL(G2)={anbn

23、n≥1}例3

24、:构造文法G3,使L(G3)={anbn+1

25、n≥0}G3[S]:S→aSb

26、b例4:构造文法G4,使L(G4)={ω

27、ω为字符集Σ上的回文},Σ={a,b}G4[S]:S→aSa

28、bSb

29、a

30、b

31、ε3.2.4适当的表达式文法通过改写文法来消除文法的二义性例:G[expr]:expr→expr+expr

32、expr*expr

33、(expr)

34、id可以改写为如下无二义文法expr→expr+term

35、termterm→term*factor

36、factorfactor→(expr)

37、id将相同优先权的算符放在一组,并为每一种优先权规定不同的规则E→E+E

38、TT→T*T

39、FF→(E)

40、i文法中仍为指定

41、算符的结合性,还具有二义性,用基本情况代替递归,强制重复算符匹配一边的递归将规则E→E+E

42、T替换为E→E+T

43、T(左结合)E→T+E

44、T(右结合)最后得到:G'[E]E→E+T

45、TT→T*F

46、FF→(E)

47、i3.2.5消除二义性例stmt→ifexprthenstmt

48、ifexprthenstmtelsestmt

49、other考虑:ifE1thenifE2thenS1elseS2每个else和前面最近的没有配对的then配对基本思想:出现在then和else之间的语句必须是“配对”的,即它不能以一个未配对的then后面跟随任意的非else语句结束,于是else会被迫与这个未配对的then匹配

50、。改写后的文法stmt→matched_stmt

51、unmatched_stmtmatched_stmt→ifexprthenmatched_stmtelsematched_stmt

52、otherunmatched_stmt→ifexprthenstmt

53、ifexprthenmatched_stmtelseunmatched_stmt3.2.6消除左递归一个文法是含有左递归的,如果存在非终结符A,存在推导消除直接左递归将规则A→A

54、(其中不以A开头)改写为:A→A'A→A

55、例:文法E→E+T

56、TT→T*F

57、FF→(E)

58、id消除左递归E→TE'E'→+TE'

59、εT→FT'T'→*

60、FT'

61、εF→(E)

62、id一般形式的直接左递归A→Aα1

63、Aα2

64、...

65、Aαm

66、β1

67、β2

68、...

69、βn消除A的左递归A→β1A'

70、β2A'

71、...

72、βnA'A'→α1A'

73、α2A'

74、...

75、αmA'

76、ε例如文法G[S]S→Aa

77、bA→Ac

78、Sd

79、ε虽没有直接左递归,但S、A都是左递归的SAaSda消除左递归的算法(1)把文法G的所有非终结符按任一顺序排列成A1,A2,...An;按此顺序执行(2)FO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。