编译原理实验:pl0语言及其实现

编译原理实验:pl0语言及其实现

ID:8852943

大小:38.50 KB

页数:2页

时间:2018-04-09

编译原理实验:pl0语言及其实现_第1页
编译原理实验:pl0语言及其实现_第2页
资源描述:

《编译原理实验:pl0语言及其实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、课程实践项目一、PL/0语言的扩展1、课程实践要完成下列要求(1)给PL/0语言增加像C语言那样的形式为/*……*/的注释。(2)给PL/0语言增加带else子句的条件语句和exit语句。(3)给PL/0语言增加输入输出语句。(4)给PL/0语言增加带参数的过程。(5)给PL/0语言增加布尔类型。(6)给PL/0语言增加数组类型。(7)给PL/0语言增加函数类型。(8)给PL/0语言增加实数类型。(9)分离解释器和编译器为两个独立的程序。2、扩展后的PL/0语言的语法Program®Block.Bl

2、ock®[ConstDecl][TypeDecl][VarDecl][FuncDecl]StmtConstDecl®constConstDef{,ConstDef};ConstDef®ident=numberTypeDecl®typeTypeDef;{TypeDef;}TypeDef®ident=TypeExpTypeExp®integer

3、real

4、Boolean

5、array‘[’number..number‘]’ofTypeExpVarDecl®varVarDecl;{VarDecl;}VarD

6、ec®ident{,ident}:TypeType®integer

7、real

8、Boolean

9、identFuncDecl®FuncDec{FuncDec}FuncDec®procedureident[(ForParal)];Block;

10、functionident[(ForParal)]:Type;Block;ForParal®ident:Type{;ident:Type}Stmt®IdentRef:=Exp

11、ifExpthenStmt

12、ifExpthenStmtelseStmt

13、beginStmt

14、{;Stmt}end

15、whileExpdoStmt

16、exit

17、e

18、callident[(ActParal)]

19、write(Exp[,Exp])

20、read(IdentRef[,IdentRef])IdentRef®ident[‘[’Exp‘]’{‘[’Exp‘]’}]ActParal®Exp{,Exp}Exp®oddSimpExp

21、SimpExpRelOpSimpExpRelOp®=

22、<>

23、<

24、>

25、<=

26、>=SimpExp®[+

27、-]Term{+Term

28、-Term

29、orTerm}Term®Facto

30、r{*Factor

31、/Factor

32、divFactor

33、modFactor

34、andFactor}Factor®IdentRef

35、number

36、(Exp)

37、notFactor

38、ident[(ActParal)]

39、true

40、false有关该扩展的说明如下:(1)描述语言的部分符号的解释符号®、

41、、[、]、{和}是描述语言的符号,其中方括号[…2]中的部分可以出现0次或1次,花括号{…}中的部分可以出现任意次数,包括0次。被描述语言若使用上述这些符号,则需要用单引号,例如在数组类型的定义和下标变量的引用中

42、。(2)词法部分·形式为/*……*/的注释也是词法单元之间的分隔符。·标识符ident是字母开头的字母数字串。·number是无符号数,若是实数,则采用小数点前后都有非空数字串这一种形式。·新增保留字:type、array、of、integer、real、Boolean、function、else、write、read、exit、or、and、not、div、mod、true、false。·div:整数除,mod:取模,/:实数除(3)静态检查和动态检查·若exit语句没有处于任何while语句中,

43、则是一个错误。·读写语句的变量引用和表达式只能是整型或实型。·数组类型的类型相容性检查是按名字等价而不是结构等价。·数组类型不能作为过程和函数的参数类型,也不能作为函数的结果类型。·除上述几点之外的静态检查都是大家应该知道的,不在此叙述。·运行时检查下标表达式是否越界,越界则报告错误,停止程序的运行。(4)语句的语义只对特殊部分加以说明。·exit语句作为while语句的非正常出口语句。若处于多层while语句中,则它只作为最内层while语句的非正常出口。·读语句接受从键盘输入的数据,数据之间用空

44、格分隔。读语句具有忽略当前输入行剩余字符,下一个读语句接受的数据另起一行的功能。·写语句输出的数据显示在屏幕上,数据之间用空格分隔。写语句具有结束当前输出行,下次输出另起一行的功能。·增加了写语句后,原来sto指令的输出功能取消,以免输出数据过多,不宜发现所关心的数据。·程序员定义的函数和过程的参数都是值调用参数,函数的结果类型不能是数组类型。·布尔类型的表达式按短路方式计算。·函数中没有return语句,在函数中把函数名当作局部变量,通过对函数名赋值来把函数值返回。

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

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

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