编译原理 实验报告

编译原理 实验报告

ID:18387488

大小:421.09 KB

页数:23页

时间:2018-09-17

编译原理 实验报告_第1页
编译原理 实验报告_第2页
编译原理 实验报告_第3页
编译原理 实验报告_第4页
编译原理 实验报告_第5页
资源描述:

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

1、编译原理实验报告指导教师:20一.实验目的基本掌握计算机语言的词法分析程序的开发方法。以及掌握计算机语言的语法分析程序设计与属性文法应用的实现方法。锻炼自己的编程能力和逻辑思维能力,体会计算机编译器的奥妙之处二.实验内容1.编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。2.给定下列文法: S→id=E; S→ifCthenS S→whileCdoS C→E>E C→E<=E 用递归子程序法设计并实现语法分析程序,按照生成顺序输出产生式3.在第四章上机题的基础上,补充以下的语义处理功能,形成一个将源程序翻译成三地址

2、代码序列的翻译程序: 将表达式、赋值语句翻译成三地址代码 将If条件语句、While循环语句翻译成三地址代码三.实验要求1.编制正规式以及正规文法,画出状态图;2.根据状态图,设计词法分析函数intscan(),完成以下功能:1)从键盘读入数据,分析出一个单词。2)返回单词种别(用整数表示),3)返回单词属性(不同的属性可以放在不同的全局变量中)。3.编写测试程序,反复调用函数scan(),输出单词种别和属性。4.改写文法,构造语法分析程序,要求按照最左派生的顺序输出派生的产生式序列;5.改写语法分析程序,构造三地址代码生成程序。6.处理

3、的源程序存放在文件中,它可以包含多个语句;四.系统设计完成整个系统,实现本个实验的要求,需要两个比较大的模块:词法分析器和语法分析器。词法分析器的功能是将输入的程序串分解成一个一个独立的单词,并且记录下每个单词的类型以及数值。这里词法分析器的实现有两种方法:调用一次词法分析器,返回一个词的类型以及数值,以此类推;还有一种方法是条用一次词法分析器将程序串的所有单词都分解出来并保存到一个地方(比如线形表)以便将来使用。我采用的是前者,因为这样只需要对整个程序访问一遍语法分析器的功能是将已经分解好的单词按照一定的规范(产生式)组合起来,由此来确

4、定输入程序的意思。我的设计是“语法分析器调用词法分析器”,当语法分析其分析进行不下去的时候调用词法分析器获取一个单词,继续进行分析。而语义功能是镶嵌在语法分析其当中的,当语法分析器分析出用什么产生式的时候作相应的语义处理。20五.系统实现词法分析器的实现<一>词法的正规式描述20标识符:<字母>

5、(<字母>

6、<数字字符>)*(ε

7、_

8、.)(<字母>

9、<数字字符>)*十进制数:(0

10、(1

11、2

12、3

13、4

14、5

15、6

16、7

17、8

18、9)(0

19、1

20、2

21、3

22、4

23、5

24、6

25、7

26、8

27、9)*)(ε

28、.)(0

29、1

30、2

31、3

32、4

33、5

34、6

35、7

36、8

37、9)20(0

38、1

39、2

40、3

41、4

42、

43、5

44、6

45、7

46、8

47、9)*八进制数:0(0

48、(1

49、2

50、3

51、4

52、5

53、6

54、7)(0

55、1

56、2

57、3

58、4

59、5

60、6

61、7)*)(ε

62、.)(0

63、1

64、2

65、3

66、4

67、5

68、6

69、7)(0

70、1

71、2

72、3

73、4

74、5

75、6

76、7)*十六进制数:0x(0(

77、1

78、2

79、3

80、4

81、5

82、6

83、7

84、8

85、9

86、a

87、b

88、c

89、d

90、e

91、f)(0

92、1

93、2

94、3

95、4

96、5

97、6

98、7

99、8

100、9

101、a

102、b

103、c

104、d

105、e

106、f)*)(ε

107、.)(0

108、1

109、2

110、3

111、4

112、5

113、6

114、7

115、8

116、9

117、a

118、b

119、c

120、d

121、e

122、f)(0

123、1

124、2

125、3

126、4

127、5

128、6

129、7

130、8

131、9

132、a

133、b

134、c

135、d

136、e

137、f)*运算符和分隔符:+-*/<>=();关键字:ifthen

138、elsewhiledo<二>、改变后的正规文法<标识符>-><字母><十进制整数>-><数字字符><数字字符><八进制整数>->0<十六进制整数>->0x<运算符和分隔符>->+

139、-

140、*

141、/

142、>

143、<

144、=

145、(

146、)

147、;<关键字>->if

148、then

149、else

150、while

151、do<字母>->a

152、b

153、c

154、d

155、e

156、f

157、g

158、i

159、j

160、k

161、l

162、m

163、n

164、o

165、p

166、q

167、r

168、s

169、t

170、u

171、v

172、w

173、x

174、y

175、z

176、A

177、B

178、C

179、D

180、E

181、F

182、G

183、

184、H

185、I

186、J

187、K

188、L

189、M

190、N

191、O

192、P

193、Q

194、R

195、S

196、T

197、U

198、V

199、W

200、X

201、Y

202、Z<数字字符>->0

203、1

204、2

205、3

206、4

207、5

208、6

209、7

210、8

211、9->(<字母>

212、<数字字符>)

213、ε->(ε

214、_

215、.)->(ε

216、.)->(0

217、1

218、2

219、3

220、4

221、5

222、6

223、7)

224、ε->(0

225、1

226、2

227、3

228、4

229、5

230、6

231、7

232、8

233、9

234、a

235、b

236、c

237、d

238、e

239、f)

240、ε将状态合起来,得:(0)-><1~9>(1)

241、0(4)

242、<字母>(12)

243、<运算符和分隔符>(17)(1)-><0~9>(1

244、)

245、.(2)(2)-><0~9>(3)(3)-><0~9>(3)(4)->.(2)

246、<1~7>(5)

247、0(13)

248、x(8)

249、X(8)(5)-><0~7>(5)

250、.(6)(6)-><0~7>(7

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

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

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