C语言程序设计第2章基本词法语法规则与程序元素.ppt

C语言程序设计第2章基本词法语法规则与程序元素.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华中科技大学计算机学院 C语言与程序设计 The C Programming Language 第2章 基本词法语法规则与程序元素 C程序是一个字符序列,字符序列先被分解为称之为记号(token)的词法元素,再根据语法规则检查这些记号组合是否合法。 本章首先介绍词法元素和语法规则的概念,然后详尽地讨论组成C程序的基本元素,包括基本数据类型、常量和变量、运算符、表达式等。 2.1 字符及词法元素 2.1.1 字符集 C源程序由字符序列构成,其字符集为: 英文字母:a~z 和A~Z 数字字符:0~9 特殊字符:! “ # % ‘ ( ) * + , - . / : ; = ? [ ] \ ^ _ { } | ~ 空白字符:空格、换行符、水平制表符(HT)、 垂直制表符(VT)、换页符(FF) 三字符序列 以两个连续问号开头(教材表2-1)。所有的三字符序列都要用相应的单个字符替换,这种替换发生在其他任何处理之前。 例如, int a??(4??)=??0??;被替换成 int a[4]={0}; 2.1.2 词法元素 词法元素称为记号,记号是程序中具有语义的最基本组成单元。记号共分5类:标识符、关键字、常量、运算符和标点符号。编译器从左至右收集字符,总是尽量建立最长的记号,即使结果并不构成有效的C语言程序。相邻记号可以用空白符或注释语句分开。 词法分析举例 例2.1 sum=x+y 分解成sum、=、x、+和y 共5个记号。 例2.2 int a,b=10, 分解成int、a、,、b、=、10和 ; 共7个记号 例2.3 x+++++y 分解成x、++、++、+、y 共5个记号 2.2 语法规则 如何描述计算机语言的语法规则? 2.2.1 BNF (Backus-Naur Form)范式   BNF:巴科斯范式是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。   现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。? BNF范式的符号 尖括号( )内包含的为必选项。 竖线( | )表示在其左右两边任选一项,相当于“OR”的意思。 ::= 是“被定义为”的意思。 BNF范式示例--标识符的BNF范式 标识符::= 字母|标识符字母数字 ? 字母数字 ::= 字母|数字? 字母 ::= _|大写字母|小写字母 小写字母 ::= a|b|c|d|…|z 大写字母 ::= A|B|C|D|…|Z 数字::= 0|1|2| 3 | 4 | 5 | 6 | 7 | 8 | 9 2.2.2 EBNF EBNF是BNF的一种扩充。EBNF中符号有: { }:括起来的部分重复0次或多次。 [ ]:括起来的部分出现0次或1次。 ( ):表示结成一组。 标识符的EBNF范式 : 标识符 ::= 字母{字母数字 } 2.2.3 语法图 语法图是另一种表示语法的常见方式。 标识符的语法图 2.3 标识符、关键字及分隔符 2.3.1 标识符 标识符是用来标识用户定义的常量、变量、数据类型和函数等名字的符号。其命名规则: 以一个字母(a~z, A~Z)或下划线( _ )开头,后跟字母、下划线或数字(0~9) 例: K,_id , month, time1 20_sum , not#me 注意 大小写字母表示不同意义。 不能使用类似 int 和 void 这样的C关键字为自己的对象命名,也要避免使用C程序库中函数和常量的名称,例如 scanf 。 良好的编程风格是选择有助于记忆且有一定含义的标识符,这样可增强程序的可读性和程序的文档性。 2.3.2 关键字 是被系统赋予特定含义并有专门用途的标识符,不能作为普通标识符,但可以作为宏名。 见教材表2.2 2.3.3 分隔符 分隔符统称为空白字符(包括空格符、制表符、换行符、换页符及注释符),在语法上仅起分隔单词的作用。 当程序中两个相邻的单词之间如果不用分隔符就不能区分开时则必须加分隔符(通常用空格符)。 例如,int x,y;不能写成 intx,y; 能写成 int x , y ; 2.4 基本数据类型 2.4.1 数据类型的分类 2.4.2

文档评论(0)

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

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

1亿VIP精品文档

相关文档