- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c-minus语言文法定义与说明
C_minus 文法定义与说明 1. program → declaration-list ? C_minus语言编写的程序由一组声名序列组成 2. declaration-list → declaration-list | declaration ? C_minus语言编写的程序由一组声名序列组成 3. declaration-list → var-declaration | fun-declaration ? 程序由声明的列表(或序列)组成,声明可以是函数或变量声明,顺序是任意的。至少必须有一个声明。接下来是语义限制(这些在C中不会出现)。所有的变量和函数在使用前必须声明(这避免了向后backpatching引用)。程序中最后的声明必须是一个函数声明,名字为m a i n。注意,C-缺乏原型,因此声明和定义之间没有区别(像C一样)。 4. var-declaration → type-specifier ID ; | type-specifier ID[NUM] ; ? C_minus语言编写的程序由一组声名序列组成 5. type-specifier → int | void ? 变量声明或者声明了简单的整数类型变量,或者是基类型为整数的数组变量,索引范围从0到NUM -1。 ? 在C_minus中仅有的基本类型是整型和空类型。 ? 在一个变量声明中,只能使用类型指示符。 6. fun-declaration → type-specifier ID (params) compound-stmt ? 函数声明由返回类型指示符、标识符以及在圆括号内的用逗号分开的参数列表组成,后面跟着一个复合语句,是函数的代码。如果函数的返回类型是v o i d,那么函数不返回任何值(即是一个过程)。 7. params → param-list | void 8. param-list → param-list , param | param 9. param → type-specifier ID | type-specifier ID[] ? 函数的参数可以是void (即没有参数),或者一列描述函数的参数。参数后面跟着方括号是数组参数,其大小是可变的。简单的整型参数由值传递。数组参数由引用来传递(也就是指针),在调用时必须通过数组变量来匹配。注意,类型“函数”没有参数。一个函数参数的作用域等于函数声明的复合语句,函数的每次请求都有一个独立的参数集。函数可以是递归的(对于使用声明允许的范围)。 10. compound-stmt → { local-declarations statement-list } ? 复合语句由用花括号围起来的一组声明和语句组成。复合语句通过用给定的顺序执行语句序列来执行。局部声明的作用域等于复合语句的语句列表,并代替任何全局声明。 11. local-declarations → local-declarations var-declaration | empty ? 注意声明和语句列表都可以是空的(非终结符empty表示空字符串)。 12. statement-list → statement-list statement | empty ? 注意声明和语句列表都可以是空的(非终结符empty表示空字符串)。 13. statement → expression-stmt | compound-stmt | selection-stmt | iteration-stmt | return-stmt ? 变量声明或者声明了简单的整数类型变量,或者是基类型为整数的数组变量,索引范围从0到NUM -1。 14. expression-stmt → expression; | ; ? 表达式语句有一个可选的且后面跟着分号的表达式。这样的表达式通常求出它们一方的结果。因此,这个语句用于赋值和函数调用。 15. selection-stmt → if ( expression ) statement | if ( expression ) statement else statement ? if语句有通常的语义:表达式进行计算;非0值引起第一条语句的执行; 0值引起第二条语句的执行,如果它存在的话。这个规则导致了典型的悬挂else二义性,可以用一种标准的方法解决:else部分通常作为当前if的一个子结构立即分析(“最近嵌套”非二义性规则)。 16. iteration-stmt → while ( expression ) statement ? while语句是C-中唯一的重复语句。它重复执行表达式,并且如果表达
文档评论(0)