Decaf-Mind语言规范_471907876Decaf-Mind语言规范_471907876.pdf

Decaf-Mind语言规范_471907876Decaf-Mind语言规范_471907876.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Decaf-Mind语言规范_471907876Decaf-Mind语言规范_471907876

Decaf/Mind 语言规范 在本课程中,我们将为 Decaf/Mind 语言编写一个编译器。Decaf/Mind 是一种强类型的、 面向对象的、支持继承和封装的语言。这个语言被设计成跟C/C++/Java 非常类似,因此你会发 现很容易弄懂它。但是记住,它并不和这些语言中的任何一个完全一样。为了使得这个作业的 难度能够被接受,这里所采用的Decaf/Mind 语言的特性是经过删减和简化的,但即使这样,你 将会发现这种语言的表达能力仍然足够编写出各种漂亮的面向对象程序来。 这份文档给出这种语言的语法和语义规范,你在完成这个课程项目的过程中将会反复查阅。 词法规范 下面的是关键字,他们都是保留字: bool break class else extends for if int new null return string this void while static Print ReadInteger ReadLine instanceof 一个标识符是以字母开头的字母、数字和下划线的序列。Decaf/Mind 是大小写敏感的, 例如if 是一个关键字,但是IF却是一个标识符,binky 和Binky 是两个不同的标识符。 空白字符 (即空格、制表符和换行符)仅用于分隔单词。关键字和标识符必须被空白字符 或者一个既不是关键字也不是标识符的单词隔开。ifintthis 是单个标识符而不是三个关键 字,但if (23this 被识别成四个单词。 布尔常量是true 或者false,如同关键字一样,它们也是保留字。 一个整型常量既可以是十进制整数也可以是十六进制整数。一个十进制整数是一个十进制 数字(0-9)的序列;十六进制整数必须以0X 或者 0x 开头 (是零,而不是字母O),后面跟 着一个十六进制数字的序列。十六进制数字包括了十进制数字和从a 到f 的六个字母(大小写 均可)。合法的整数的例子有:8, 012, 0x0, 0X12aE。 一个字符串常量是被一对双引号包围的可打印ASCII 字符序列。字符串常量中不可以包含 换行符,也不可以分成若干行,例如: this is not a valid string constant 字符串常量中支持以下几种转义序列:\表示双引号,\\表示单个反斜杠,\t 表示制表 符,\n 表示换行符。其它情况下不认为反斜杠(\)是转义符。例如:\t是一个长度为1 的 字符串,其中的\t 转义为制表符;而\u是一个长度为2 的字符串,它包含反斜杠和字母u 两个字符。 这个语言中的操作符和分隔字符包括: + - * / % = = = == != || ! ; , . [ ] ( ) { } 单行注释是以//开头直到该行的结尾。Decaf/Mind 中没有多行注释。如果单行注释出现 在程序末尾,那么单行注释的结尾需要换行。 参考文法 参考文法以EBNF 的扩展形式给出,下列元符号将被使用到: x (粗体) 表示x 是一个终结符(即“单词”)。 除个别关键字以外,本 节中的终结符名字均为小写字母。 y (常规) 表示y 是一个非终结符。非终结符的名字均为首字母大写。 x  表示0 或1 个x 的出现,也就是说,x 是可选的。 * x 表示0、1 或多个x 的出现。 + x , 表示一个或多个以逗号分隔的x | 表示并列关系 ε 表示没有,即不存在任何符号 为了可读性起见,我们用操作符的词法形式表示它们,例如用!=而不是NOT_EQUAL 等由 词法分析器返回的代表码来表示不等号。 + Program ::= ClassDef VariableDef ::= Variable ; Variable ::= Type identifier Type ::= int | bool | string | void | class identifier | Type [ ]

您可能关注的文档

文档评论(0)

pfenejiarz + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档