《编译原理教学资料》实验一

《编译原理教学资料》实验一

ID:41745629

大小:65.63 KB

页数:14页

时间:2019-08-31

《编译原理教学资料》实验一_第1页
《编译原理教学资料》实验一_第2页
《编译原理教学资料》实验一_第3页
《编译原理教学资料》实验一_第4页
《编译原理教学资料》实验一_第5页
资源描述:

《《编译原理教学资料》实验一》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理卖验报告实验(1)名称词法分析程序的设计与实现实验人学号10070423姓名吕春龙报告完成日期2013年5月24日成绩指导教师签字实验一词法分析程序的设计与实现一、实验目的基本掌握计算机语言的词法分析程序的开发方法。二、实验内容编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。三、实验耍求(1)根据以下的止规式,编制止规文法,画出状态图;标识符〈字母〉(〈字母>1〈数字字符>)*十进制整数0

2、(1

3、2

4、3

5、4

6、5

7、6

8、7

9、8

10、9)(0

11、112

12、3

13、4

14、5

15、6

16、7

17、8

18、9)*八进制整数0(0

19、1

20、2

21、3

22、4

23、5

24、6

25、7)(01112131

26、4151617)*十六进制整数0(x

27、X)(0

28、l

29、2

30、3

31、4

32、5

33、6

34、7

35、8

36、9

37、a

38、b

39、c

40、d

41、e

42、f)(0

43、l

44、2

45、3

46、4

47、5

48、6

49、7

50、8

51、9

52、a

53、b

54、c

55、d

56、e

57、f)*运算符和分隔符+-*/〉〈二();关键字ifthenelsewhi1edo(2)根据状态图,设计词法分析函数intscan(),完成以下功能:A、从输入流(键盘或文件)读入数据,分析出一个单词。B、返回单词种别(用整数表示),C、返冋单词属性(不同的属性可以放在不同的全局变量中)。(3)编写测试程序,循环调用函数scan(),每次调用,获得一个单词的信息。在测试程序中,打印输出单词种别、属性(

58、注意:不要在词法分析函数scan中打印输出)。四、实验步骤(1)单词的正规式描述:标识符〈字母〉(〈字母〉

59、〈数字字符〉)*十进制整数0I(1

60、2

61、3

62、4

63、5

64、6

65、7

66、8

67、9)(01112

68、3141516171819)*八进制整数0(0

69、1

70、2

71、3

72、4

73、5

74、6

75、7)(0

76、112

77、3

78、4

79、5

80、6

81、7)*十六进制整数0(x

82、X)(0

83、l

84、2

85、3

86、4

87、5

88、6

89、7

90、8

91、9

92、a

93、b

94、c

95、d

96、e

97、f)(0

98、l

99、2

100、3

101、4

102、5

103、6

104、7

105、8

106、9

107、a

108、b

109、c

110、d

111、e

112、f)*运算符和分隔符+-*/>〈=();关键字ifthenelsewhiledo(2)状态图:Inti6(3)数据结构

113、与算法typedefstruct{stringwordl;intkind;intshuxing;}z;FILE*fp;charword[30];单词单词种别单词属性〃存放识别出的单词char*keyword[5]={"else〃,"if","then","do","while"};//关键字子函数分析:〃标示符,关键字if((a>=,a&&a<=,z)

114、(a>=,AJ&&a<=,T))intk二0;while((a>二'a'&&a<二'z')

115、

116、(a>二'A'&&a<='Z')11(a>=,O'&&a<-9*))(word[k++]=a;a=(char)getc(f

117、);}word[k]=,';ungetc(a,f);1.wordl二word;1•kind二iskeyword(word);返回单词种别return1;}elseif(a==,0,){//八进制数b=(char)getc(f);if(b>=0*&&b<=,r){ungetc(b,f);a=,O';charword[30];intk=0;while(a>=05&&3<=7^{word[k++]=a;a=(char)gctc(f);}word[k]=,#;ungetc(a,f);1・word1二word;//sscanf(word,"%x",&c);//cout

118、<=,O'&&m<=,9')

119、

120、(m>=,a')&&(m<=,f')){imgetc(m,I');ungetc(b,f);a='O';charword[30]:(a==,x‘)

121、

122、(a==,X’)){intk=0;while((a>=,O'&&a<=,9')

123、

124、(a>=,a)&&(a<=,f')

125、word[k++]=a;a=(

126、char)getc(f);}word[k]=,';ungetc(a,f);Iriumber=strtol(word,&endptr,16);丨.shuxing=lnumber;1・wordl^vord;1.kind=7;return1;}else{//错误16进制数1•kind二18;1.wordl^b;rcturn1;}}elseif(b>=,8'&&b<='9')//错误8进制数1.kind=19;1・wordl=b;return1;}else//•H8制o{ungetc(b,f);1.word1二'O';1・shuxing二0;I.kind=6;ret

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

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

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